原文地址:http://blog.sina.com.cn/s/blog_4c98b960010008h4.html
NDCG(全称为Normalized Discounted Cumulative Gain)对传统的评价标
准做出了改进,这些改进基于以下两个原则:
第一,在信息检索中,相关可以分为多个级别,高度相关的文档比部分相关的文档更有价值,其在评价中应该赋予更大的权值。
第二,文档在序列中的位置越靠后,这个文档的价值越小,从用户的角度考虑,由于时间、精力以及从已经阅读过的文档中所得到了信息等原因,用户可能根本不会去看这些文档。
在这种评价方法中,每一个文档都对它所在的位置有一定的贡献,其贡献值与文档的相关度有关,然后,从1 到n 的所有的位置上的贡献值都被加起来作为最终的评价结果。这样,一个一定长度的文档序列被转换成了一个相关分值的序列。给定一个排序后的文档序列,在第r 位的NDCG 值NDCG@r 的计算公式为
个不同级别的贡献值0、1、2 和3,其中3 代表最有价值而0 表示没有价值。有
一个由上述文档组成的序列,其各个位置上的文档所贡献分值为G:
G = (3, 2,3,0,0,1, 2, 2,3,0。。)
这样,到第i 位累计的贡献为从第1 位到第i 的贡献值之和。我们把第i 位上的贡献记为G[i],而从第1 位到第i 位的贡献之和记为CG[i],其中CG[i]=CG[i-1]+G[i],i=1时CG[i]=G[1],上述CG并没有反映出NDCG在提出的时候的第二点——文档所排的位置越靠后,其重要性就越小,因此对于具有相同贡献值的文档,其所在的位置越靠后,则其加在CG 上的值应该越小。一个简单的办法就是在其贡献值上除以其位置值的对数函数,这样我们就得到了DCG[i],]/ log ifi< b则DCG[i]=CG[i],否则DCG[i]=DCG[i-1]+G[i]/logi(b为底数)。为了便于比较,我们需要把DCG 进行归一化,使得所有的值都在0 到1 之间,因此在每一个位置上都除以其最优排序时的DCG 值。形式化的表达为:给定一个根据某个排序计算出来的DCG 序列:
(v1 ,v2 , , ,vk)而根据最优排序计算出的DCG 序列为
(i1,i2 , , ,ik) 则这个排序对应的NDCG 序列为:
(v1/i1, v2/i2,
AvgPi=Σ Precision (j)* pos(j)/(number of documents relevant to Qi),其中j从1到M(检索到的文档的总数),Precision(j)是前j 个检索到的
文档的查准率,pos(j)是一个0-1 函数,如果排在第j 个文档是相关的,其值为
1,否则为0。这样平均查准率的均值MAP 的计算公式为:
MAP = ΣAvgPi/(number of queries)