理解精确度@K、平均精确度@K、均值平均精确度@K

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

精确度@k的优势在于不需要估计相关文档集的大小,但缺点是它在常用评估指标中稳定性最差,且平均效果不佳,因为查询的相关文档总数对k处的精确度有很大影响

我自己也注意到它往往波动较大,因此我想平均多个评估日志的结果。

我在想,如果我运行一个评估函数,返回以下数组:

包含每个用户精确度@k得分的Numpy数组。

现在我有了一组数据集中所有精确度@3的得分。

如果我取这个数组的平均值,并在比如说20个不同的得分上进行平均:这是否相当于均值平均精确度@KMAP@K,还是我对这个理解得有点太字面了?

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


回答:

涉及到两个平均值,这使得这些概念有些模糊,但它们在推荐系统的上下文中还是相当直白的,让我来澄清一下:

P@K

系统的top-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:将所有用户的AP@3相加,然后将这个值除以用户数量

如果你是程序员,你可以查看这个代码,这是Kaggle的CTO维护的ml_metrics库中apkmapk函数的实现。

希望这对你有帮助!

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注