理解精确度@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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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