推荐算法——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,则:

相关推荐
哥布林学者7 分钟前
高光谱拼接算法(一)扫推式成像和航带拼接算法
机器学习·高光谱成像
malog_2 小时前
大语言模型后训练全解析
人工智能·深度学习·机器学习·ai·语言模型
m0_629494732 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户2 小时前
用队列实现栈
数据结构·算法
做人求其滴2 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣
daad7772 小时前
记一组无人机IMU传感器数据
算法
计算机安禾2 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法
枫叶林FYL2 小时前
【强化学习】3 双系统持续强化学习:快速迁移与元知识整合架构手册
人工智能·机器学习·架构
小O的算法实验室2 小时前
2026年KBS,流形感知强化学习差分进化算法+不规则3D无人机路径规划,深度解析+性能实测
算法·智能算法·智能算法改进
玖釉-3 小时前
C++ 中的循环语句详解:while、do...while、for、嵌套循环与循环控制
开发语言·c++·算法