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

相关推荐
会员果汁42 分钟前
leetcode-每日一题-3025. 人员站位的方案数 I-C语言
c语言·算法·leetcode
闪电麦坤952 小时前
数据结构:选择排序 (Selection Sort)
数据结构·算法·排序算法
做科研的周师兄2 小时前
【机器学习入门】3.2 ALS算法——从评分矩阵到精准推荐的核心技术
人工智能·python·深度学习·线性代数·算法·机器学习·矩阵
胡萝卜3.02 小时前
【LeetCode&牛客&数据结构】单链表的应用
数据结构·学习·算法·leetcode·单链表
aiwery2 小时前
实现带并发限制的 Promise 调度器
前端·算法
Hard but lovely2 小时前
编译后视角的运算(关于中,后缀(逆波兰)表达式的计算)
开发语言·c++·算法
SHIPKING3932 小时前
【机器学习&深度学习】向量检索到重排序:RAG 系统中的优化实践
人工智能·深度学习·机器学习
2zcode3 小时前
基于Matlab能带态密度的载流子迁移-发射过程数值模拟与光强依赖性分析
人工智能·算法·matlab
Asmalin3 小时前
【代码随想录day 22】 力扣 40.组合总和II
java·算法·leetcode
jtymyxmz3 小时前
刷题日记0902
算法·leetcode