IR的评价指标-MAP,MRR和NDCG的形象理解

一 、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复杂,但是它也是评价信息检索质量的最好评价之一。

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

3.1 DG和DCG

在DCG指标的计算中,假设我们现在在谷歌上搜索一个词,然后得到5个结果。我们可以对这些结果进行3个等级的区分:Good(好)、Fair(一般)、Bad(差),然后赋予他们分值分别为3、2、1(当然,也可以分得更细)。假定通过逐条打分后,得到这5个结果的分值分别为3、1 、2 、3、 2。如果要我们评价这次查询的效果,可以用Cumulative Gain值来评估

CG是在这个查询输出结果里面所有的结果的等级对应的得分的总和。如一个输出结果页面有P个结果,CG被定义为:

                                                                     CG= \sum_{I=1}^{P}value_i

value_i就是3、2 、1 、3、 2这些。

不难看出,CG并不考虑在搜索结果的排序信息,CG得分高只能说明这个结果页面总体的质量比较高并不能说明这个算法做的排序好或差。在上面谷歌的例子中,CG=3+1+2+3+2=11,如果调换第二个结果和第三个结果的位置CG=3+2+1+3+2=11,并没有改变总体的得分。

因此,如果我们要评估返回结果质量还要考量输出排序的话。首先,我们要说明什么是好的排序?一般来说,好的排序要把Good的结果排到Fair结果上面、Fair结果排到Bad结果上面,如果有Bad的结果排在了Good上面,那当然排序就不好了。

在一个搜索结果列表里面,比如有两个结果的打分都是Good,但是有一个是排在第1位,还有一个是排在第40位,虽然这两个结果一样都是Good,但是排在第40位的那个结果因为被用户看到的概率是比较小的,他对这整个搜索结果页面的贡献值是相对排在第一位那个结果来得小的。

为了能够完成评估排序的目的,我们需要采用DCG(Discounted Cumulative Gain)值。

DCG的思想比较容易理解,等级比较高的结果却排到了比较后面,那么在统计分数时,就应该对这个结果的得分有所打折。一个有P(P≥2)个结果的搜索结果页面的DCG定义为:

                                                                           DCG=value_1+\sum_{i=1}^{2}\frac{value_i}{log_2^i}

为什么要用以2为底的对数函数?这个并没有明确的科学依据,大概是根据大量的用户点击与其所点内容的位置信息,模拟出一条衰减的曲线。

那么在上面谷歌的例子中:DCG=3+(1+1.26+1.5+0.86)=7.62。

具体的计算过程是这样的:第一个结果即为value_1 3。第二个结果即为1*log(2)/log(2)=1,第二个结果即为2*log(2)/log(3)=2*0.63=1.26......依次类推。

3.2 NDCG

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

                                                                                    NDCG=\frac{DCG}{IDCG}

公式中的IDCG(ideal DCG)就是理想的DCG。iDCG如何计算?首先要拿到搜索的结果,然后对这些结果进行排序,排到最好的状态后,算出这个排列下的DCG,就是IDCG。因此NDCG是一个0-1的值,nDCG越靠近1,说明策略效果越好,或者说只要nDCG<1,策略就存在优化调整空间。因为NDCG是一个相对比值,那么不同的搜索结果之间就可以通过比较nDCG来决定哪个排序比较好。在上面的例子中,理想的排序应该是3 、3 、2 、2 、1,那么iDCG=3+3+1.26+1+0.43=8.69(计算方式同DCG),NDCG=DCG/IDCG=7.62/8.69=0.88。

NDCG如何理解?

对于搜索引擎,本质是用户搜一个query,引擎返回一个结果列表,那么如何衡量这个结果列表的好坏?我能够想到的是:

我们希望把最相关的结果放到排名最靠前的位置,因为大部分用户都是从上往下阅读的,那么最相关的在前面可以最大程度减少用户的阅读时间; 
我们希望整个列表的结果尽可能的和query相关; 
第一个条件的满足是首要的,而第二个条件的加入是保证整体结果质量,而这两个条件都体现在了NDCG里面,首先,计算NDCG,需要计算Gain,这个gain即是每条结果的质量的定义,NDCG把所有结果相加最终相加保证,整体质量越高的列表NDCG值越大。同时,Discounted的设计使得越靠前的结果权重越大,这保证了第一条,更相关的排在靠前的结果会有更大的NDCG值。从这两点看,以NDCG为优化目标,保证了搜索引擎在返回结果总体质量好的情况下,把更高质量结果排在更前面。

四、参考文献:

【1】http://www.woshipm.com/pmd/232014.html

【2】https://blog.csdn.net/lightty/article/details/47079017

猜你喜欢

转载自blog.csdn.net/anshuai_aw1/article/details/83117012