AUC值越大_AUC的一般计算和近似计算方式

article/2025/5/1 8:04:00
d85d0e0aba6fd810686e3dc2ce5409c1.png

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

本文介绍AUC的一般计算方式,以及AUC的近似计算方式。

文章内容仅供学习使用,如有侵权请联系作者删除。

2e1f327c054fd7f65c6e3d2ab0266ae9.png

点击蓝字关注我哦!

AUC的一般计算方式

标准方式:AUC即ROC曲线下面的面积。

在了解AUC计算之前,必须想知道ROC和混淆矩阵的定义[3]。

混淆矩阵涉及四个概念:

  • 预测类别为1的称为Positive(阳性),预测类别为0的称为Negative(阴性)。

  • 真实类别为1的称为True(真),真实类别为0的称为False(伪)。

组合起来就会得到:

0b3441a385c6aa1f4437d1df02da897d.png

进一步得到True Positive(真阳:即真实label为1,预测也为1)、False Positive(伪阳:即真实label为0,预测为1)

然后可以计算出真阳率(预测为1样本占所有真实为1的样本比例)和伪阳率(预测为1样本占所有真实为0的样本比例):

3330353abbe5cfd44674fae8427b07a3.png

接下来说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

7a2eee519a557ec184df4bd1a093db90.png

可以看到,这里的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()

019d74e2f36b42e81bd3d26fb0e48f45.png

AUC就是ROC曲线下的面积,在这个例子中就算出来就是0.63.

AUC的近似计算

AUC有一个近似计算的方法,大概的思想就是:AUC的含义是模型预测正确大于预测错误的概率,从概率的角度出发,统计给出的数据(好坏标签和预测概率或分数)中预测正确比预测错误大的概率是多大[2]。这里虽然是近似计算,但经过验证计算结果跟实际差别非常小,研究者验证的差别是千分位的级别,可以说非常准确了[2]。

7d4f7f38d343fccb1c511bcadeb369f7.png

这个公式具体是什么含义呢?

  • rank_i:表示第i条样本的序号。(概率得分从小到大排,排在第rank个位置)

  • M,N: 分别是正样本的个数和负样本的个数

  • \SUM_{i \in positiveClass} 表示只把正样本的序号加起来。

举个例子[1]:

66ce51918f4cf0ed743be3a5476371db.png

将这个例子排序。按概率排序后得到:

824148c3c2ed33c9d46e6d6054993bf2.png

按照上面的公式,只把正样本的序号加起来也就是只把样本C,D的rank值加起来后减去一个常数项

f1922afa1b0d5c9e2be148891f454be4.png

而我们直接用刚刚基于roc曲线下面积的计算方式,结果是相同的:

7155e623382e624c79f011fcceab0420.png

当然,我们需要注意出现得分一致的情况。

下面举一个例子说明[1]:

c0143fb87436353c32c7a0340f573045.png

在这个例子中,我们有4个取值概率为0.5,而且既有正样本也有负样本的情况。计算的时候,其实原则就是相等得分的rank取平均值。具体来说如下:先排序:

f71e872e70c4008eca2920f52c3b5b13.png


这里需要注意的是:相等概率得分的样本,无论正负,谁在前,谁在后无所谓。

由于只考虑正样本的rank值:

对于正样本A,其rank值为7

对于正样本B,其rank值为6

对于正样本E,其rank值为(5+4+3+2)/4

对于正样本F,其rank值为(5+4+3+2)/4

最后我们得到:0.833333

8f64a6b4c9f29f9a2b015fb3ea680672.png

而我们直接用刚刚基于roc曲线下面积的计算方式,结果是相同的:

42ee558f0f2dcd206b580b926994fd66.png

参考文献:

[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


http://chatgpt.dhexx.cn/article/YtdRXj4Q.shtml

相关文章

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

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

AUC值越大_「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC

大家好,今天我们学习【机器学习速成】之 分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC。 本节介绍了如何使用逻辑回归来执行分类任务, 并探讨了如何评估分类模型的有效性。 我们 马上学三点 , 逻辑回归用作分类&#x…

AUC值越大_一文看懂ROC、AUC

评测指标是衡量一个算法是否出色的一个重要部分,好的指标能让我们这些炼丹学徒知道,练出来的丹药是否有效果。那么在机器学习中有哪些值得一探究竟的指标呢?本文就PR图,ROC、AUC、mAP这4个方面进行详细探究。 总的来说评价指标的核心得从二分类问题说起:一个类,它实际值有…

入门选手都能理解的ROC曲线与AUC值

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.ROC曲线 在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫…

AUC值得含义和计算方法

转载自:http://baijiahao.baidu.com/s?id1597939133517926460&wfrspider&forpc 机器学习备忘录 | AUC值的含义与计算方法 浮生偷闲 18-04-17 05:32 内容导读 在机器学习领域, AUC 值经常用来评价一个二分类模型的训练效果,对于许多机…

python计算偏态、极差、方差、标准差、平均数、中位数、众数

import numpy as np lists[1,2,3,4,5,6,7,8,9]print("极差:",np.max(lists)-np.min(lists))#最大值减最小值 lists_varnp.var(lists, axisNone, dtypeNone, outNone, ddof0, keepdimsnp._NoValue) print("方差:",lists_var) lists_s…

数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】

文章目录 1、极差与四分位差(R)2、方差与标准差(西格玛、V)3、偏态系数与峰态系数(SK、β)4、统计指标类型 1、极差与四分位差(R) 1)极差:称为全距&#xff…

