推荐系统常用指标

MAP

MAP —— Mean Average Precision, 即对多个AP求平均。

AP定义如下:

AP=knP(k)×rel(k)knrel(k)\mathrm{AP}=\frac{\sum_{\mathrm{k}}^{\mathrm{n}} \mathrm{P}(\mathrm{k}) \times \operatorname{rel}(\mathrm{k})}{\sum_{\mathrm{k}}^{\mathrm{n}} \operatorname{rel}(\mathrm{k})}

其中,rel(k)\operatorname{rel}(\mathrm{k})表示当第k个预测值与ground truth相关(相同)时为1,否则为0;P(k)\mathrm{P}(\mathrm{k})表示前k个预测值中相关的占比。
示例:
预测序列e,b,a,d,c ; ground truth为a,b,c,d,e ,则第2个和第4个预测值与gt匹配,AP则为:

AP=12+242=0.5AP=\frac{\frac{1}{2}+\frac{2}{4}}{2}=0.5

若多次AP结果分别为0.4, 0.5, 0.6, 0.9,则MAP为0.4+0.5+0.6+0.94=0.6\frac{0.4+0.5+0.6+0.9}{4}=0.6
但是,MAP指标还是存在一定的缺陷,最典型的缺陷在于其无法表征两个相关搜索间的程度关系,比如搜索结果A比搜索结果B明显更与搜索目标相接近,如果使用MAP指标,那么我们无法准确地令A排序在B的前方。

NDCG

NDCG —— Normalized Discounted Cumulative Gain
相对于MAP的改进:

  • 相关度函数rel为一个连续函数,不再是非零即一
  • 对排名靠后的结果进行一个重要度的衰减

NDCG公式:

NDCG=DCG@KIDCG@K\mathrm{NDCG}=\frac{\mathrm{DCG@K}}{\mathrm{IDCG@K}}

其中@K\mathrm{@K}表示前K个预测值的结果,DCG\mathrm{DCG}指标为带有衰减的关联性增益指标,而IDCG\mathrm{IDCG}为归一化指标,其定义为完全符合正确排序时的DCG\mathrm{DCG}指标的计算值。

DCG公式:

DCG@ K=iKrel(i)log2(i+1)\mathrm{DCG} @ \mathrm{~K}=\sum_{\mathrm{i}}^{\mathrm{K}} \frac{\mathrm{rel}(\mathrm{i})}{\log _2(\mathrm{i}+1)}

示例

idx 1 2 3 4 5
relevance 7 2 5 10 1

DCG@5=7log2(2)+2log2(3)+5log2(4)+10log2(5)+1log2(6)=15.46\mathrm{DCG@5}=\frac{7}{\log _2(\mathrm{2})} + \frac{2}{\log _2(\mathrm{3})} + \frac{5}{\log _2(\mathrm{4})} + \frac{10}{\log _2(\mathrm{5})} + \frac{1}{\log _2(\mathrm{6})} = 15.46

IDCG@5=10log2(2)+7log2(3)+5log2(4)+2log2(5)+1log2(6)=18.16\mathrm{IDCG@5}=\frac{10}{\log _2(\mathrm{2})} + \frac{7}{\log _2(\mathrm{3})} + \frac{5}{\log _2(\mathrm{4})} + \frac{2}{\log _2(\mathrm{5})} + \frac{1}{\log _2(\mathrm{6})} = 18.16

NDCG@5=DCG@5IDCG@5=15.4618.16=0.85\mathrm{NDCG@5}=\frac{\mathrm{DCG@5}}{\mathrm{IDCG@5}}=\frac{15.46}{18.16}=0.85

此外,DCG还有一种常用的用于突出高相关度搜索结果权重的公式定义如下:

DCG@ K=iK2rel(i) 1log2(i+1)\mathrm{DCG} @ \mathrm{~K}=\sum_{\mathrm{i}}^{\mathrm{K}} \frac{2^{\text {rel(i) }}-1}{\log _2(\mathrm{i}+1)}

此时上述例子的NDCG为:

DCG@5=271log2(2)+221log2(3)+251log2(4)+2101log2(5)+211log2(6)=585.36\mathrm{DCG@5}=\frac{2^7-1}{\log _2(\mathrm{2})} + \frac{2^2-1}{\log _2(\mathrm{3})} + \frac{2^5-1}{\log _2(\mathrm{4})} + \frac{2^10-1}{\log _2(\mathrm{5})} + \frac{2^1-1}{\log _2(\mathrm{6})}=585.36

IDCG@5=2101log2(2)+271log2(3)+251log2(4)+221log2(5)+211log2(6)=1120.31\mathrm{IDCG@5}=\frac{2^10-1}{\log _2(\mathrm{2})} + \frac{2^7-1}{\log _2(\mathrm{3})} + \frac{2^5-1}{\log _2(\mathrm{4})} + \frac{2^2-1}{\log _2(\mathrm{5})} + \frac{2^1-1}{\log _2(\mathrm{6})} = 1120.31

NDCG@5=DCG@5IDCG@5=585.361120.31=0.53\mathrm{NDCG@5}=\frac{\mathrm{DCG@5}}{\mathrm{IDCG@5}}=\frac{585.36}{1120.31}=0.53

Reference
推荐问题常用metrics整理