排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)

现在的排序评估指标主要包括MAP、NDCG和AUC三个指标。NDCG考虑多指标,MAP和AUC考虑单个指标。

1.AUC

  最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期 Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯 下面的面积之和。这样,我们先把score排序(假设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么 做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此 时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比较麻烦的。 

    一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test是等价的。这个等价关系的证明留在下篇帖子中给出。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。有了这个定义,我们就得到了另外一中计 算AUC的办法:得到这个概率。我们知道,在有限样本中我们常用的得到概率的办法就是通过频率来估计之。这种估计随着样本规模的扩大而逐渐逼近真实值。这和上面的方法中,样本数越多,计算的AUC越准确类似,也和计算积分的时候,小区间划分的越细,计算的越准确是同样的道理。具体来说就是统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N) 
     第三种方法实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。

例如在排在n=5的正样本,共有4个样本与其组合的值小于5。。。

然后把所有的正类样本的rank相加,再减去两个正样本组合的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即 

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》

2.MAP

MAP(Mean Average Precision):单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。

主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。

MAP 是反映系统在全部相关文档上性能的单值指标。

系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为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。

3.NDCG

NDCG(Normalized Discounted Cumulative Gain):计算相对复杂。对于排在结位置n处的NDCG的计算公式如下图所示:

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》

在MAP中,四个文档和query要么相关,要么不相关,也就是相关度非0即1。NDCG中改进了下,相关度分成从0到r的r+1的等级(r可设定)。当取r=5时,等级设定如下图所示:

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》

例如现在有一个query={abc},返回下图左列的Ranked List(URL),当假设用户的选择与排序结果无关(即每一级都等概率被选中),则生成的累计增益值如下图最右列所示:

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》

考虑到一般情况下用户会优先点选排在前面的搜索结果,所以应该引入一个折算因子(discounting factor): log(2)/log(1+rank)。这时将获得DCG值(Discounted Cumulative Gain)如下如所示:

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》

最后,为了使不同等级上的搜索结果的得分值容易比较,需要将DCG值归一化的到NDCG值。操作如下图所示,首先计算理想返回结果List的DCG值:

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》

然后用DCG/MaxDCG就得到NDCG值,如下图所示:

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》
4. MRR

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

《排序算法常用评价指标计算方式(AUC,MAP,NDCG,MRR)》

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

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

    原文作者:排序算法
    原文地址: https://blog.csdn.net/weixin_38405636/article/details/80675312
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