机器学习之分类器性能指标之ROC曲线、AUC值

http://www.cnblogs.com/dlml/p/4403482.html

分类器性能指标之ROC曲线、AUC值

一 roc曲线

1、roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性。

横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-Specificity)

纵轴:真正类率(true postive rate TPR)灵敏度,Sensitivity(正类覆盖率)

2针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况.

(1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)

(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)

(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)

(4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)

TP:正确的肯定数目

FN:漏报,没有找到正确匹配的数目

FP:误报,没有的匹配不正确

TN:正确拒绝的非匹配数目

列联表如下,1代表正类,0代表负类:

由上表可得出横,纵轴的计算公式:

(1)真正类率(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。Sensitivity

(2)负正类率(False Postive Rate)FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity

(3)真负类率(True Negative Rate)TNR: TN/(FP+TN),代表分类器预测的负类中实际负实例占所有负实例的比例,TNR=1-FPR。Specificity

假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。

如下面这幅图,(a)图中实线为ROC曲线,线上每个点对应一个阈值。

横轴FPR:1-TNR,1-Specificity,FPR越大,预测正类中实际负类越多。

纵轴TPR:Sensitivity(正类覆盖率),TPR越大,预测正类中实际正类越多。

理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好。

二 如何画roc曲线

假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。

接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:

AUC(Area under Curve):Roc曲线下的面积,介于0.1和1之间。Auc作为数值可以直观的评价分类器的好坏,值越大越好。

首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。

三 为什么使用Roc和Auc评价分类器

既然已经这么多标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。下图是ROC曲线和Presision-Recall曲线的对比:

在上图中,(a)和(c)为Roc曲线,(b)和(d)为Precision-Recall曲线。

(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,(c)(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果,可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线变化较大。

参考:

http://alexkong.net/2013/06/introduction-to-auc-and-roc/

http://blog.csdn.net/abcjennifer/article/details/7359370

分类:  机器学习

机器学习之分类器性能指标之ROC曲线、AUC值相关推荐

  1. ROC曲线 AUC值

    全面了解ROC曲线 一. 初识ROC曲线 1. ROC的前世今生: ROC的全称是"受试者工作特征"(Receiver Operating Characteristic)曲线,  ...

  2. R语言|求ROC和AUC值

    测试 junjun 2016年9月29日 1.求ROC和AUC值 #方法一:ROCR包中主要是两个class:prediction和performance.前者是将预测结果和真实标签组合在一起,生成一 ...

  3. 分类算法如何绘制roc曲线_机器学习性能指标之ROC和AUC理解与曲线绘制

    一. ROC曲线 1.roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false po ...

  4. 机器学习分类模型评价指标之ROC 曲线、 ROC 的 AUC 、 ROI 和 KS

    前文回顾: 机器学习模型评价指标之混淆矩阵 机器学习模型评价指标之Accuracy.Precision.Recall.F-Score.P-R Curve.AUC.AP 和 mAP 图裂的话请参考:ht ...

  5. 数据挖掘中的指标--分类器中的ROC曲线及相关指标(ROC、AUC、ACC)

    ROC又叫受试者工作特征曲线.它是用来验证一个二分类器模型的性能指标,也就是说,给出一个模型,输入一个模型,输入已知正负类的一组数据,并通过对比模型对改组数据进行的预测,衡量这个模型的性能. 相关内容 ...

  6. python画出roc曲线 auc计算逻辑_Python画ROC曲线和AUC值计算

    前言 ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣.这篇文章将先简单的介绍ROC和AU ...

  7. python画出roc曲线 auc计算逻辑_ROC及AUC计算方法及原理

    1.非均衡分类问题 在大多数情况下不同类别的分类代价并不相等,即将样本分类为正例或反例的代价是不能相提并论的.例如在垃圾邮件过滤中,我们希望重要的邮件永远不要被误判为垃圾邮件,还有在癌症检测中,宁愿误 ...

  8. 模型评价指标——混淆矩阵/ROC曲线/AUC曲线

    一.混淆矩阵 TP = True Postive真阳性:FP = False Positive假阳性 :FN = False Negative假阴性:TN = True Negative真阴性 ① 精 ...

  9. python画出roc曲线 auc计算逻辑_从scikitlearn(sklearn)的多类数据计算AUC和ROC曲线?...

    您需要使用label_binarize函数,然后您可以绘制一个多类ROC. 使用虹膜数据的示例:import matplotlib.pyplot as plt from sklearn import ...

最新文章

  1. 技术流 | 手把手教你用Python设计一个命令行界面
  2. 论网络营销在我国的发展
  3. mysql中的float_mysql里float是什么东西
  4. 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速Web开发框架设计
  5. Spring Android 1.0.0.M3 发布
  6. MRP的数据处理-华北水利水电大学(作业)
  7. 2019 ACOUG China Tour-北京站3.23与您相约!
  8. c语言http协议头字符串,c语言http请求解析表单内容
  9. 设计模式---外观模式(C++实现)
  10. WebService—实现接口发布和客户端调用的几种方式
  11. Ant Design Pro图片上传
  12. 如何在Keil中的添加和使用STC芯片型号
  13. phpstudy如何创建mysql_PHPStudy怎样创建数据库
  14. Scene窗口—Scene视图导航
  15. 计算机数据库安全研究目的,浅论计算机数据库安全管理
  16. css锚点定位不准确问题
  17. 三星android平板,三星也不忘Android平板,或推带虹膜识别的Galaxy Tab S4
  18. win10 Bat脚本获取管理员权限
  19. surface pen未接触屏幕就有反应 解决办法
  20. 日常英语口语收集汇总

热门文章

  1. 物联网通信_闲聊协议
  2. dbmsxplan oracle_Oracle dbms_xplan
  3. 昨晚罗老师的手机发布了,传闻发布会的门票就卖了
  4. star- Transformer
  5. CPU、主存与辅存的关系
  6. AHB2APB桥接器设计(1)——基本原理
  7. Qt通过QStorageInfo获取磁盘大小,linux下可根据路径获取挂接磁盘的大小,而非获取所有磁盘大小的总和
  8. 刷固件让华硕Z87-K老主板支持nvme固态
  9. 想要了解大厂PM吗,来看看这几款软件
  10. 等价无穷小代换易混淆的概念错误!!用泰勒展开,以后!