CG, DCG, NDCG

衡量搜索引擎质量指标(DCG -- Discounted Cumulative Gain)

  DCG的英文全称是Discounted cumulative gain,它是一个衡量搜索引擎算法的指标。

  搜索引擎一般采用PI(peritem)的方式进行评测,简单地说就是逐条对搜索结果进行分等级的打分。假设我们现在在Google上搜索一个词,然后得到5个结果。我们对这些结果进行3个等级的区分:Good(好)、Fair(一般)、Bad(差),然后赋予他们分值分别为3、2、1,假定通过逐条打分后,得到这5个结果的分值分别为3、2 、1 、3、 2。

  接下来我们来看看是怎么计算DCG的  使用DCG这个统计方法有两个前提:

  1.在搜索结果页面,越相关的结果排在越前面越好

  2.在PI标注时,等级高的结果比等级低的结果好,即Good要比Fair好、Fair要比Bad好。

  DCG这个概念是从Cumulative Gain这个概念发展起来的

  什么叫Cumulative Gain(CG

  CG并不考虑在搜索结果页面中结果的位置信息,它是在这个搜索结果list里面所有的结果的等级对应的得分的总和。如一个搜索结果list页面有P个结果,CG被定义为:

  

reli 是第i位结果的得分。CG的统计并不能影响到搜索结果的排序,CG得分高只能说明这个结果页面总体的质量比较高并不能说明这个算法做的排序好或差。什么是好的排序?也就是说要把Good的结果排到Fair结果上面、Fair结果排到Bad结果上面,如果有Bad的结果排在了Good上面,那当然排序就不好了。到底排序好不好,需要一个指标来衡量,DCG就是这样的一个指标。

  上面的例子CG=3+2+1+3+2=11,如果调换第二个结果和第三个结果的位置CG=3+1+2+3+2=11,并没有改变总体的得分。

Discounted Cumulative Gain

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

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

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

  那么上例中的数字如下:  

DCG=3+(1+1.26+1.5+0.86)=7.62

  DCG的公式另外一种表达式是:  

这个表达式在一些搜索文档中经常会被提到,他的作用和之前的那个公式一样,但是这个公式只适合打分分两档的评测。

NDCG(Normalize DCG  

因为不同query的搜索结果有多有少,所以不同query的DCG值就没有办法来做对比。

  定义: 

IDCG(ideal DCG),就是理想的DCG。IDCG如何计算?首先要拿到搜索的结果,人工对这些结果进行排序,排到最好的状态后,算出这个排列下本query的DCG,就是IDCG。

  因为nDCG是一个相对比值,那么不同的query之间就可以通过比较nDCCG来决定哪个query的排序比较好。

  例子中,理想的排序应该是3 、3 、2 、2 、1,那么IDCG=3+3+1.26+1+0.43=8.69

  nDCG=DCG/IDCG=7.62/8.69=0.88,从nDCG这个值可以看出目前算法存在的优化空间。

引用:http://hi.baidu.com/jasonlyy/item/a195e9369e503dfe2684f455

原文地址:https://www.cnblogs.com/ywl925/p/2780861.html