我目前正在基于隐式反馈评估推荐系统。对于任务排名的评估指标,我有些困惑。具体来说,我希望同时进行精确度和召回率评估。
Precision @ k的优点是不需要对 相关文件集的大小,但缺点是 最常用的评估方法中最不稳定的 由于相关文件总数太少,平均效果不佳 一个查询对k精度的影响很大
我已经发现我自己经常波动很大,因此,我想对多个评估日志的结果取平均值。
我在想;说如果我运行一个返回以下数组的评估函数:
包含每个用户的Precision @ k分数的数字数组。
现在,我为数据集中的所有 precision @ 3 分数提供了一个数组。
如果我用这个数组的平均值和平均水平说20个不同的分数:这是否等于 Mean Average Precision @ K 或 MAP @ K 还是我从字面上太了解了这一点?
我正在写一个带有评估部分的论文,因此定义的准确性对我来说很重要。
答案 0 :(得分:0)
涉及两个平均数,这些平均数使这些概念变得晦涩难懂,但它们相当简单-至少在recsys上下文中-让我澄清一下:
系统的前k个建议中有多少相关项
例如,要计算P @ 3:采用给定用户的前3条建议,并检查其中有多少是好建议。该数字除以3即可得到P @ 3
i = 1,...,K 的 P @ i 的平均值。
例如,要计算AP @ 3:求和P @ 1,P @ 2和P @ 3,然后将该值除以3
AP @ K通常是为一个用户计算的。
所有用户的AP @ K的平均值。
例如,要计算MAP @ 3:为所有用户 sum AP @ 3并将该值除以用户数量
如果您是程序员,则可以检查this code,这是apk
的功能mapk
和ml_metrics
的实现,该功能由CTO的CTO维护。 Kaggle。
希望它有所帮助!