推荐系统的评估指标 —— 概述

Recommendation System Evaluation Metrics - Overview

理解ML包中常见度量的目的和功能

最近,在进行推荐系统项目的实验过程中,我发现自己使用了各种评估指标。因此,我整理了一份我认为有用的度量指标列表,并考虑了评估推荐系统时需要考虑的其他一些因素。这些度量指标通常在ML包中找到,但理解它们的目的和功能非常重要。

召回率 @K

召回率@K衡量了在所有相关项中,前K个推荐项中有多少是相关项,其中K是为用户生成的推荐数。例如,如果我们正在构建一个电影推荐系统,为每个用户推荐10部电影。如果一个用户看过5部电影,而我们的推荐列表中有其中的3部电影(在这10个推荐中),则该用户的召回率@10计算为3/5 = 0.6。通常,对所有用户进行评估时取平均值。

从商业角度来看,这是一个简单但重要的指标,因为我们可以展示系统在预测用户行为方面的真正价值。

范围:0-1

精确率 @K

精确率@K衡量了向用户推荐的K个项目中有多少是相关项,其中K是为用户生成的推荐数。

例如,对于一个推荐系统,我们为每个用户推荐10部电影。如果一个用户观看了5部电影,我们能够预测其中的3部(在我们的推荐列表中有3部电影),那么我们的精确率@10就是3/10。

从规模和排序的角度来看,这是一个非常重要的指标,因为在现实世界中,您向用户提供的推荐数量是有限的。这与关注点范围有关(用户希望能够一眼看到相关的推荐,因此在顶部有相关的推荐至关重要),以及内存需求:假设您只能为每个用户存储100个推荐项,那么您需要在选择时准确。

范围:0-1

F1 @K

F1得分是使用调和平均值结合精确率和召回率。在推荐系统的背景下,这与常规的F1得分相同,没有区别。调和平均性质确保如果精确率或召回率有非常高的值,那么它不会主导得分。当精确率和召回率的值接近1时,F1得分较高。

范围:0-1

正如我们上面讨论的,当谈论精确率时,将相关的推荐项放在前面非常重要。有各种方法来衡量相关的推荐项是否确实位于前面。这些测量不仅在评估中使用,还用作排名模型的损失指标。

平均精确率 @K

衡量推荐列表在预测相关项时根据它们在列表中的位置的好坏的一种方法是使用“平均精确率”。让我们首先了解什么是平均精确率。如果我们推荐了K个项目,其中Q个是相关的,则平均精确率定义为:

如果所有相关项都在前面,那么该用户的平均精确率得分就会很高。

示例:

推荐列表:[“Top Gun”,“Arrival”,“Gladiator”]

真实情况:[“Arrival”,“Gladiator”]

精确率 @K:[0,1/2,2/3]

平均精确率(AP)=(1/3)[(1/2) + (2/3)] = 0.38

MAP中的mean指的是对所有用户的平均准确率(AP)进行求平均:

范围:0-1

平均倒数排名(MRR)

平均倒数排名(MRR)衡量的是在推荐列表中发现的第一个相关项的位置。当我们只关心最高排名结果的位置时,使用倒数排名(RR)。这里,排名是推荐列表中项的位置。

倒数很有用,因为它确保排名较低的项(例如Rank 20)得分较低,因为较大值的倒数是一个非常小的值。因此,如果大多数相关项被预测为在列表的顶部,则会受益。

倒数排名只关心第一个相关项。例如,

推荐列表:[“壮志凌云”,“降临”,“角斗士”]

真实值:“降临”

那么,倒数排名(RR)=(1/2)= 0.5

在推荐系统的上下文中,如果推荐系统中有多个值,我们也可以使用MRR,可以对它们求平均。

推荐列表:[“壮志凌云”,“降临”,“角斗士”]

真实值:[“降临”,“角斗士”]

那么,平均倒数排名(MRR)= 1/2 * ((1/2) + (1/3)) = 0.41

范围:0-1

归一化累积折扣增益(NDCG)

归一化折扣累积增益(NDCG)是衡量排序列表好坏的指标。其思想是,如果相关项按照从最相关到最不相关的顺序排列,那么NDCG分数将在推荐列表顶部推荐最相关项时最大化。

让我们通过一个例子来解释:

为了继续使用之前的例子:如果我们将用户识别为动作电影观众,则假设相关性得分如下:

“壮志凌云”,“角斗士”:2(最相关)

“玩具总动员”:1

“鲸鱼”:0(最不相关)

推荐列表:

[“壮志凌云”,“玩具总动员”,“鲸鱼”,“角斗士”] ⇒ [2, 1, 0, 2]

累积增益(CG):在位置p上的累积增益是该位置上的相关性得分。因此,对于整个列表,它是:2 + 1 + 0 + 2 = 5

累积增益不考虑项的位置。因此,如果最相关的项位于列表末尾(例如“角斗士”),则在CG得分中不会反映出来。

为了解决这个问题,我们引入了折扣累积增益(DCG),其中我们为每个位置分配一个得分/折扣,用于对相关性得分进行惩罚。

因此,如果将诸如“角斗士”之类的相关项推荐到列表末尾,它将按照1/log2(n)进行折扣(其中n是列表的大小:它将乘以一个较小的数字,例如0.2,因此其对得分的贡献将非常小),与第一个项不会折扣。如果所有相关项都在顶部,DCG得分最高。

对于项集A:[2, 1, 0, 2]:

让我们将其与B集进行比较:[2, 2, 1, 0],其中所有相关项目都在顶部:

显然,集合B的DCG比集合A的DCG高。而且,et B是我们所说的理想折扣累积增益(IDCG),它为我们提供了一个理想列表的DCG,其中项目按照其相关性得分完美排序。

如果我们需要将DCG分数与两个不同大小的列表进行比较怎么办?这就是IDCG的作用,我们将DCG分数除以IDCG分数,得到一个介于0-1之间的值。这个分数被称为归一化折扣累积增益(nDCG)。

现在我们可以比较不同大小的两个列表的nDCG分数。

nDCG范围:0-1

这是评估推荐系统广泛使用的一些指标的概述。

在评估推荐系统时需要考虑的事项:

我计划很快就会在这些主题上撰写文章,并在那种情况下,我会在这里链接它们。

  1. 流行度偏差

推荐系统中可能存在很大的流行度偏差,很难检测和修复,因为热门项目在大多数标准指标上都具有相关性且得分较高。有多种方法可以衡量和修复流行度偏差,我计划撰写一篇涉及这些方法的文章。

作者图片

2. 位置偏差

位置偏差发生在列表中排名较高的项目更有可能被查看或购买,而不考虑它们的实际相关性。结果是,排名较低的项目接收到较少的参与度。这可能还会影响其他指标,并且有方法可以减轻这种情况。

3. 退化反馈循环

当用户仅限于与建议的项目进行互动,并且算法依赖于来自这些建议的用户反馈进行训练时,可能会出现负反馈循环。这种循环会强化先前显示的项目,可能导致用户随着时间的推移产生负面体验,因为用户未发现大量相关项目。

参考资料:

Wikiwand – 平均倒数排名

平均倒数排名是一种评估任何生成可能回应列表的过程的统计量…

www.wikiwand.com

推荐系统的平均准确率(MAP)

好吧,这里有一个双关语。由于你正在阅读这篇文章,你可能刚刚遇到了“平均准确率”的术语,或者…

sdsawtelle.github.io

推荐系统的评估指标

推荐系统在在线零售中越来越受欢迎。看一下一些常用的度量标准

towardsdatascience.com