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

article/2025/5/1 9:07:57

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.ROC曲线

在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫ROC曲线)是一种坐标图式的分析工具,用于 (1) 选择最佳的信号侦测模型、舍弃次佳的模型。 (2) 在同一模型中设定最佳阈值。

在做决策时,ROC分析能不受成本/效益的影响,给出客观中立的建议。

ROC曲线首先是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具(飞机、船舰),也就是信号检测理论。之后很快就被引入了心理学来进行信号的知觉检测。数十年来,ROC分析被用于医学、无线电、生物学、犯罪心理学领域中,而且最近在机器学习(machine learning)和数据挖掘(data mining)领域也得到了很好的发展。(参考文献1)

2.ROC曲线解释

一个二分类问题,可以将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况
1.某一个实例是正类,并且预测结果也为正类,此为真正类(True Positive, TP)
2.某一个实例是正类,被预测为负类,此为假负类(False Negative, FN)
3.某一个实例是负类,被预测为正类,此为假正类(False Positive, FP)
4.某一个实例为负类,并且预测结果也为负类,此为真负类(True Negative, TN)

ROC曲线的纵坐标是真正率(TPR)
T P R = T P T P + F N TPR = \frac{TP}{TP + FN} TPR=TP+FNTP
用通俗的语言解释就是预测的正例中,实际上也为正的在所有正例中的占比,这个比例自然是越大越好。
ROC曲线的横坐标是假正率(FPR)
F P R = F P F P + T N FPR = \frac{FP}{FP + TN} FPR=FP+TNFP
用通俗的语言解释就是预测的正例中,实际上为负的在所有负例中的占比。这个比例是越小越好。

很明显,这两个指标是互斥的,无法同时达到最优效果。
图片来自wiki百科。

在这里插入图片描述

3.ROC曲线中的两个特殊点

上面曲线中有两个特殊点(0,0), (1,1)
其中(0,0)点表示TPR,FPR均为0。此时阈值无为无穷大,所有样本被预测为负类,TP = 0, FP = 0,样本的预测结果只能是TN或者FN,所以TPR=FPR=0。
其中(1,1)点表示TPR, FPR均为1。此时阈值为0,所有样本被与预测为正类,样本的预测结果只能为TP或者FP,TN或者FN均为0,所以TPR = TP / (TP + FN) = 1,FPR同样为1。

4.如何画ROC曲线

假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。
在这里插入图片描述
接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:
在这里插入图片描述
(以上例子来自网络)

5.AUC值的含义

AUC值指的是ROC曲线下的面积。AUC常常被用来作为模型排序好坏的指标,原因在于AUC可以看做随机从正负样本中选取一对正负样本,其中正样本的得分大于负样本的概率。所以,AUC常用在排序场景的模型评估,比如搜索和推荐等场景。

6.AUC的计算方法

在有M个正样本,N个负样本的数据集里。一共有MN对样本(一对样本即,一个正样本与一个负样本)。统计这MN对样本里,正样本的预测概率大于负样本的预测概率的个数。
∑ I ( P 正 , P 负 ) M ∗ N \frac{\sum I(P_{正}, P_负)}{M*N} MNI(P,P)
其中,

I ( P 正 , P 负 ) = { 1 , P 正 > P 负 0.5 , P 正 = P 负 0 , P 正 < P 负 I(P_{正}, P_负)=\left\{ \begin{aligned} 1, P_正>P_负 \\ 0.5,P_正=P_负 \\ 0,P_正<P_负 \end{aligned} \right. I(P,P)=1P>P0.5P=P0P<P

举个例子来看:

indexlabelpro
A00.1
B00.5
C10.3
D10.7

上面的例子有4个样本,其中两个为正两个为负,则M*N=4,总共4个样本对。
(D,B), (D,A), (C,B), (C,A)
其中,I(D,B)=I(D,A)=I(C,A)=1, I(C,B)=0
最后AUC的值为(1+1+1+0)/4 = 0.75

参考文献

1.https://zh.wikipedia.org/wiki/ROC%E6%9B%B2%E7%BA%BF


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

相关文章

AUC值得含义和计算方法

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

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

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

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

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

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

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

统计学学习日记: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;即数据模型中的数据对象&…