排序之指标集锦(系列1)

Posted AI蜗牛之家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序之指标集锦(系列1)相关的知识,希望对你有一定的参考价值。

一 、MAP(Mean Average Precision):

单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。MAP 是反映系统在全部相关文档上性能的单值指标。系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为0。

只有1和0,1代表相关,0代表不相关。

例如:假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;对于主题2检索出3个相关网页,其rank分别为1,3,5。对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。则MAP= (0.83+0.45)/2=0.64。

二、MRR(Mean Reciprocal Rank):

是把标准答案在被评价系统给出结果中的排序取倒数作为它的准确度,再对所有的问题取平均。相对简单,举个例子:有3个query如下图所示:

(黑体为返回结果中最匹配的一项)

可计算这个系统的MRR值为:(1/3 + 1/2 + 1)/3 = 11/18=0.61。

三、NDCG(Normalized Discounted Cumulative Gain):

NDCG相比MAP和MRR复杂,但是它也是评价信息检索质量的最好评价之一。我首先举一个例子来说明一种NDCG是怎么计算的,因为关于NDCG的计算其实是存在差异的。

我首先介绍下CG和DCG,在此基础上,NDCG的定义也更容易理解。

3.1 DG和DCG

可能大家接触比较多的是MAP,MAP考虑的是0和1的排序。而NDCG则是考虑到评分的排序。

说到NDCG就需要从CG开始说起。

CG(cumulative gain,累计增益)可以用于评价基于打分的个性推荐系统,当然可以应用于任何排序的场景,这里只是以推荐为例。假设我们推荐个物品,这个推荐列表的 C G k CG_k CGk计算公式如下:
C G k = ∑ i = 1 k rel i . CG_k=\\sum_{i=1}^k \\text{rel}_i. CGk=i=1kreli.
rel i \\text{rel}_i reli表示第 k k k个物品的相关性或者评分。假设我们共推荐 k k k个电影, r e l i rel_i reli可以是用户对第 i i i部电影的评分。

比如豆瓣给用户推荐了五部电影,

M 1 , M 2 , M 3 , M 4 , M 5 , M_1,M_2,M_3,M_4,M_5, M1,M2,M3,M4,M5

该用户对这五部电影的评分分别是

5 , 3 , 2 , 1 , 2 5, 3, 2, 1, 2 5,3,2,1,2

那么这个推荐列表的CG等于
C G 5 = 5 + 3 + 2 + 1 + 2 = 13. CG_5=5+3+2+1+2=13. CG5=5+3+2+1+2=13.
CG没有考虑推荐的次序,在此基础之后我们引入对物品顺序的考虑,就有了DCG(discounted CG),折扣累积增益。公式如下:

D C G k = ∑ i = 1 k 2 rel i − 1 log ⁡ 2 ( i + 1 ) . DCG_k=\\sum_{i=1}^k \\frac{2^{\\text{rel}_i}-1}{\\log_2(i+1)}. DCGk=i=1klog2(i+1)2reli1.
比如豆瓣给用户推荐了五部电影,

M 1 , M 2 , M 3 , M 4 , M 5 , M_1,M_2,M_3,M_4,M_5, M1,M2,M3,M4,M5

该用户对这五部电影的评分分别是

5 , 3 , 2 , 1 , 2 5, 3, 2, 1, 2 5,3,2,1,2

那么这个推荐列表的DCG等于
D C G 5 = 2 5 − 1 log ⁡ 2 2 + 2 3 − 1 log ⁡ 2 3 + 2 2 − 1 log ⁡ 2 4 + 2 1 − 1 log ⁡ 2 5 + 2 2 − 1 log ⁡ 2 6 = 31 + 4.4 + 1.5 + 0.4 + 1.2 = 38.5 DCG_5=\\frac{2^5-1}{\\log_2 2}+\\frac{2^3-1}{\\log_2 3}+\\frac{2^2-1}{\\log_2 4}+\\frac{2^1-1}{\\log_2 5}+\\frac{2^2-1}{\\log_2 6}=31+4.4+1.5+0.4+1.2=38.5 DCG5=log22251+log23231+log24221+log25211+log26221=31+4.4+1.5+0.4+1.2=38.5

3.2.NDCG

DCG在评估策略效果的过程中,没有考虑到推荐列表和每个检索中真正有效结果个数,换句话说,因为不同搜索模型给出的结果有多有少(P的大小不同),仍然会造成无法对比两个模型的效果。为了避免这种情况,我们进一步优化这个指标,成为NDCG(normalize DCG),顾名思义,就是将一个策略的效果标准归一化,以方便不同策略的效果对比。公式如下:

N D C G k = D C G k I D C G k NDCG_k=\\frac{DCG_k}{IDCG_k} NDCGk=IDCGkDCGk
其中IDCG是指ideal DCG,也就是完美结果下的DCG。

继续上面的例子,如果相关电影一共有7部

M 1 , M 2 , M 3 , M 4 , M 5 , M 6 , M 7 M_1,M_2,M_3,M_4,M_5,M_6,M_7 M1,M2,M3,M4,M5,M6,M7
该用户对这七部电影的评分分别是

5 , 3 , 2 , 1 , 2 , 4 , 0 5, 3, 2, 1, 2 , 4, 0 5,3,2,1,2,4,0

把这7部电影按评分排序

5 , 4 , 3 , 2 , 2 , 1 , 0 5, 4, 3, 2, 2, 1, 0 5,4,3,2,2,1,0

这个情况下的完美DCG是
I D C G 5 = 2 5 − 1 log ⁡ 2 2 +

以上是关于排序之指标集锦(系列1)的主要内容,如果未能解决你的问题,请参考以下文章

排序之指标集锦(系列1)

排序之损失函数List-wise loss(系列3)

理论模型集锦-数据分析模型

程序员面试算法研究编程艺术红黑树数据挖掘5大系列集锦

推荐:Java性能优化系列集锦

推荐:Java性能优化系列集锦