推荐系统评价指标(2):MAP与NDCG

在上文(https://blog.csdn.net/burstone/article/details/143666876)中,介绍了两个基础的准确率与召回率,本文介绍两个推荐系统中非常重要的两个评价指标:MAP与NDCG,这两个指标与之前的略有不同,它考虑了推荐结果命中用户偏好的位置。例如,对于一个用户,两次推荐结果R1与R2都命中了三个用户感兴趣的项目,哪个更好呢,肯定是top3结果是三个感兴趣项目的是最好的。因而,本文给出几个量化指标。下面分别介绍:

精度均值(Average Precision, AP):

先介绍单个用户下的精度定义:AP(Average Precision),它衡量的是推荐系统对于单个用户的排序质量,AP表示了对一个给定的用户,其推荐列表中相关项目的平均精度。具体地,每次出现相关项目时的精度值,然后取这些精度值的平均。精度(Precision)在这里是指在推荐列表中,用户感兴趣的项目所占的比例。

假设给用户u推荐了N个项目,其中M个是相关的,P(k)表示第k个相关项目出现时的准确率。则AP的形式化定义如下:

AP = 1 M ∑ k ∈ R e l e v a n t P ( k ) \text{AP} = \frac{1}{M}\sum_{k\in Relevant}P(k) AP=M1kRelevantP(k)

可见,AP考虑了推荐列表中项目的位置,因此它是一个“顺序敏感”的指标,即推荐列表中相关项目的位置越靠前,其对AP的贡献越大。下面举例说明:

例如,对于一个用户,其真实的兴趣列表中有3个项目,推荐系统为该用户推荐了长度为6的项目集:[1, 0, 1, 0, 1, 0],其中三个1表示用户感兴趣的。那么,对于这个用户,其AP值计算如下:
● Precision@1 = 1/1(如果第一个推荐项目是用户感兴趣的)
● Precision@3 = 2/3(如果前三个推荐项目中有二个是用户感兴趣的)
● Precision@5 = 3/5(如果前五个推荐项目中有三个是用户感兴趣的)

因此,该用户的AP值 = (1 + 0.67 + 0.6) / 3 = 0.76。

通常地,AP值越大,说明推荐系统对于该用户的相关项目排序越靠前,推荐效果越好。

平均精度均值(Mean Average Precision, MAP):

有了上述AP的概念,MAP非常简单了。假设用户集合为U,|U|表示用户的总数,因而,MAP是所有用户下AP的平均:

MAP = 1 | U | ∑ i ∈ ∣ U ∣ A P ( u i ) \text{MAP} = \frac{1}{|U|}\sum_{i\in |U|}AP(u_i) MAP=U1iUAP(ui)

如果有多个用户,可以计算所有用户的AP值的平均,得到整体的MAP(Mean Average Precision)值。

DCG与DNCG是两个常见的用来量化排序结果的评价指标。我们先从CG这个基础指标开始介绍,然后讲解DCG与NDCG。

累积增益(Cumulative Gain, CG)

CG表示推荐系统给出的前p个结果下,与用户感兴趣程度的相关性总和,计算公式如下:

C G p = ∑ i = 1 p r e l i CG_p=\sum_{i=1}^{p}rel_i CGp=i=1preli

其中,rel_i表示了每i个结果的相关性分数(典型地,0为不相关,1为相关)。可见,对用户的一次推荐而言,CG越大,推荐效果越好

折扣累积增益(Discounted Cumulative Gain, DCG)

仔细分析CG,对于两个推荐结果(1,0,1,0,0)与(0,0,0,1,1),其CG值是相同的,因为都包含了两个1,然而,显而易见,每一个推荐结果更好。其实是由于CG并未考虑每个项目所在的位置。因而有了下面DCG与NDCG。

DCG考虑了排序顺序的因素,即排名靠前的项目对用户更有价值,因此对排名靠后的项目进行折损。推荐系统给出的前p个结果下,DCG的计算公式如下:

D C G p = ∑ i = 1 p r e l i l o g 2 ( i + 1 ) DCG_p=\sum_{i=1}^{p}\frac{rel_i}{log_2(i+1)} DCGp=i=1plog2(i+1)reli

可见,DCG是在CG的计算公式基础上加了一个分母,排名靠前(i越小)的结果赋予更高的权重,DCG更大。

NDCG(Normalized Discounted Cumulative Gain)

注意到,DCG其实并不是一个介于0到1的值,因而,多次查询的DCG值的scale不同,并不便于比较。为此,提出了NDCG,它是归一化的DCG,它通过将DCG与理想情况下的DCG(称之为IDCG)进行比较来得到一个标准化的评分,从而可以跨不同查询和不同长度的列表进行比较。IDCG一般定义为最符合(最理想)用户偏好的推荐结果 r 1 , r 2 , . . . , r p r_1, r_2, ..., r_p r1,r2,...,rp,按DCGp的公式计算得到结果为IDCG。这样,NDCG的定义如下:

N D C G p = D C G p I D C G p NDCG_p=\frac{DCG_p}{IDCG_p} NDCGp=IDCGpDCGp

可以发现,NDCG值越大,越接近1表示排序质量越好

实例

下面,使用一个简单的例子来解释,假设推荐系统对用户A有两次推荐结果,每个结果包含5个项目(item)如下:
R 1 = ( 0 , 1 , 1 , 0 , 1 ) R_1=(0, 1, 1, 0, 1) R1=(0,1,1,0,1)
R 2 = ( 0 , 0 , 1 , 1 , 1 ) R_2=(0, 0, 1, 1, 1) R2=(0,0,1,1,1)
,其中0表示不相关,1表示相关。而理想的推荐结果为结果中top3全部为用户感兴趣的:

R i d e a l = ( 1 , 1 , 1 , 0 , 0 ) R_{ideal}=(1, 1, 1, 0, 0) Rideal=(1,1,1,0,0)

肉眼可见,R1结果更优,因为它推荐出来相关的项目更靠前。因而,可以计算

● CG值:R1与R2的CG值如下:
C G R 1 = 0 + 1 + 1 + 0 + 1 = 3 CG_{R1}=0+1+1+0+1=3 CGR1=0+1+1+0+1=3
C G R 2 = 0 + 0 + 1 + 1 + 1 = 3 CG_{R2}=0+0+1+1+1=3 CGR2=0+0+1+1+1=3

从上式看,两个CG值完全相同,不能客观地评价推荐结果的好坏。

● DCG值:
D C G R 1 = 0 + 1 l o g 2 ( 2 + 1 ) + 1 l o g 2 ( 3 + 1 ) + 0 + 1 l o g 2 ( 5 + 1 ) = 1.52 DCG_{R1}=0+\frac{1}{log_2(2+1)}+\frac{1}{log_2(3+1)}+0+\frac{1}{log_2(5+1)}=1.52 DCGR1=0+log2(2+1)1+log2(3+1)1+0+log2(5+1)1=1.52
D C G R 2 = 0 + 0 + 1 l o g 2 ( 3 + 1 ) + 1 l o g 2 ( 4 + 1 ) + 1 l o g 2 ( 5 + 1 ) = 1.32 DCG_{R2}=0+0+\frac{1}{log_2(3+1)}+\frac{1}{log_2(4+1)}+\frac{1}{log_2(5+1)}=1.32 DCGR2=0+0+log2(3+1)1+log2(4+1)1+log2(5+1)1=1.32

从上式可以看出来, C G R 1 CG_{R1} CGR1更大,表示它的结果更好,也符合我们的预期

● NDCG值:
I D C G = 1 l o g 2 ( 1 + 1 ) + 1 l o g 2 ( 2 + 1 ) + 1 l o g 2 ( 3 + 1 ) + 0 + 0 = 2.13 IDCG=\frac{1}{log_2(1+1)}+\frac{1}{log_2(2+1)}+\frac{1}{log_2(3+1)}+0+0=2.13 IDCG=log2(1+1)1+log2(2+1)1+log2(3+1)1+0+0=2.13

所以,
I D C G R 1 = D C G R 1 I D C G = 1.52 2.13 = 0.71 IDCG_{R1}=\frac{DCG_{R1}}{IDCG}=\frac{1.52}{2.13}=0.71 IDCGR1=IDCGDCGR1=2.131.52=0.71
I D C G R 2 = D C G R 2 I D C G = 1.32 2.13 = 0.62 IDCG_{R2}=\frac{DCG_{R2}}{IDCG}=\frac{1.32}{2.13}=0.62 IDCGR2=IDCGDCGR2=2.131.32=0.62

从这个例子可以看到,NDCG是DCG的归一化版本,取值范围为[0, 1],因而提供了一个标准化的评价指标,使得不同的推荐结果进行公平地对比。对一个推荐系统而言,搜集一批推荐结果,以及理想的推荐结果,可以计算其NDCG,从而对系统进行量化的评价。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值