推荐算法——MRR

定义

        MRR计算的是第一个正确答案的排名的倒数,并对所有查询取平均值。它衡量了模型在排序结果中快速找到正确答案的能力。

其中:

  • Q 是查询的总数。
  • ranki​ 是第 i 个查询中第一个正确答案的排名(位置)。如果第一个正确答案不在结果列表中,则通常将 ranki​ 视为一个非常大的数(在实际计算中可能会设为无穷大,但通常会用0或某个很小的数来近似表示,或者简单地忽略该查询的贡献)。然而,更常见的做法是在计算MRR之前先过滤掉那些没有正确答案的查询。

计算步骤

  1. 确定查询集:首先,你需要有一个查询集,其中包含 Q 个查询。

  2. 获取排序结果:对于每个查询,使用你的模型生成一个排序结果列表。

  3. 找到第一个正确答案的排名:在排序结果列表中,找到第一个正确答案的排名(位置)。如果列表中没有正确答案,则根据具体情况处理(如忽略该查询或将其排名视为无穷大)。

  4. 计算每个查询的倒数排名:对每个查询,计算其第一个正确答案排名的倒数(即 ranki​1​)。

  5. 计算MRR:将所有查询的倒数排名相加,然后除以查询的总数 Q。

注意事项

  • 排名从1开始:在大多数情况下,排名是从1开始的,即第一个结果的位置是1,第二个结果的位置是2,依此类推。

  • 处理没有正确答案的查询:如果某个查询在结果集中没有正确答案,你可以选择忽略该查询(即不在求和时包含它),或者将其倒数排名视为0(这实际上等同于忽略它)。

  • 截断:在某些情况下,你可能只对排序结果的前N个位置感兴趣。在这种情况下,你可以只考虑前N个位置中的第一个正确答案来计算MRR(这被称为MRR@N)。

示例

假设有3个查询,它们的第一个正确答案的排名分别是1、3和5,则:

相关推荐

  1. 常用的推荐算法

    2024-07-11 02:10:01       25 阅读
  2. 推荐算法详解

    2024-07-11 02:10:01       13 阅读
  3. 推荐算法之协同过滤

    2024-07-11 02:10:01       20 阅读
  4. django调用矩阵分解推荐算法模型做推荐系统

    2024-07-11 02:10:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 02:10:01       3 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 02:10:01       3 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 02:10:01       2 阅读
  4. Python语言-面向对象

    2024-07-11 02:10:01       2 阅读

热门阅读

  1. 无题:天选之子?

    2024-07-11 02:10:01       6 阅读
  2. Flutter——最详细(GestureDetector)使用教程

    2024-07-11 02:10:01       8 阅读
  3. Jenkins构建python项目

    2024-07-11 02:10:01       7 阅读
  4. 使用nodejs进行截图

    2024-07-11 02:10:01       8 阅读
  5. nginx部署vue项目

    2024-07-11 02:10:01       10 阅读
  6. 【网络】SCTP协议概念

    2024-07-11 02:10:01       8 阅读
  7. Git 完整的提交规范教程

    2024-07-11 02:10:01       7 阅读
  8. 【Zoom安全解析】深入Zoom的端到端加密机制

    2024-07-11 02:10:01       9 阅读
  9. Qt QSettings 使用详解:跨平台的配置管理

    2024-07-11 02:10:01       9 阅读