AUC值得含义和计算方法

article/2025/5/1 8:19:41

转载自:http://baijiahao.baidu.com/s?id=1597939133517926460&wfr=spider&for=pc

机器学习备忘录 | AUC值的含义与计算方法

浮生偷闲

18-04-17 05:32

内容导读

在机器学习领域, AUC 值经常用来评价一个二分类模型的训练效果,对于许多机器学习或者数据挖掘的从业者或在校学生来说, AUC 值的概念也经常被提起,但由于大多数时候我们都是借助一些软件包来训练机器学习模型,模型评价指标的计算往往被软件包所封装,因此我们常常会忽略了它们的具体意义,这在有些时候会让我们对于手头正在进行的任务感到困惑。笔者也曾遇到类似的问题,因此希望借由本文来梳理下 AUC 值的意义与计算方法,通过实际的例子帮助读者加深理解,同时给出了使用 scikit-learn 工具库计算 AUC 值的方法,供各位参考。我们参看下维基百科上的定义:在信号检测理论中,接收者操作特征曲线( receiver operating characteristic curve ,或者叫 ROC 曲线)是一种坐标图式的分析工具,用于 (1) 选择最佳的信号侦测模型、舍弃次佳的模型。通常很多的机器学习工具都封装了模型指标的计算,当然也包括 AUC 值。可以看出,使用 scikit-learn 工具提供的 roc_auc_score 函数计算 AUC 值相当简单,只需要提供样本的实际标签和预测值这两个变量即可,大大方便了我们的使用,真心感谢这些开源软件的作者们!总的来说, AUC 值就是一个用来评价二分类模型优劣的常用指标, AUC 值越高通常表明模型的效果越好,在实际使用中我们可以借助软件包的相应函数进行快速计算。

引言

在机器学习领域,AUC值经常用来评价一个二分类模型的训练效果,对于许多机器学习或者数据挖掘的从业者或在校学生来说,AUC值的概念也经常被提起,但由于大多数时候我们都是借助一些软件包来训练机器学习模型,模型评价指标的计算往往被软件包所封装,因此我们常常会忽略了它们的具体意义,这在有些时候会让我们对于手头正在进行的任务感到困惑。笔者也曾遇到类似的问题,因此希望借由本文来梳理下AUC值的意义与计算方法,通过实际的例子帮助读者加深理解,同时给出了使用scikit-learn工具库计算AUC值的方法,供各位参考。

定义

AUC的全称是Area under the Curve of ROC,也就是ROC曲线下方的面积。这里出现了另一个概念,就是ROC曲线。那么ROC曲线是个什么东西呢?我们参看下维基百科上的定义:在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫ROC曲线)是一种坐标图式的分析工具,用于 (1) 选择最佳的信号侦测模型、舍弃次佳的模型。 (2) 在同一模型中设定最佳阈值。这个概念最早是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具。概括来说,可以把ROC曲线理解为一种用于统计分析的图表工具。

那么具体到机器学习的理论中,ROC曲线该怎么理解呢?首先,需要指出的是,ROC分析的是二元分类模型,也就是输出结果只有两种类别的模型,比如:(阳性/阴性)(有病/没病)(垃圾邮件/非垃圾邮件)。在二分类问题中,数据的标签通常用(0/1)来表示,在模型训练完成后进行测试时,会对测试集的每个样本计算一个介于0~1之间的概率,表征模型认为该样本为阳性的概率,我们可以选定一个阈值,将模型计算出的概率进行二值化,比如选定阈值=0.5,那么当模型输出的值大于等于0.5时,我们就认为模型将该样本预测为阳性,也就是标签为1,反之亦然。选定的阈值不同,模型预测的结果也会相应地改变。二元分类模型的单个样本预测有四种结果:

真阳性(TP):判断为阳性,实际也是阳性。伪阳性(FP):判断为阴性,实际却是阳性。真阴性(TN):判断为阴性,实际也是阴性。伪阴性(FN):判断为阴性,实际却是阳性。这四种结果可以画成2 × 2的混淆矩阵:

二阶混淆矩阵

有了混淆矩阵,就可以定义ROC曲线了。ROC曲线将假阳性率(FPR)定义为 X 轴,真阳性率(TPR)定义为 Y 轴。其中:

TPR:在所有实际为阳性的样本中,被正确地判断为阳性的样本比率。FPR:在所有实际为阴性的样本中,被错误地判断为阳性的样本比率。TPR = TP / (TP + FN)FPR = FP / (FP + TN)给定一个二分类模型和它的阈值,就可以根据所有测试集样本点的真实值和预测值计算出一个 (X=FPR, Y=TPR) 坐标点,这也就是绘制单个点的方法。那整条ROC曲线又该怎么画呢?具体方法如下:

