召回率、召回率@k和top-k推荐中的精确度

24
根据123中的作者所述,Recall是仓库中所有相关物品中被选出的相关物品的百分比,而Precision是查询所选出的相关物品中相关物品的百分比。
因此,假设用户U得到了一个前k个推荐物品的列表,则它们应该如下: Recall=(前k个推荐物品中的相关物品)/(所有相关物品) Precision=(前k个推荐物品中的相关物品)/(前k个推荐物品)
直到这部分内容都很清楚,但我不明白它们与recall rate@k的区别。如何计算recall rate@k的公式是什么?

1
在计算评分预测的简单精确度和召回率时,直接将@K放入其中可能会令人困惑。规则很简单 - 如果您只想衡量评分预测,那么请在整个推荐结果上使用简单的精确度和召回率。如果您对排名预测感兴趣,那么您更关心前5个表现如何(第一个推荐轮播屏幕),然后是前10个(第二个屏幕)等等。因为在第二种情况下,您更关心您的解决方案如何对整个响应进行排序 - 排名结果。 - Bartłomiej Twardowski
非常感谢@Bartłomiej Twardowski。所以,我已经在做那个rate@k了? - Luisa Hernández
是的,如果你正在截取前k个项目并仅在其上计算p/r。 - Bartłomiej Twardowski
1个回答

19

最终,我从Yuri Malheiros教授(论文1)那里得到了一份解释。尽管在问题所引用的论文中引用的召回率@k似乎是常规的召回度量标准,但应用于前k个条目时它们并不相同。这个指标也被用于论文2论文3论文4中。

召回率@k是一个百分比,取决于所进行的测试,即推荐的数量和每个推荐是一组项目,一些项目是正确的,一些不是。如果我们进行50个不同的推荐,称之为R(无论每个推荐的项目数量如何),则计算召回率需要查看这50个推荐中的每一个。如果对于每个推荐,至少有一个推荐的项目是正确的,您可以增加一个值,在这种情况下,我们称之为N。为了计算召回率@R,需要进行N/R的运算。


12
我认为您犯了一个错误,您再次描述了precision@k。Recall@k是指您在前k个文档中计算相关文档的数量,并将其除以存储库中相关文档的总数。请参见https://ils.unc.edu/courses/2013_spring/inls509_001/lectures/10-EvaluationMetrics.pdf。 - Chris
2
同意Chris的观点。你所描述的听起来像是平均准确率@k。 - halflings
@Chris,你说“Recall@k表示在前k个文档中计算相关文档的数量,并将其除以相关文档的总数”,而不是除以k?如果我使用k=1,查询有20个相关文档,那么最大的recall@1将是:如果找到,则为1/20,否则为0/20。这有意义吗?我认为应该是1/1或0/1。 - user3352632
1
@user3352632 是的,你说得对,我的错误。按k来划分更有意义。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接