SIGIR的一篇推荐算法论文中提到用NDCG和AUC作为比较效果的指标,之前没了解过这两个指标,便查找相关概念,整理如下。

一、NDCG
1.DCG
首先,介绍一下DCG。DCG的全称是Discounted Cumulative Gain,它是衡量搜索引擎算法的一个指标。搜索引擎一般采用PI(per item)的方式进行评测,即逐条对搜索结果进行等级的打分。比如在Google搜索到一个词,得到5个结果。我们对这些结果进行3个等级的区分:Good、Fair、Bad,对应的分值分别是3、2、1。假设这5个结果的分值分别是3、1、2、3、2。
使用DCG这个统计方法有两个前提:
(1) 在搜索页面中,相关度越高的结果排在前面越好。
       (2) 在PI标注时,等级高的结果比等级低的结果好。
在一个搜索结果的list里面,假设有两个结果的评级都是Good,但是第一个排在第一位,第二个排在第40位,虽然等级是一样的,但排在40位的那个结果被用户看到的概率比较小,对整个页面的贡献也要比第一个结果小很多。所以第二个结果的得分应该有所减少。DCG的计算公式如下:
其中,就是第 i 个结果的得分。 
2. NDCG
因为不同的搜索结果的数量很可能不相等,所以不同搜索的DCG值不能直接做对比。解决的方法是比较NDCG。NDCG的定义如下:
IDCG(Ideal DCG),即理想的DCG。举上面的例子来说,5个搜索结果的分值是3、1、2、3、2,那么DCG = 3 + (1+1.26+1.5+0.86 )=7.62。
而IDCG下的分值排列顺序是3、3、2、2、1,所以IDCG=3 + (3+1.26+1+0.43)=8.69。
所以,NDCG = DCG / IDCG = 0.88。
二、AUC
1. ROC曲线
ROC分析的是二元分类模型,即输出结果只有两种类别的模型。ROC空间将伪阳性率(FPR,False Position Rate)定为X轴,真阳性率(TPR,True Position Rate)定为Y轴。
 TPR = TP / ( TP + FN),表示在所有实际为阳性的样本中,被正确判断为阳性的比例。(TP:真阳性,FN:伪阴性)
FPR = FP / ( FP + TN),表示在所有实际为阴性的样本中,被错误判断为阳性的比例。(TN:真阴性,FP:伪阳性)
对于包含100个阳性和100个阴性的样本,以下是4个分类器的结果:
其中,ACC表示准确率。可以把这四个分类器映射成ROC空间中的一个点,如下图所示:
可以发现两个规律:(1) 越靠近左上角的点,准确率越高。(2) 如果点位于(0,0)和(1,1)的连线下方,那么一个有效的补救方法是把所有预测结果反向(即,如果输出结果为正类,则最终判定为负类;如果输出结果为负类,则判定为正类)。
在同一个分类器内,设置不同的阈值则会产生不同的坐标,这些坐标连成的曲线叫做ROC曲线
当阈值被设定为最高时,所有的样本都被预测为阴性,所以FP=0,TP=0,此时的FPR = FP / (FP+TN)=0,TPR = TP / (TP+FN) =0。这是坐标为(0,0)。
当阈值被设定为最低时,所有样本都被预测为阳性,同理可得:FPR=1,TPR=1,坐标为(1,1)。所以ROC曲线经过了(0,0)和(1,1)。
2. AUC
ROC曲线示例如下:
为了比较分类器的好坏,就将每个曲线下的面积作为比较,面积越大,则分类器效果越好。其中,这个面积就叫做AUC,全称是Area Under the roc Curve(ROC曲线下面积)

NDCG、AUC介绍相关推荐

  1. ROC和AUC介绍以及如何计算AUC(转载+自己重新排版整理)

    ROC(Receiver Operating Characteristic) 曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见[2]. 这篇博文简 ...

  2. ROC和AUC介绍以及如何计算AUC

    转自: http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operating Characteristic)曲 ...

  3. matlab计算auc,ROC和AUC介绍以及如何计算AUC

    ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见这里.这篇博文简单介绍 ...

  4. python画roc曲线_使用Python画ROC曲线以及AUC值

    AUC介绍 AUC (Area Under Curve)是机器学习二分类模型中非常常用的评估指标,相比于 F1-Score 对项目的不平衡有更大的容忍性,目前常见的机器学习库中(比如 scikit-l ...

  5. 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率

    北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习 快速带你晋级阅读全文> 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分 ...

  6. ROC曲线与AUC区域的理解与实践

    Receiver Operating Characteristic Area Under the Curve (ROC and AUC). 如何向别人解释 ROC AUC 对评价机器学习算法的意义: ...

  7. 【深度学习-机器学习】分类度量指标 : 正确率、召回率、灵敏度、特异度,ROC曲线、AUC等

    来源于博文:https://blog.csdn.net/tanzuozhev/article/details/79109311 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指 ...

  8. 【杂纪】从ROC曲线到AUC值,再到Mann–Whitney U统计量

    统计检验中的两类错误 在进行假设检验时,分别提出原假设(Null Hypothesis)和备择假设(Alternative Hypothesis),检验结果可能出现的两类错误: 原假设实际上是正确的, ...

  9. 分类性能度量指标:ROC曲线、AUC值、正确率、召回率、敏感度、特异度

    在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分的样例比例.实际上,这样的度量错误掩盖了样例如何被分错的事实.在机器学习中,有一个普遍适用的称为混淆矩阵 ...

  10. ROC原理介绍及利用python实现二分类和多分类的ROC曲线

    对于分类器,或者说分类算法,评价指标主要有precision,recall,F-score1,以及即将要讨论的ROC和AUC.本文通过对这些指标的原理做一个简单的介绍,然后用python分别实现二分类 ...

最新文章

  1. aspen软件对电脑的要求_BIM软件对电脑配置的要求——Fuzor软件对电脑配置的要求...
  2. keras卷积层用法API
  3. java rmi 原理和使用浅析
  4. python学习必会知识点:对文件操作详解
  5. esp8266环境搭建
  6. 【渗透过程】嘉缘网站 --测试
  7. LeetCode之Fizz Buzz
  8. 前端学习(1674):前端系列实战课程之手风琴效果
  9. 前端学习(869):高级事件导读
  10. Linux Socket通信 C/S模型
  11. Numpy.where()
  12. QT设置相对路径最简单方法
  13. [Android Pro] app_process command in Android
  14. 用python制作特效_python 制作影视动画、电影特效工具
  15. linux wgei目录,近 100 个 Linux 常用命令大全
  16. WPF Resource资源
  17. VCL组件DevExpress VCL v21.2 - 甘特图、网格控件升级
  18. python 头条视频_Python视频爬虫实现下载头条视频
  19. 优雅地使用 C++ 制作表格:tabulate
  20. 从Q2财报看百度的转型三部曲

热门文章

  1. jmeter元件的作用域与执行顺序
  2. Python 判断字符属于数字、字母、空格
  3. 简单易懂实例说明如何设计子网掩码
  4. silverlight打开和保存文件
  5. eclipse maven 打war包的几种方式
  6. Sql Server对时间(月、周)的操作
  7. 排序算法之二 插入排序(C++版本)
  8. springboot整合postgresql_SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子-阿里云开发者社区...
  9. 怎么在服务器跑sql文件,服务器mysql数据库如何运行脚本
  10. c# export server 调用sql_C# 如何调用 SPL 脚本