在我们训练完一个二分类模型后,可以使用该模型对测试集中的全部样本点计算一个对应的概率值,每个值都介于0~1之间。假设测试集有100个样本点,我们可以对这100个样本的预测值从高到低排序,然后依次取每个值作为阈值,一旦阈值确定我们就可以绘制ROC曲线上的一个点,按照这种方法依次将100个点绘制出来,再将各个点依次连接起来,就得到了我们想要的ROC曲线!

然后再回到最初的问题,AUC值其实就是ROC曲线下方所覆盖的面积,当我们绘制出ROC曲线之后,AUC的值自然也就计算好啦。

示例

这里引用上海交大张伟楠老师机器学习课件中的例子来说明:

AUC计算示例

如上图所示,我们有8个测试样本,模型的预测值(按大小排序)和样本的真实标签如右表所示,绘制ROC曲线的整个过程如下所示:

令阈值等于第一个预测值0.91,所有大于等于0.91的预测值都被判定为阳性,此时TPR=1/4,FPR=0/4,所有我们有了第一个点(0.0,0.25)令阈值等于第二个预测值0.85,所有大于等于0.85的预测值都被判定为阳性,这种情况下第二个样本属于被错误预测为阳性的阴性样本,也就是FP,所以TPR=1/4,FPR=1/4,所以我们有了第二个点(0.25,0.25)按照这种方法依次取第三、四...个预测值作为阈值,就能依次得到ROC曲线上的坐标点(0.5,0.25)、(0.75,0.25)...(1.0,1.0)将各个点依次连接起来,就得到了如图所示的ROC曲线计算ROC曲线下方的面积为0.75,即AUC=0.75代码

在清楚了AUC值的计算原理后,我们再来看看如何在代码中实现它。通常很多的机器学习工具都封装了模型指标的计算,当然也包括AUC值。这里我们来一起看下scikit-learn中AUC的计算方式,如下所示:

>>> import numpy as np>>> from sklearn.metrics import roc_auc_score>>> y_true = np.array([0, 0, 1, 1])>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])>>> roc_auc_score(y_true, y_scores)0.75可以看出,使用scikit-learn工具提供的roc_auc_score函数计算AUC值相当简单,只需要提供样本的实际标签和预测值这两个变量即可,大大方便了我们的使用,真心感谢这些开源软件的作者们!

总结

看到这里的小伙伴们是不是对AUC值的概念有了更好的理解呢。总的来说,AUC值就是一个用来评价二分类模型优劣的常用指标,AUC值越高通常表明模型的效果越好,在实际使用中我们可以借助软件包的相应函数进行快速计算。如果各位还有一些问题或者是对文章中的某些部分有疑问,欢迎在评论区讨论。

参考

ROC曲线维基百科张伟楠老师课件机器学习和统计里面的auc怎么理解? - 知乎


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

相关文章

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模型…

ER图如何画?如何根据ER图转换成表结构?示例:图书管理系统ER图

一、ER图如何画&#xff1f; 很多同学不会画ER图&#xff0c;我就以图书管理系统为例画一张ER图和ER图如何转成数据库&#xff0c;科普一下。ER图是实体、属性、关系组成的图&#xff0c;主要用于数据库概念设计的时候&#xff0c;通过业务分析画出来的图&#xff0c;最终每一个…

ER图,以及转化成关系模式

软考复习get一个知识点 .找出条件中的实体(矩形),属性(椭圆),关系(菱形)关系分为1:1,1:N,M:N,列出ER图 2. -1:1联系的转换方法 -两个实体分别转化为一个关系模式,属性即是本来的属性 -关系可以与任意一个实体合并,关系的属性,以及另一个实体的主码…

ER图(把ER模型转换为关系模式、关系范式概念)

关于ER模型的转换&#xff0c;我们只需要记住三个转换准则&#xff1a; 1:1、1:N、M:N 二元联系&#xff1a; &#xff08;1&#xff09;一对一关系(One to One) 映射规则一&#xff1a;当转换为关系模型时&#xff0c;在两个实体任选一个添加另一个实体的主键即可。 例子&am…

数据库——ER图

参照&#xff1a;https://zhuanlan.zhihu.com/p/29029129 1、ER图分为实体、属性、关系三个核心部分。实体是长方形体现&#xff0c;而属性则是椭圆形&#xff0c;关系为菱形。 1&#xff09;ER图的实体&#xff08;entity&#xff09;&#xff1a;即数据模型中的数据对象&…

ER图连接线上加个圆圈什么意思_ER图模板实例,一篇文章教你绘制专业ER图

ER图是什么呢?ER是Entity Relationship的缩写,ER图翻译过来就是实体-联系图的意思。它由美籍华裔计算机科学家陈品山发明,是用来描述现实世界概念结构模型的有效方法,包括实体型、属性、联系这三个基本构成要素,实体型用矩形框表示,实体性的属性用椭圆图框或者圆角矩形表…