本文转自:https://mp.weixin.qq.com/s/a-SL1peqyw9eKyjzFthvlA
二分类模型预测的结果是否足够好,ROC和AUC是重要指标。

1. T、F、P、N、R

首先我们先了解这四个概念:

T:True,真的

F:False,假的

P:Positive,阳性

N:Negative,阴性

R:Rate,比率,和上面四个没直接关系

比如说看病这个事情:

一个人得病了,但医生检查结果说他没病,那么他是假没病,也叫假阴性(FN)

一个人得病了,医生检查结果也说他有病,那么他是真有病,也叫真阳性(TP)

一个人没得病,医生检查结果却说他有病,那么他是假有病,也叫假阳性(FP)

一个人没得病,医生检查结果也说他没病,那么他是真没病,也叫真阴性(TN)

这四种结局可以画成2 × 2的混淆矩阵:

FN、TP、FP、TN可以这样理解:第二个字母(N或P)是医生说的,第一个字母(T或F)是对医生说法的肯定(真没病真阴TN,真有病真阳TP)或否定(假有病假阳FP,假没病假阴FN)。

2. 查出率TPR和查错率FPR

R是Rate(比率),那么:

TPR,真阳率等于真阳数量除以真阳加假阴,就是真的有病并且医生判断也有病的病人数量除以全部真有病的人(真有病医生也说有病的真阳+真有病医生却说没病的假阴):

FPR,假阳率等于假阳数量除以假阳加真阴,就是没病但医生说有病的病人数量除以全部实际没病的人(没病但医生说有病的+没病医生也说没病的):

所以说,TPR真阳率是对有病的人的查出率,有病的人里面查出来多少个;而FPR假阳率则是对没病人员的误检率,没病的人里面误检了多少个。
ACC,Accuracy,精准度,有病被检查出来的TP是检测对了,没病也检测健康的TN也是检测对了,所有检测对的数量除以全部数量就是精准度:

3. 案例计算

假如说我们编写了一个算法M,它能够根据一系列的属性(比如身高、爱好、衣着、饮食习惯等)来预测一个人的性别是男还是女。

然后我们有10个人属性组数据让算法M来预测,这10个人的真实性别和预测结果如下:

预测值中0代表女性,1代表男性,数字越大越接近男性特征,数字越小越接近女性特征。如果我们设定区分男女的阈值是0.5,那么预测值大于0.5的都是P正向男性,小于0.5都是N负向女性。

那么,真实6个男人中有[1,3,5,8,9]这5个都查出来了,算法M的查出率TPR=5/6=0.833;真实4个女性中6号被查错,所以误检率FPR=1/4=0.25;精度是ACC=(5+3)/10=0.8。

但是注意,如果我们修改阈值等于0.4,那么就会变为6个男人全被检出TPR=1;而女性则被误检2个FPR=0.5;精度仍然是0.8。

4. 随机算法

假设我们有一个庸医,根本不懂医术,当病人来检查是否有病的时候,他就随机乱写有病或者没病,结果呢,对于所有真实有病的,庸医也能正确检查出一半,就是TPR=0.5,同样对于没病的也是一半被误检,就是FPR=0.5。

这个庸医的“随机诊法”原理上总能得到相等的查出率和误检率,如果我们把FPR当做坐标横轴,TPR当做数轴,那么“随机诊法”对应了[0,0]到[1,1]的那条直线。

如图所示,越靠近左上角的情况查出率越高,查错率越低,[0,1]点是最完美的状态。而越靠近右下角,算法质量越低。

注意图中右下角C点,这里查错率高,查出率低,属于很糟糕的情况;但是如果我们把C点沿红色斜线对称上去成为C’点,那就很好了。——所以,如果你的算法预测结果总是差的要死,那么可以试试看把它颠倒一下,负负得正,也许就很好了。

5. ROC曲线

ROC(Receiver Operating Characteristic curve)接受者操作特征曲线。

上面我们都只是把从一组预测样本得到的[FPR,TPR]作为一个点描述,并且我们知道阈值的改变会严重影响FPR和TPR,那么,如果我们把所有可能的阈值都尝试一遍,再把样本集预测结果计算得到的所有[FPR,TPR]点都画在坐标上,就会得到一个曲线:

一般阈值范围是在0~1之间,1表示一个分类(男,或者有病),0表示另外一个分类(女,或者无病)。

在这个图中,注意:

横竖都不是阈值坐标轴,这里没有显示阈值。

蓝色线更加靠近左上角,比红色线更好。

ROC曲线上左侧的点好解释,误查率FPR越低,查出率TRP越高,自然是好的;但右上角的怎么解释?误查率和查出率都很高。——想象一下,有个庸医把阈值调的很高比如0.99,那么导致算法推测出来的都是男生,没有女生,这样的情况当然查出率很高(所有男生都查出来了),误查率也很高(所有女生都被当成男生了)。

6. AUC

ROC曲线的形状不太好量化比较,于是就有了AUC。

