推荐算法评价指标——NDCG

NDCG(Normalized Discounted Cumulative Gain):归一化折损累计增益
参考视频 NDCG
参考博客 搜索评价指标——NDCG

主要思想:

  • 高关联度的结果比一般关联度的结果更影响最终的指标得分
  • 有高关联度的结果出现在更靠前的位置的时候,指标会越高

Gain

相当于Relevance Score,在推荐系统中,如果你点击了相关性可能就是1,如果没有点击相关性可能就是0。

Cumulative Gain

累计增益即所有的增益相加。它是一个搜素结果相关性分数的总和。只考虑到了相关性的关联程度,没有考虑到位置的因素。指定位置p上的CG为:

\[\mathrm{CG}_{\mathrm{p}}=\sum_{i=1}^{p} r e l_{i} \]

reli: 表示i这个位置上的相关度。
e.g.,向用户推荐10个节目(top10),用户点击了第一个和第三个,这两个的Relevance Score就是1,其余的都是0,累计增益为2。
这样会导致一个问题:假如用户点击了第九个和第十个,累计增益同样为2,怎么区分这种情况呢?

Discounted Cumulative Gain

所以为了区分我们要计算一个discount即折损。用所有的Relevance Score除以log2为底的一个对数,再把折扣后的Relevance Score加起来。
为什么要这么做呢?目的就是为了让排名越靠前的结果越能影响最后的结果。假设排序越往后,价值越低。到第i个位置的时候,它的价值是 1/log2(i+1),那么第i个结果产生的效益就是 reli * 1/log2(i+1),所以:

\[\mathrm{DCG}_{\mathrm{p}}=\sum_{i=1}^{p} \frac{\mathrm{rel}_{i}}{\log _{2}(i+1)}=\mathrm{rel}_{1}+\sum_{i=2}^{p} \frac{\mathrm{rel}_{i}}{\log _{2}(i+1)} \]

当然还有一种比较常用的公式,用来增加相关度影响比重的DCG计算方式是:

\[\mathrm{DCG}_{\mathrm{p}}=\sum_{i=1}^{p} \frac{2^{r e l_{i}}-1}{\log _{2}(i+1)} \]

Normalized Discounted Cumulative Gain

进一步思考,为每个用户给出的推荐列表长度可能不一样。假设推荐列表很长,TA有可能拿到一个更高的DCG分数。DCG没法针对两个不同的搜索结果进行比较,这时候就需要考虑normalize(归一化)了。

\[\mathrm{nDCG}_{\mathrm{p}}=\frac{D C G_{p}}{I D C G_{p}} \]

iDCG(ideal DCG):完美状态下的DCG。那上个例子来说,完美状态就是用户点击前两个节目(最优先推荐的)。

\[\mathrm{IDCG}_{\mathrm{p}}=\sum_{i=1}^{|R E L|} \frac{2^{r e l_{i}}-1}{\log _{2}(i+1)} \]

其中 |REL| 表示,结果按照相关性从大到小的顺序排序,取前p个结果组成的集合。也就是按照最优的方式对结果进行排序。

示例

posted @ 2022-05-20 19:53  岸南  阅读(284)  评论(0)    收藏  举报