AUC值越大_AUC的一般计算和近似计算方式
AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。
本文介绍AUC的一般计算方式,以及AUC的近似计算方式。
文章内容仅供学习使用,如有侵权请联系作者删除。
点击蓝字关注我哦!
AUC的一般计算方式
标准方式:AUC即ROC曲线下面的面积。
在了解AUC计算之前,必须想知道ROC和混淆矩阵的定义[3]。
混淆矩阵涉及四个概念:
预测类别为1的称为Positive(阳性),预测类别为0的称为Negative(阴性)。
真实类别为1的称为True(真),真实类别为0的称为False(伪)。
组合起来就会得到:
进一步得到True Positive(真阳:即真实label为1,预测也为1)、False Positive(伪阳:即真实label为0,预测为1)
然后可以计算出真阳率(预测为1样本占所有真实为1的样本比例)和伪阳率(预测为1样本占所有真实为0的样本比例):
接下来说ROC:
ROC曲线的横轴是FPRate,纵轴是TPRate分类器给出预测的概率之后,我们需要设定已给阈值来把各个预测值划分为预测为正/负。即,小于等于这个阈值的所有样本预测为负,大于这个阈值的样本预测为正。
ROC计算的是每一个Threshold对应的一组True Positive Rate和False Positive Rate。知乎作者:太空来的小土豆
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.metrics import roc_curve, auc# Calculate 'True Positive Rate' and 'False Positive Rate' of each thresholdscores = np.array([ 0.95, 0.9, 1, 0.9, 0.9, 0.8, 0.8, 0.7, 0.7, 0.7, 0.7, 0.6, 0.6, 0.6, 0.6, 0.5, 0.5, 0.5, 0.5, 0.4, 0.3, 0.3, 0.3, 0.3, 0.2, 0.2, 0.0, 0.2, 0.1, 0.11])true_values = np.array([0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1])fpr, tpr, thresholds = roc_curve(true_values, scores, pos_label=1)d = {'Threshold': thresholds, 'True Positive Rate': tpr, 'False Positive Rate': fpr}metric_table = pd.DataFrame(d, columns = ['Threshold', 'True Positive Rate', 'False Positive Rate'])metric_table
可以看到,这里的threshold就是刚刚样本预测值中的那些唯一值,即:set(scores)
接下来绘制roc曲线
# Plot ROC Curveroc_auc = auc(fpr, tpr)plt.figure()plt.plot(fpr, tpr, color='red', lw=2, marker='o', label='ROC curve (area = %0.2f)' % roc_auc)x = [0, 1]y = [0, 1]plt.plot(x, y, color='black', lw=2, linestyle='--')plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.05])plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title('ROC Curve')plt.legend()plt.grid(alpha=0.2)plt.show()
AUC就是ROC曲线下的面积,在这个例子中就算出来就是0.63.
AUC的近似计算
AUC有一个近似计算的方法,大概的思想就是:AUC的含义是模型预测正确大于预测错误的概率,从概率的角度出发,统计给出的数据(好坏标签和预测概率或分数)中预测正确比预测错误大的概率是多大[2]。这里虽然是近似计算,但经过验证计算结果跟实际差别非常小,研究者验证的差别是千分位的级别,可以说非常准确了[2]。
这个公式具体是什么含义呢?
rank_i:表示第i条样本的序号。(概率得分从小到大排,排在第rank个位置)
M,N: 分别是正样本的个数和负样本的个数
\SUM_{i \in positiveClass} 表示只把正样本的序号加起来。
举个例子[1]:
将这个例子排序。按概率排序后得到:
按照上面的公式,只把正样本的序号加起来也就是只把样本C,D的rank值加起来后减去一个常数项
而我们直接用刚刚基于roc曲线下面积的计算方式,结果是相同的:
当然,我们需要注意出现得分一致的情况。
下面举一个例子说明[1]:
在这个例子中,我们有4个取值概率为0.5,而且既有正样本也有负样本的情况。计算的时候,其实原则就是相等得分的rank取平均值。具体来说如下:先排序:
这里需要注意的是:相等概率得分的样本,无论正负,谁在前,谁在后无所谓。
由于只考虑正样本的rank值:
对于正样本A,其rank值为7
对于正样本B,其rank值为6
对于正样本E,其rank值为(5+4+3+2)/4
对于正样本F,其rank值为(5+4+3+2)/4
最后我们得到:0.833333
而我们直接用刚刚基于roc曲线下面积的计算方式,结果是相同的:
参考文献:
[1] AUC的计算方法
https://blog.csdn.net/qq_22238533/article/details/78666436
[2] AUC,ROC快速计算——Python代码
https://blog.csdn.net/sinat_30715661/article/details/89160969
[3] 如何理解机器学习和统计中的AUC?
https://www.zhihu.com/question/39840928
[4] AUC计算方法总结
https://blog.csdn.net/pzy20062141/article/details/48711355
AUC值越大_AUC的一般计算和近似计算方式相关推荐
- AUC值越大_AUC,ROC 讲解
面试的时候,一句话说明AUC的本质和计算规则: AUC:一个正例,一个负例,预测为正的概率值比预测为负的概率值还要大的可能性. 所以根据定义:我们最直观的有两种计算AUC的方法 1:绘制ROC曲线,R ...
- AUC值越大_模型评价——准确率、精确率与召回率与F值、宏平均与微平均、ROC曲线与AUC值...
在上一篇文章中(baiziyu:模型评价--训练误差与测试误差.过拟合与欠拟合.混淆矩阵)主要介绍了模型评价涉及的基本概念,本节给出一些常用的评价指标.这些指标大致可以分为三类,第一大类是普通的准确率 ...
- AUC值越大_一文看懂ROC、AUC
评测指标是衡量一个算法是否出色的一个重要部分,好的指标能让我们这些炼丹学徒知道,练出来的丹药是否有效果.那么在机器学习中有哪些值得一探究竟的指标呢?本文就PR图,ROC.AUC.mAP这4个方面进行详 ...
- AUC值越大_「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC
大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP.TN.FN),ROC曲线和AUC. 本节介绍了如何使用逻辑回归来执行分类任务, 并探讨了如何评估分类模型的有效性. 我们 马上学三点 ...
- 交叉熵损失函数的通用性(为什么深度学习DL普遍用它):预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 “ 惩罚 ” 越大,而且是非线性增大是一种类似指数增长的级别,结论:它对结果有引导性
交叉熵损失函数的通用性(为什么深度学习DL普遍用它):预测输出与 y 差得越多,L 的值越大,也就是说对当前模型的 " 惩罚 " 越大,而且是非线性增大是一种类似指数增长的级别,结 ...
- Gamma值越大,图像越暗
何为Gamma校正:http://blog.csdn.net/lichengyu/article/details/8457425
- ROC曲线和AUC值的计算
转载自:https://zhuanlan.zhihu.com/p/25212301,本文只做个人记录学习使用,版权归原作者所有. 1.混淆矩阵 混淆矩阵如下图所示,分别用0和1代表负样本和正样本.FP ...
- 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习 快速带你晋级阅读全文> 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分 ...
- 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1
文章目录 二分类的评价指标 一.混淆矩阵与 TP.TN.FP.FN 二.准确率.精确率.召回率.F1值 三.P-R 曲线 四.ROC 曲线.AUC 值 五.P-R曲线和ROC曲线有什么区别,如何选择? ...
最新文章
- 1-1 分配内存资源给容器和POD
- android 序列化_Android高级架构进阶之数据传输与序列化
- 怀化学院计算机科学张显老师,怀化学院:计算机“华山论剑”获佳绩
- Android NDK编程小试---实现java和c语言的互掉
- android 指定语言的资源,Android国际化多语言切换
- sqoop从mysql导入hdfs_sqoop 从mysql导入数据到hdfs、hive
- springMVC 控制层添加异步线程
- Elasticsearch(六) java代码操作Es进行高级查询match、match_all
- Unity枚举和字符串的相互转换
- Elasticsearch查询速度为什么这么快?
- hadoop2.6.2分布式环境搭建
- 运维的日常:如果回到18岁,你还会选择运维行业么?
- 简单图形的输入输出练习
- python sin_Python入门之三角函数sin()函数实例详解
- go vender 的环境搭建和使用
- 说说大型网站可伸缩性架构的设计原理
- Java中创建对象有哪几种方式,Java 中创建对象的4种方式--Java学习网
- android实现异网双卡双待识别运营商网络
- 怎么把照片变年轻?这两个照片变年轻小妙招教给你
- linux下,Telnet连接输入正确的用户名和密码后,却还一直提示输用户名和密码,解决方案。