首页 > 解决方案 > 了解 Precision@K、AP@K、MAP@K

问题描述

我目前正在评估基于隐式反馈的推荐系统。我对排名任务的评估指标有点困惑。具体来说,我希望通过精确度和召回率来评估。

Precision@k 的优点是不需要对相关文档集的大小进行任何估计,但缺点是它是常用评估措施中最不稳定的,并且它的平均效果不好,因为相关文档的总数因为查询对 k 处的精度有很大影响

我自己注意到它往往非常不稳定,因此,我想对多个评估日志的结果进行平均。

我在想; 假设我运行一个返回以下数组的评估函数:

Numpy 数组包含每个用户的precision@k 分数。

现在,我的数据集中的所有precision@3分数都有一个数组。

如果我取这个数组的平均值,然后取 20 个不同分数的平均值:这是否等同于平均精度@KMAP@K,还是我理解的有点过于字面意思?

我正在写一篇带有评估部分的论文,所以定义的准确性对我来说非常重要。

标签: machine-learningrecommender-systems

解决方案


涉及到两个平均值,这使得这些概念有些模糊,但它们非常简单 - 至少在 recsys 上下文中 - 让我澄清一下:

P@K

系统的 top-k 建议中存在多少相关项


例如,计算 P@3:获取给定用户的前 3 个推荐,并检查其中有多少是好的。这个数字除以 3 得到 P@3

美联社@K

i=1, ..., K的P@i的平均值。


例如,要计算 AP@3:将P@1、P@2 和 P@3 相加,然后将该值除以 3

AP@K 通常针对一位用户计算。

MAP@K

所有用户的 AP@K 平均值。


例如,要计算 MAP@3:将所有用户的 AP@3 相加,然后将该值除以用户数量

如果您是程序员,您可以查看此代码,它是Kaggle 的 CTO 维护的库的功能apk和实现。mapkml_metrics

希望它有所帮助!


推荐阅读