来自 http://www.domolo.com/?p=108

数学公式的细节:

NDCG(全称为Normalized Discounted Cumulative Gain)[62]对传统的评价标

准做出了改进,这些改进基于以下两个原则:
z 在信息检索中,相关可以分为多个级别,高度相关的文档比部分相关的
文档更有价值,其在评价中应该赋予更大的权值

z 文档在序列中的位置越靠后,这个文档的价值越小,从用户的角度考虑,
由于时间、精力以及从已经阅读过的文档中所得到了信息等原因,用户
可能根本不会去看这些文档。
在这种评价方法中,每一个文档都对它所在的位置有一定的贡献,其贡献值
与文档的相关度有关
,然后,从1 到n 的所有的位置上的贡献值都被加起来作
为最终的评价结果。这样,一个一定长度的文档序列被转换成了一个相关分值
的序列。

《用于信息检索的代价敏感》p50

DCG的英文全称是Discounted cumulative gain,它是一个衡量搜索引擎算法的指标。   搜索引擎一般采用PI(per item)的方式进行评测,简单地说就是逐条对搜索结果进行分等 级的打分。假设我们现在在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://blog.163.com/keli2000@126/blog/static/3493490320091187651696/

http://hi.baidu.com/jasonlyy/blog/item/9055fef8303818cfb48f31a4.html

http://en.wikipedia.org/wiki/Discounted_cumulative_gain

推荐系统评估指标和实验方法

http://log.medcl.net/item/2011/04/%E7%AC%AC%E4%B8%80%E5%B1%8A%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98%E9%82%80%E8%AF%B7%E8%B5%9B-%E6%95%B0%E6%8D%AE%E9%9B%86%E5%88%86%E6%9E%90/comment-page-1/#comment-318

http://www.lifecrunch.biz/archives/214

http://plpr.cdu.edu.cn/newsdetail.php?id=104

Normalized Discounted Cumulative Gain相关推荐

  1. 信息检索 度量指标 Normalized Discounted Cumulative Gain NDCG 全

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Amit Chaudhary 编译:ronghuaiyang 导读 由浅入 ...

  2. Discounted Cumulative Gain(DCG)

    Discounted Cumulative Gain(DCG)是衡量排名质量的一种方法.在信息检索中,经常被用来衡量网络搜索引擎算法或相关应用程序的有效性.DCG使用搜索引擎结果集中文档的分级相关性度 ...

  3. learning to rank_排序

    20210415 ndcg 一个正确结果位置的随机结果是0.45左右 20210412 考察产业匹配MRR评估指标的随机情况是什么样的 随机情况下会是什么样的 可以根据ndcg的值来看是否随机 202 ...

  4. xgboost重要参数1

    XGBoost 重要参数(调参使用) 数据比赛Kaggle,天池中最常见的就是XGBoost和LightGBM. 模型是在数据比赛中尤为重要的,但是实际上,在比赛的过程中,大部分朋友在模型上花的时间却 ...

  5. 机器学习——XGBoost大杀器,XGBoost模型原理,XGBoost参数含义

    0.随机森林的思考 随机森林的决策树是分别采样建立的,各个决策树之间是相对独立的.那么,在我们得到了第k-1棵决策树之后,能否通过现有的样本和决策树的信息, 对第m颗树的建立产生有益的影响呢?在随机森 ...

  6. Comprehensive Guide to build a Recommendation Engine from scratch (in Python) / 从0开始搭建推荐系统...

    https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-recommendation-engine-python/, 一篇详细 ...

  7. Instagram个性化推荐工程中三个关键技术是什么?

    作者 | Ivan Medvedev,Haotian Wu,Taylor Gordon 译者 | 陆离 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) [导语]近期,Face ...

  8. 干货 | XGBoost在携程搜索排序中的应用

    作者简介 曹城,携程搜索部门高级研发工程师,主要负责携程搜索的个性化推荐和搜索排序等工作. 一.前言 在互联网高速发展的今天,越来越复杂的特征被应用到搜索中,对于检索模型的排序,基本的业务规则排序或者 ...

  9. 独家 | 从零开始用python搭建推荐引擎(附代码)

    作者:Pulkit Sharma 翻译:申利彬 校对:付宇帅 本文约10300字,建议阅读10分钟. 本文介绍了各种推荐引擎算法以及使用Python构建它们的基本框架. 简介 当今社会的每个人都面临着 ...

最新文章

  1. spark 不同模式用途_Spark中那些常用的特征处理操作
  2. 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目...
  3. 什么是localStorage?
  4. Git Flow工作流图
  5. Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库
  6. SpringCloud Hoxton版微服务- Gateway网关
  7. 【实践】文本相关性和知识蒸馏在知识蒸馏中的应用实践
  8. C#对IE使用Proxy(代理)
  9. 手把手教你使用Python做数据分析
  10. ZZULIOJ1051-1055Python解法
  11. carry on till tomorrow
  12. Userscript+ 去除广告
  13. 警惕|这类人千万不要转行学IT
  14. 小学计算机编程学什么,小学生编程都学什么
  15. A股全自动化交易——从零到实盘20(完结)
  16. 安徽大学计算机专业全国大学排名,2017安徽大学优势专业排名
  17. android基本布局-TableLayout_表格布局
  18. 声明$(function(){})的含义
  19. 计算机ppt制作培训心得体会,制作ppt学习心得体会.doc
  20. [MySQL]初始JDBC编程

热门文章

  1. c语言less函数,less用法总结
  2. 键盘、鼠标各键对应的ASCII码值
  3. U盘禁止写入/SD卡被禁用怎么解除
  4. 目标检测实战篇1——数据集介绍(PASCAL VOC,MS COCO)
  5. 最先进的实体对齐方法的实验研究综述 An Experimental Study of State-of-the-Art Entity Alignment Approaches
  6. 移动端适配 postcss-pxtorem插件使用
  7. 美元对全球汇率 免费 api
  8. 基于Spring+SpringMVC+MyBatis博客系统的开发教程(十三)
  9. mysql网站设计_Flask+Mysql搭建网站之网页设计
  10. 在否定句和疑问句使用have动词_26