偏态数据的观察、量化评估与处理前后的对比

在机器学习中,模型更容易从具有正态分布特性的数据中学习到有用特征。但我们经常会发现有些特征存在长尾分布,对于这种偏态分布数据,需要进行特殊的处理,本文首先观察特征分布情况,然后以量化的方式评估数据偏态程度从…

统计学学习日记:L7-离散趋势分析之偏态和峰态

一、偏态&#xff08;SK&#xff09; 1.数据偏斜程度的测度 偏态系数0为对称分布 偏态系数>0为右偏分布 偏态系数<0为左偏分布 偏态系数>1或<-1&#xff0c;被称为高度偏态分布&#xff1b;偏态系数在0.5~1或-1~-0.5之间&#xff0c;被认为是中等偏态分布&#xf…

如何处理偏态数据?

这是笔试/面试题系列的第2篇文章 在了解何为偏态数据前&#xff0c;要先从正态数据说起。 正态分布 正态分布是自然界中广泛存在的&#xff0c;我们都知道它是两头低&#xff0c;中间高&#xff0c;整个形态呈现对称钟形的一个分布&#xff0c;之所以叫正态分布&#xff0c;是…

skewness and kurtosis偏态和峰度的解释和演示、数据的偏度和峰度——df.skew()、df.kurt()

skewness (偏态) 正偏态分布(positive skewness distribution)是指频数分布的高峰偏于左侧&#xff0c;偏态系数为正值的频数分布形态。偏态分布分为正偏态和负偏态。当均值大于众数时称为正偏态&#xff1b;当均值小于众数时称为负偏态。 定义上偏度是样本的三阶标准化矩&am…

Uniapp中onShow()的应用

遇到问题&#xff1a; 在使用一些变量进行判断时&#xff0c;用完一次开始下一次判断时&#xff0c;结果会跟前一次一样&#xff0c;比如门禁中第一个房子打开后&#xff0c;切换到另外的房子&#xff0c;结果返回结果跟第一个房子一样。 原因分析&#xff1a; 用于使用了相…

uni中onLoad与onShow周期的区别

一、说明 页面周期参考网址&#xff1a;https://uniapp.dcloud.io/tutorial/page.html#lifecycle 二、通俗概括 1. onLoad先执行&#xff0c;onShow后执行 onLoad() {console.log(111); }, onShow(){console.log(222); },2. onLoad只执行一次&#xff0c;onShow监听页面可执…

uni-app小程序onShow执行两次;微信小程序onShow重复执行原因;导航栏tabBar页的onLoad函数不执行;App.vue页的onShow执行原因;onShow莫名其妙执行

1.只有五种情况会触发导航栏tabBar页的onLoad函数&#xff0c;分别是&#xff1a; –1.1&#xff1a;首次进入到导航栏tabBar页面&#xff1b; –1.2&#xff1a;从微信分享进入的导航栏tabBar页面&#xff1b; –1.3&#xff1a;识别二维码跳转到小程序的导航栏tabBar页面&…

自定义组件中,使用onLoad,onShow生命周期失效问题

的解决方法 自定义组件中&#xff0c;使用onLoad,onShow生命周期失效问题 自定义组件中&#xff0c;使用onLoad,onShow生命周期失效问题 官方文档可查阅到&#xff1a; 页面生命周期仅在page中的vue页面有效&#xff0c;而单独封装的组件中【页面周期无效】&#xff0c;但是Vu…

微信小程序onTabItemTap和onShow的执行顺序

很显然 onShow的执行顺序要比 onTabItemTap早 onTabItemTap的特性是只在当前tabbar页面生效&#xff0c;比如onTabItemTap写在home页面&#xff0c;那么只有点击了tabbar上的home才会执行。 那是否有办法让onTabItemTap早于onShow先执行那&#xff1f;经过测试找到2种办法 方…

页面生命周期onShow没有触发

现象描述&#xff1a; 通过router.push接口跳转到快应用的B页面&#xff0c;当B页面只是引用一个自定义组件XX的时候&#xff0c;B页面的onShow生命周期无法触发。如下图所示&#xff1a; 代码如下&#xff1a; B页面代码&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 …

ER图和EER图的区别

ER图 ER图&#xff0c;是一种逻辑模型&#xff0c;与具体落地的数据库无关&#xff0c;长这样的 EER图 是一种物理模型&#xff0c;与落地的数据库&#xff08;Mysql&#xff09;相关&#xff0c;长这样的 总结 一般做数据设计的时候会经过一下这几个流程 0.规划 1.需求分析…

数据库关系建模(ER图设计关系表)

目录 一、概述 二、基本概念 1. 关系(relation) 2. 列(column) 3. 行(row) 4. 关系表 VS 一般的表 5. 主码(主键primary key) 6. 实体完整性约束(entity integrity constraint) 7. 外码(外键foreign key) 8. 参照完整性约束(reference integrity constraints) 三、ER模型…