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

Posted

技术标签:

【中文标题】Top-k 推荐中的召回率、召回率@k 和精度【英文标题】:Recall, Recall rate@k and precision in top-k recommendation 【发布时间】:2016-02-15 07:44:55 【问题描述】:

根据1、2 和3 中的作者,Recall 是从存储库中所有相关项目中选择的相关项目的百分比,而 Precision 是查询选择的项目中相关项目的百分比。

因此,假设用户 U 获得了 top-k 个推荐项目列表,它们将类似于:

召回=(Relevant_Items_Recommended in top-k/(Relevant_Items)

Precision=(Relevant_Items_Recommended in top-k/k_Items_Recommended)

直到那部分一切都清楚了,但我不明白它们和 Recall rate@k 之间的区别。 召回率@k的计算公式是怎样的?

【问题讨论】:

您直接将@K 用于计算简单的 Precision 和 Recall 以进行评级预测,这可能会造成混淆。规则很简单 - 如果您尝试仅测量 RATING 预测 - 对整个推荐结果使用简单的 Precision 和 Recall。如果您对度量排名预测感兴趣,那么您更感兴趣的是前 5 名的表现(第一个推荐轮播屏幕),然后是前 10 名(第二个屏幕)等等。因为在第二种情况下,您更感兴趣的是您的解决方案对整个响应的排序 - 排名结果。 非常感谢@Bartłomiej Twardowski。所以,只是我已经在做那个 rate@k 了吗? 是的,如果你要截断到前 k 个项目并且只计算它的 p/r。 【参考方案1】:

最后,我收到了 Yuri Malheiros 教授 (paper 1) 的解释。尽管问题中引用的论文中引用的召回率@k 似乎是正常的召回指标,但应用于 top-k,它们并不相同。该指标也用于paper 2、paper 3 和paper 3

召回率@k 是一个百分比,取决于所做的测试,即推荐的数量,每个推荐都是一个项目列表,有些项目是正确的,有些不是。如果我们提出了 50 条不同的推荐,我们称之为 R(不管每个推荐的项目数如何),计算召回率需要查看 50 条推荐中的每一条。如果对于每个推荐,至少有一个推荐项是正确的,则可以增加一个值,在这种情况下,我们称其为 N。为了计算召回率@R,需要使N/R

【讨论】:

我认为你在那里犯了一个错误,你再次描述了precision@k。 Recall@k 意味着您将相关文档计算在 top-k 中,然后将其除以存储库中相关文档的总数。见ils.unc.edu/courses/2013_spring/inls509_001/lectures/… 同意克里斯。你所描述的听起来像是精确度@k。 @user8491363 听起来对我来说是正确的。 @qwr 我不知道为什么我会以这种方式感到困惑。我删除了评论以避免混淆。

以上是关于Top-k 推荐中的召回率、召回率@k 和精度的主要内容,如果未能解决你的问题,请参考以下文章

聚合精度和召回率的实际重要性是啥?

使用 sklearn 获得相同的精度和召回率 (K-NN) 值

精度评定中的准确率(Precision)和召回率(Recall)

精度、召回率、F1 分数等于 sklearn

如何计算聚类中的精度和召回率?

F1 小于 Scikit-learn 中的精度和召回率