我目前正在评估一个基于隐式反馈的推荐系统。对于对任务进行排序的评估指标,我有点困惑。具体来说,我希望通过精确性和回忆性来进行评估。
精度@k的优点是不需要对相关文档集的大小进行任何估计,但缺点是它是常用的评估方法中最不稳定的,而且它并不平均,因为查询的相关文档总数对k的精度有很大的影响。
我已经注意到,它往往是非常不稳定的,因此,我想将多个评估日志的结果平均化。
我想知道,如果我运行一个返回以下数组的评估函数:
包含每个用户精确@k分数的Numpy数组。
现在,我有了一个数组,用于我的数据集中的所有精度@3分数。
如果我取这个数组的平均值,横穿20个不同的分数:这是否等同于平均精度@K或MAP@K,或者我是否理解得有点过了?
我正在写一篇带有评价部分的论文,所以定义的准确性对我来说是非常重要的。
发布于 2019-05-28 12:24:05
涉及到两个平均值,它们使概念变得模糊,但在recsys上下文中它们是非常简单的-at --让我澄清它们:
P@K
在您的系统的顶部-k建议中有多少相关项存在?
例如,要计算P@3:为给定的用户取前3条建议,并检查其中有多少条是好的。这个数除以3,得到P@3。
AP@K
P@i对i=1,.,K.
例如,要计算AP@3:和P@1、P@2和P@3,并将该值除以3
AP@K通常是为一个用户计算的。
MAP@K
所有用户AP@K的平均值。
例如,要为所有用户计算MAP@3: sum AP@3,并将该值除以用户数
如果您是程序员,可以检查这段代码,这是apk
和ml_metrics
的mapk
函数的实现,这是一个由Kaggle的CTO负责的库。
希望能帮上忙!
https://stackoverflow.com/questions/55748792
复制相似问题