AUC,Area under the Curve of ROC (AUC ROC),就是ROC曲线下面的面积。如上图,蓝色曲线下面的面积更大,也就是它的AUC更大。

如图,左侧的红色折线覆盖了下面整个方形面积,AUC=1;中间的曲线向左上方凸起,AUC=0.8;右边的是完全随机的结果,占一半面积,AUC=0.5。

AUC面积越大,算法越好。

当我们写好算法之后,可以用一个测试集来让这个算法进行分类预测,然后我们绘制ROC曲线,观察AUC面积,计算ACC精度,用这些来对算法的好坏进行简单评估。

(推荐)彻底理解ROC曲线和AUC值相关推荐

  1. ROC-AUC 浅谈理解ROC曲线和AUC值

    这是一个评价二分类器的指标,特点是不受不平衡数据集的影响.但事实理解起来有点难.下面先介绍ROC-AOC是什么,然后再谈谈我的一种理解.ps,理解这个指标,首先得对经典的F1, Recall,Prec ...

  2. 如何理解ROC曲线和AUC值

    1.ROC曲线下的面积就是AUC值. 2.如何绘制ROC曲线,通过改变不同的阈值,每个阈值都可以得到一个混淆矩阵,通过混淆矩阵,可以计算出假阳性率和真阳性率.即该坐标系下的一个点.将阈值从0,调整到1 ...

  3. 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1

    文章目录 二分类的评价指标 一.混淆矩阵与 TP.TN.FP.FN 二.准确率.精确率.召回率.F1值 三.P-R 曲线 四.ROC 曲线.AUC 值 五.P-R曲线和ROC曲线有什么区别,如何选择? ...

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

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

  5. 机器学习中的度量指标:ROC曲线,AUC值,K-S曲线

    机器学习中的度量指标:ROC曲线,AUC值,K-S曲线 首先,回顾一下二分类问题的一些定义: 预测 1 0 实 1 TP FN ​际 0 FP TN 上表中,四个项分别为:TP真阳性:FN假阴性:FP ...

  6. 分类模型-评估指标(2):ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】【AUC的计算方式:统计所有正负样本对中的正序对】

    评价二值分类器的指标很多,比如precision.recall.F1 score.P-R曲线等.但这些指标或多或少只能反映模型在某一方面的性能.相比而言,ROC曲线则有很多优点,经常作为评估二值分类器 ...

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

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

  8. 分类器性能度量指标之ROC曲线、AUC值

    目录 概述 混淆矩阵(Confusion matrix) ROC曲线 AUC(Area under the ROC curve) AUC能拿来干什么 总结 参考资料: 概述 二分类问题在机器学习中是一 ...

  9. AUC值越大_模型评价——准确率、精确率与召回率与F值、宏平均与微平均、ROC曲线与AUC值...

    在上一篇文章中(baiziyu:模型评价--训练误差与测试误差.过拟合与欠拟合.混淆矩阵)主要介绍了模型评价涉及的基本概念,本节给出一些常用的评价指标.这些指标大致可以分为三类,第一大类是普通的准确率 ...

最新文章

  1. 「机器学习速成」过拟合的风险和泛化
  2. 如何使方法行数达到最优、常量与变量如何优雅的定义?
  3. linux下oracle修改最大连接数,linux修改TCP最大连接数
  4. vb光环褪去java、c/c++/c#成编程主流
  5. linux更新函数,linux系统不同对象升级方法详细介绍
  6. Cytoscape可视化物种分类树结构
  7. 计算机组成原理闭卷,《计算机组成原理》试卷A (闭卷)
  8. Python:通过命令行发送新浪微博
  9. [Python]从哪里开始学习写代码(未完待续)
  10. python2和python3(导包)自定义包并导入之
  11. 红宝书(javascirpt高级程序设计)学习笔记(一)
  12. 关键路径算法——AOE网
  13. Hp-Socket高性能网络库介绍零--整体结构
  14. pythonwin7下载教程_如何在win7下安装Python及配置!python win7下载教程
  15. 随机指标计算机程序,MACD/随机指标组合应用分析
  16. Eclipse(Windows)下第一个动态Java Web项目(Tomcat部署)
  17. @所有人,清明节借势文案素材大礼包已到!
  18. 【学习笔记】从零开始造一个汗液检测穿戴设备——01.葡萄糖电化学检测
  19. NLP机器阅读理解:四大任务及相应数据集、比赛
  20. 听说虾皮、斗鱼要求校招生转 Go 了…

热门文章

  1. 数学建模竞赛常用软件培训2
  2. VisualStudio20008快捷键大全
  3. MVC框架简易留言板实例
  4. 力天创见区域客流人数统计
  5. windows开机启动
  6. MemoryStream 的一些用法
  7. context.Context
  8. 线上比赛相关规则补充说明
  9. 基于英飞凌TLE8242-2L的开关/比例电磁阀驱动电路
  10. 【历史上的今天】10 月 29 日:互联网的正式诞生;MariaDB 发布首个版本;“天河一号”研制成功