学习笔记,如有侵权,联系删除。

参考:https://blog.csdn.net/pzy20062141/article/details/48711355

一、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)

列联表如下,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越大效果越好。

2. 如何画roc曲线

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

接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。从第一个样本开始,设该样本的Score值为阈值,则该样本及之后的样本(均比该样本概率值小)判为负样本,即所有样本判为全负,计算得TPR=FPR=0,即ROC曲线(0,0)点;再选择第二个样本点的Score作为阈值,大于等于该阈值的样本(在该样本之前)判为正样本,小于该阈值的判为负样本,计算TPR和FRP,可在ROC图画出该点。

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

两种ROC曲线画法:

上面是将样本的预测Score从大到小排列,从第一个Socre作为阈值,依次遍历所有Score。先得出全判负类时TPR,FPR的值,最后得出全判正类的TPR,FPR的值,画ROC曲线对应的先画出(0,0)点,最后再画出(1,1)点;

另外一种方法是,将样本的预测Score从小到大排列,从第一个Socre作为阈值,依次遍历所有Score。先得出全判正类时TPR,FPR的值,最后得出全判负类的TPR,FPR的值,画ROC曲线对应的先画出(1,1)点,最后再画出(0,0)点。

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

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

二、AUC计算

1.  最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期 Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯 下面的面积之和。这样,我们先把score排序(假设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么 做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此 时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比较麻烦的。

2. 一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test是等价的。这个等价关系的证明暂不证明。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。有了这个定义,我们就得到了另外一中计 算AUC的办法:得到这个概率。我们知道,在有限样本中我们常用的得到概率的办法就是通过频率来估计之。这种估计随着样本规模的扩大而逐渐逼近真实值。这 和上面的方法中,样本数越多,计算的AUC越准确类似,也和计算积分的时候,小区间划分的越细,计算的越准确是同样的道理。具体来说就是统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N) 
   3.   第三种方法实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score从大到小排序,然后令最大score对应的sample 的rank为n,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去M-1种两个正样本组合的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即

公式解释:

1、为了求的组合中正样本的score值大于负样本,如果所有的正样本score值都是大于负样本的,那么第一位与任意的进行组合score值都要大,我们取它的rank值为n,但是n-1中有M-1是正样例和正样例的组合这种是不在统计范围内的(为计算方便我们取n组,相应的不符合的有M个),所以要减掉,那么同理排在第二位的n-1,会有M-1个是不满足的,依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1

2、根据上面的解释,不难得出,rank的值代表的是能够产生score前大后小的这样的组合数,但是这里包含了(正,正)的情况,所以要减去这样的组(即排在它后面正例的个数),即可得到上面的公式

另外,特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。

ROC曲线与AUC计算总结相关推荐

  1. 机器学习基础:ROC曲线与AUC计算详解

    AUC & ROC AUC是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有损失函数(logloss),正确率(accuracy),准确率(precision),但相比之下AU ...

  2. 模型评估——ROC曲线与AUC计算(真正率假正率)

    评估方法: 在学习得到的模型投放使用之前,通常需要对其进行性能 评估.为此, 需使用一个"测试集"(testing set)来测试 模型对新样本的泛化能力,然后以测试集上的&quo ...

  3. 为多模型寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)、结果数据保存

    使用randomsearchcv为多个模型寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲 ...

  4. matlab roc曲线,MATLAB画ROC曲线,及计算AUC值

    标签: 根据决策值和真实标签画ROC曲线,同时计算AUC的值 function auc = roc_curve(deci,label_y) %%deci=wx+b, label_y, true lab ...

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

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

  6. 寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)

    使用randomsearchcv寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲线.AUC ...

  7. matlab计算prc曲线auc面积,MATLAB画ROC曲线,及计算AUC值

    根据决策值和真实标签画ROC曲线,同时计算AUC的值 步骤: 根据决策值和真实标签画ROC曲线,同时计算AUC的值: 计算算法的决策函数值deci 根据决策函数值deci对真实标签y进行降序排序,得到 ...

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

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

  9. ROC曲线和AUC值的计算

    转载自:https://zhuanlan.zhihu.com/p/25212301,本文只做个人记录学习使用,版权归原作者所有. 1.混淆矩阵 混淆矩阵如下图所示,分别用0和1代表负样本和正样本.FP ...

最新文章

  1. 成功解决 Exception: URL fetch failure on https://s3.amazonaws.com/img-datasets/mnist.npz: None -- [Errno
  2. OpenCV改变图像的对比度和亮度
  3. 【Jetson Nano学习笔记】2. ORB-SLAM3及ZED 2i驱动安装
  4. RabbitMQ入门学习系列(六) Exchange的Topic类型
  5. Mac的搜狗输入法和QQ输入法加入⌘⌥⌃⇧自定义短语
  6. 论MySQL的监控和调优
  7. 腾讯云TStack与IBM LinuxONE互认证
  8. tiledmap 图块属性_TiledMap详解
  9. 《数据挖掘导论》绪论
  10. 全球国家或地区 及其 区号
  11. 使用环绕通知对目标方法进行增强—摘抄笔记
  12. 对接微信二维码支付(native方式)
  13. Android监听系统来电,弹出提示窗口
  14. 聚沙成塔的分布式云存储
  15. java,内存,存储
  16. 颜色大全英语python_Python颜色分类及格式
  17. 证件照半身照合成服装PNG素材-463张
  18. 挑战杯三创互联网+创青春等创新创业类竞赛国家级作品案例模板全套资料分享
  19. UNP卷2读书笔记 第一部分 简介
  20. Word中mathtype公式显示不全的解决办法

热门文章

  1. uniapp - 打包(App、H5)
  2. uniapp打包成h5页面
  3. 不骗你,没读这一篇,你不可能懂二分
  4. java图形化五子棋总结,Java从此丰富多彩-五子棋项目总结
  5. HTML5期末大作业:响应式旅游风景家乡网站设计——衢州旅游网站(5页) HTML+CSS+JS 旅游网页设计成品 dw旅游景点介绍网页制作
  6. python计算速度和电脑有关系吗_Python中对数计算的基础会影响速度吗?
  7. Boost用法split
  8. ASP.NET 实现flv流媒体播放
  9. 【物联网项目系列】springboot 实现mqtt物联网
  10. [摘抄-Java-学习中]Java 图片叠加水印文字自动换行