NDCG
Normalized Discounted Cummulative Gain
累积增益CG,CG表示每个推荐结果相关性的分数的累加,
C G k = ∑ i = 1 k r ( i ) CG_k=\sum_{i=1}^kr(i) CGk=i=1∑kr(i)
其中 r e l i rel_i reli是位置 i i i的推荐结果的相关性, k k k是推荐列表的大小.
如果我们考虑到位置对推荐的影响,比如,相关性高的应该尽量排在推荐列表的前面。这里引入DCG,考虑位置的影响因素:
D C G k = ∑ i = 1 k r ( i ) log 2 ( i + 1 ) DCG_k=\sum_{i=1}^{k}\frac{{r(i)}}{\log_2(i+1)} DCGk=i=1∑klog2(i+1)r(i)
如果 r ( i ) r(i) r(i)的取值是 { 0 , 1 } \{0,1\} {0,1},那么可以这样计算:
D C G k = ∑ i = 1 k 2 r e l i − 1 log 2 ( i + 1 ) DCG_k=\sum_{i=1}^{k}\frac{2^{rel_i}-1}{\log_2(i+1)} DCGk=i=1∑klog2(i+1)2reli−1
即:位置越靠后,缩小的比例就越大
现在的问题是,DCG仅仅是针对一个用户的推荐列表进行评估,但是每个用户的推荐列表长度不是全都一样,那么要在所有用户之间横向比较的话需要将数据归一化,即引入NDCG.
N D C G u @ K = D C G u @ K I D C G u NDCG_u@K=\frac{DCG_u@K}{IDCG_u} NDCGu@K=IDCGuDCGu@K
其中,IDCG是理想化状态的DCG,即已经按相关性大小完成排序.
举个例子,假设用户u得到一个长度为6的推荐列表,其相关性数组为 { 3 , 4 , 1 , 0 , 3 , 2 } \{3,4,1,0,3,2\} {3,4,1,0,3,2},得到CG=3+4+1+0+3+2=13.
现在计算DCG:
i | r(i) | log 2 ( i + 1 ) \log_2(i+1) log2(i+1) | r ( i ) / log 2 ( i + 1 ) r(i)/\log_2(i+1) r(i)/log2(i+1) |
---|---|---|---|
1 | 3 | 1.00 | 3.00 |
2 | 4 | 1.58 | 2.53 |
3 | 1 | 2.00 | 0.50 |
4 | 0 | 2.32 | 0 |
5 | 3 | 2.58 | 1.16 |
6 | 2 | 2.80 | 0.71 |
DCG = 3+2.53+0.5+0+1.16+0.71 = 7.9
理想状况的推荐列表 { 4 , 3 , 3 , 2 , 1 , 0 } \{4,3,3,2,1,0\} {4,3,3,2,1,0},计算IDCG
i | r(i) | log 2 ( i + 1 ) \log_2(i+1) log2(i+1) | r ( i ) / log 2 ( i + 1 ) r(i)/\log_2(i+1) r(i)/log2(i+1) |
---|---|---|---|
1 | 4 | 1.00 | 4.00 |
2 | 3 | 1.58 | 1.89 |
3 | 3 | 2.00 | 1.50 |
4 | 2 | 2.32 | 0.86 |
5 | 1 | 2.58 | 0.38 |
6 | 0 | 2.80 | 0 |
IDCG = 8.63
N D C G u @ 6 = 7.9 / 8.63 = 92.61 % NDCG_u@6=7.9/8.63 = 92.61\% NDCGu@6=7.9/8.63=92.61%
可见,NDCG的值是介于(0,1]的.
MAP
Mean Average Precision
对于该指标的解释,就是希望用户选择的物品排在推荐列表的越前面越好.
参考:/2012/07/02/intuition-behind-average-precision-and-map/
假设我们收到一个推荐
C
=
{
1
,
2
,
3
,
4
,
5
,
6
}
\mathbf C=\{1,2,3,4,5,6\}
C={1,2,3,4,5,6},我们的购买列表是
T
=
{
1
,
4
,
5
,
6
}
\mathbf T=\{1,4,5,6\}
T={1,4,5,6},那么我们可以得到一个集合
Ω
=
{
1
,
0
,
0
,
1
,
1
,
1
}
\Omega=\{1,0,0,1,1,1\}
Ω={1,0,0,1,1,1},其中
∣
Ω
∣
=
∣
C
∣
|\Omega|=|\mathbf C|
∣Ω∣=∣C∣,
if
c
i
∈
C
∩
T
,
Ω
i
=
1
,
o
t
h
e
r
w
i
s
e
,
Ω
i
=
0.
(
i
=
1
,
2
,
.
.
.
,
∣
C
∣
)
c_i\in\mathbf C\cap\mathbf T,\Omega_i=1,\mathrm {otherwise},\Omega_i=0. (i=1,2,...,|\mathbf C|)
ci∈C∩T,Ωi=1,otherwise,Ωi=0.(i=1,2,...,∣C∣)
可以有一个和
Ω
\Omega
Ω一样长的的集合来表示位置i(包括i)之前有多少比例的物品被购买了,即
{
1
,
0
,
0
,
2
4
,
3
5
,
4
6
}
\{1,0,0,\frac24,\frac35,\frac46\}
{1,0,0,42,53,64}
所以公式就可以表示为:
A
P
u
=
1
∣
T
∣
∑
i
=
1
∣
Ω
∣
Ω
i
∑
j
=
1
i
Ω
j
i
AP_u=\frac1{|\mathbf T|}\sum_{i=1}^{|\Omega|}\frac{\Omega_i\sum_{j=1}^{i}\Omega_j}{i}
APu=∣T∣1i=1∑∣Ω∣iΩi∑j=1iΩj
其中
u
u
u代表用户
u
u
u,对每个用户求得AP,再求平均即为MAP.
M
A
P
=
∑
u
∈
U
A
P
u
∣
U
∣
MAP=\frac{\sum_{u\in \mathbf U}AP_u}{|\mathbf U|}
MAP=∣U∣∑u∈UAPu
AUC
Area Under Curve
这里的curve指ROC曲线,AUC就是曲线下的面积
ROC曲线是一系列threshold下的(FPR,TPR)数值点的连线。此时的threshold的取值分别为测试数据集中各样本的预测概率,但取各个概率的顺序是从大到小的,ROC图中,横坐标是FPR伪阳率,FPR=FP/(FP+TN),纵坐标是TPR,真阳率,TPR=TP/(TP+FN)
用推荐系统评价指标综述笔记_pocket_eight的博客-****博客的例子,FPR=3/(3+5)=0.38,TPR=18/(22)=0.82
那么如何标记这么多点呢?在真假例的二分类判断中,有一个预测为真的阈值,例如预测率超过80%就判定为真,这个0.8就是阈值,将阈值从0到1不断调整,可以得到n组FPR、TPR的值对,将这些值在坐标系中描出来,就得到了ROC曲线。
AUC值越大的分类器,正确率越高。
HR
Hit Ratio
H R @ K = N u m b e r O f H i t s @ K G T HR@K=\frac{NumberOfHits@K}{GT} HR@K=GTNumberOfHits@K
分母是所有测试集合,分子表示每个用户top-K列表中属于测试集合个数的和
举例:有3个用户,三个用户在测试集中的商品个数为6,8,10,得到的top5商品在测试集中的商品个数分别为2,3,4,那么
H R @ 5 = 2 + 3 + 4 6 + 8 + 10 = 0.375 HR@5=\frac{2+3+4}{6+8+10}=0.375 HR@5=6+8+102+3+4=0.375
MRR
平均倒数排名(Mean Reciprocal Rank,MRR)
M
R
R
=
1
N
∑
i
=
1
N
1
p
i
MRR=\frac 1N\sum_{i=1}^N\frac 1{p_i}
MRR=N1i=1∑Npi1
关注推荐的项目是否靠前
N
N
N:真实点击总数
p
i
p_i
pi:item_i在推荐列表中出现的位置,如果没有出现就是
p
i
→
∞
p_i\rarr\infty
pi→∞