推荐系统常用指标

MAP

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

AP定义如下:
$$
\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})}
$$
其中,$\operatorname{rel}(\mathrm{k})$表示当第k个预测值与ground truth相关(相同)时为1,否则为0;$\mathrm{P}(\mathrm{k})$表示前k个预测值中相关的占比。
示例:
预测序列e,b,a,d,c ; ground truth为a,b,c,d,e ,则第2个和第4个预测值与gt匹配,AP则为:
$$
AP=\frac{\frac{1}{2}+\frac{2}{4}}{2}=0.5
$$
若多次AP结果分别为0.4, 0.5, 0.6, 0.9,则MAP为$\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公式:
$$
\mathrm{NDCG}=\frac{\mathrm{DCG@K}}{\mathrm{IDCG@K}}
$$
其中$\mathrm{@K}$表示前K个预测值的结果,$\mathrm{DCG}$指标为带有衰减的关联性增益指标,而$\mathrm{IDCG}$为归一化指标,其定义为完全符合正确排序时的$\mathrm{DCG}$指标的计算值。

DCG公式:
$$
\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
$$
\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
$$
$$
\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
$$
$$
\mathrm{NDCG@5}=\frac{\mathrm{DCG@5}}{\mathrm{IDCG@5}}=\frac{15.46}{18.16}=0.85
$$
此外,DCG还有一种常用的用于突出高相关度搜索结果权重的公式定义如下:
$$
\mathrm{DCG} @ \mathrm{~K}=\sum_{\mathrm{i}}^{\mathrm{K}} \frac{2^{\text {rel(i) }}-1}{\log _2(\mathrm{i}+1)}
$$
此时上述例子的NDCG为:
$$
\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
$$
$$
\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
$$
$$
\mathrm{NDCG@5}=\frac{\mathrm{DCG@5}}{\mathrm{IDCG@5}}=\frac{585.36}{1120.31}=0.53
$$

Reference
推荐问题常用metrics整理