基础概念
首先明确CG这一系列指标既可用于打分场景,又可用于点击场景,用于判断模型给出的推荐列表
y
^
\hat{y}
y^和用户打分(点击列表)
r
e
l
rel
rel之间的相似性。
基于CG的评价指标的计算 基础流程为:
- 依据前端的召回模型对生成TOP-K推荐列表 y ^ \hat{y} y^;
- 按照推荐列表的顺序提取相应的用户的打分列表 r e l rel rel,进行排序;
- 计算这一顺序下的打分和;
这里需要明确,其他推文里常提到的所谓 “相关性”,简单认为是预先提供的用户打分Ground Truth即可。
指标介绍
- CG@K(Cummulative Gain):推荐列表中前K个物品用户给出的打分和(如果是点击场景而非打分场景的话就是1,官方名称是相关性rel,实际没看出来和相关性的联系在哪):
C G = ∑ i = 1 K r e l i CG=\sum_{i=1}^K rel_i CG=i=1∑Kreli
其中 r e l rel rel为按预测得到的推荐顺序得到的用户打分序列; - DCG@K(Discounted Cumulative Gain):考虑了位置因素后对CG进行的修正,使得越靠前推荐的物品计算打分和时的权重更大:
D C G = ∑ i = 1 K r e l 1 l o g 2 ( i + 1 ) DCG=\sum^{K}_{i=1} \frac{rel_1}{log_2(i+1)} DCG=i=1∑Klog2(i+1)rel1 - IDCG@KIdeal Discounted Cumulative Gain): 最理想的推荐列表的DCG得分,也就是将rel从大到小排布取前K个的DCG:
I D C G = ∑ i = 1 K r e l 1 ′ l o g 2 ( i + 1 ) IDCG=\sum^{K}_{i=1} \frac{rel'_1}{log_2(i+1)} IDCG=i=1∑Klog2(i+1)rel1′
其中 r e l ′ rel' rel′表示降序排列用户的打分表; - NDCG@K(Normalized Discounted Cumulative Gain): 归一化的折损累计增益,避免用户本身打分的倾向性(打高分或打低分)对评价指标造成影响;
N D C G = D C G I D C G NDCG=\frac{DCG}{IDCG} NDCG=IDCGDCG
举例
假定对前端召回模型输出的物品打分预测为:
y
^
=
[
70
,
4
,
0.3
,
0.2
,
0.1
]
\hat{y}=[70, 4, 0.3, 0.2, 0.1]
y^=[70,4,0.3,0.2,0.1],用户对应物品的打分列表为KaTeX parse error: Undefined control sequence: \rel at position 1: \̲r̲e̲l̲=[5, 1, 0, 0, 1…,那么有:
C
G
@
2
=
5
+
1
=
6
D
C
G
@
2
=
5
+
1
l
o
g
2
3
=
5.6309
I
D
C
G
@
2
=
10
+
5
l
o
g
2
3
=
13.1546
N
D
C
G
@
2
=
13.1546
/
5.6309
=
2.3361
CG@2=5+1=6\\ DCG@2=5+\frac{1}{log_2 3}=5.6309\\ IDCG@2=10+\frac{5}{log_23}=13.1546\\ NDCG@2=13.1546/5.6309=2.3361
CG@2=5+1=6DCG@2=5+log231=5.6309IDCG@2=10+log235=13.1546NDCG@2=13.1546/5.6309=2.3361