ROC与AUC理解

article/2025/10/3 21:26:29

ROC与AUC

  • 简介
  • ROC曲线
    • ROC的动机
    • ROC曲线
      • 特殊点
    • ROC曲线的绘制
    • 为什么使用ROC
    • ROC曲线使用
      • 多个实例概率/得分相同
  • AUC(Area Under ROC Curve)
    • AUC判断分类器优劣的标准:
    • AUC的物理意义
    • 损失公式
    • AUC值的计算
    • 对于auc物理意义的理解:
  • sklearn使用
  • 参考

简介

ROC:(Receiver Operating Characteristic) 受试者工作特征 曲线
纵轴 : 真正例率 True Positive Rate 对应模型评估里的recall值 TP/(TP+FN) 预测正确的正样本数/所有正样本个数
直观上代表能将正例分对的概率,即正类覆盖率
横轴: 假正例率 False Positive Rate FP/(TN+FP) (假正/(真负+假正)) 预测出错的负样本数/所有负样本个数
直观上代表 将负类错分为正例的概率

ROC曲线

ROC的动机

对于0,1两类分类问题,一些分类器得到的结果往往不是0,1这样的标签,如神经网络得到诸如0.5,0.8这样的分类结果。这时,我们人为取一个阈值,比如0.4,那么小于0.4的归为0类,大于等于0.4的归为1类,可以得到一个分类结果。同样,这个阈值我们可以取0.1或0.2等等。取不同的阈值,最后得到的分类情况也就不同。如下面这幅图:

在这里插入图片描述
解释:

  • 蓝色代表负样本的分布范围 大约在阀值为C位置时 负样本最为集中
  • 红色代表正样本的分布范围,大约在阀值为A时 正样本最为集中

然而,我们选取一条直线,将其按照我们的意愿划分为正负类,左负右正,阀值不同 得到不同的结果
EG:
以直线划分 蓝色图左侧 TN 右侧 FP
红色图 左侧 FN 右侧TP
可以明显看到 不同位置 所预测的结果都存在一定的正负例的偏差
为了表达模型的好坏,我们需要一个指标只与分类器有关,来衡量特定分类器的好坏。

ROC曲线

在这里插入图片描述

  • 不同的阀值对应不同的TPR和FPR,相当于图像上每一个点其实际意义上都代表一个特定的阀值(若根据图像确定最佳阀值,需要使用一个指标–约登指数,也称正确指数,matlab中的roc函数可以算出),同样这对应一组特定的(FPR,TPR)。

  • 随着阀值的逐渐减小,越来越多的实例被划分为正例,但同时有更多的负例被误分成了正例,TPR和FPR都会增大。

  • 阀值最大时,对应坐标点(0,0),阈值最⼩小时,对应坐 标点(1,1)。

特殊点

  1. (0,1)点,FPR=0,TPR=1.即FP=0 ,TP=0 。
    最优分类器,所有的样本都正确分类了
  2. (1,0)点,FPR=1,TPR=1,即 FP=1,TP=0.
    负样本都预测为正值,正样本都预测为了负值。 最差的分类器
  3. (0,0) 点,FPR=TPR=0,所有的点都预测为了负值。
  4. (1,1)点,所有的点都预测为了正值。
  5. 对角线上的点 ,在y=x这条线上,实际上表示的是一个采用随机猜测策略的分类器的结果,TPR=FPR,从0 到1递增,是随机分类的。

    图像越接近于(0,1)点分类效果越好

ROC曲线的绘制

假设已经得出⼀一系列列样本被划分为正类的概率,然后按照⼤大⼩小排序,下图是⼀一个示例例,图中共有 20个测试样本,“class”⼀一栏表示每个测试样本真正的标签(P表示正样本,n表示负样 本),“Score”表示每个测试样本属于正样本的概率。
在这里插入图片描述
接下来从高到低,依次将“score”值作为阀值的thredhold,当测试样本大于或等于这个theredhold时,认为是正样本,否则为负样本。eg:对于第四个样本,其“Socre”值为0.6,那么样本1,2,3,4,均为正,因为其score值均大于0.6, 但其实第三个样本真实值为负,所以此时的FPR概率为0.1 (1/10 误分类为正的样本数/负样本个数,暂且这样理解) 事实上从第3 个样本 FPR就等于0.1了。
得出如下ROC曲线

《机器学习》中提到的ROC

当阀值取值越多,ROC曲线则会越平滑,最终形成类似于左图的平滑的zroc曲线。
但本质上其构成是锯齿状的,因此ROC曲线下的面积是由一个个小梯形形成的。

为什么使用ROC

因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
下图是ROC曲线和Presision-Recall曲线的对比:


在上图中,(a)和©为Roc曲线,(b)和(d)为Precision-Recall曲线。
(a)和(b) 展示的是分类器在其原始测试集(正负样本均衡)的结果。(c)(d)是负样本数增加到原来的10倍后,分类器的结果,可以明显看出,ROC曲线基本保持原貌不变,而Precision-Recall曲线变化较大。

ROC曲线使用

如上,是3条ROC曲线,在特定的FPR下(召回率) 在同样的低FPR=0.23的情况下,红色分类器得到更高的PTR。也就表明,ROC越往上,分类器效果越好。
如果直接值根据其曲线哪个最靠近(0,1)来判断其是否最优,不好量化。
我们可用一个标量值——下夹面积AUC来量化它。

多个实例概率/得分相同

还需要考虑特殊情况:如果一个分类器打分结果中,有多个实例得分是一样的情况下,ROC
曲线要怎么画?比如现在有10个实例得分相同,其中6个是正例,4个是反例。

对这10个实例采用不同的具体排序方式,ROC路线是不一样的(红色点代表排在这10个实例之前的那个实例):

上图中对应两种排序方式:把所有正例排在前面;把所有反例排在前面。对于其他混合排序的情况,其路线都落在这个矩形内部。ROC曲线应该表示分类器的期望性能,也就是对角线。

AUC(Area Under ROC Curve)

roc曲线的下夹面积 属于0-1之间,AUC作为数值可以直观得评价分类器的好坏.
值越大越好。
AUC的面积可以这样算:(由一个个小梯形组成)
在这里插入图片描述

AUC判断分类器优劣的标准:

  1. AUC=1,完美分类器,采用这个预测模型时,存在至少一个阀值能得出完美预测。 但绝大多数场合,不存在完美的分类器。
  2. 0.5<AUC<1,优于随机猜测。这个分类器妥善设置阀值的话,能有预测价值。
  3. AUC=0.5,跟随机猜测一样(如丢硬币),模型没有预测价值。
  4. AUC<0.5, 比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

AUC的物理意义

假设分类器的输出是样本属于正类的score(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的score大于负样本的概率。

损失公式

给定m+个正例,m-个负例,令D+,D-分别表示正、反例集合,则“损失(loss)”定义为:

损失公式计算的是排序损失,将正例的预测值小于反例,则记一个“罚分”,若相等,则数量除以2 ,记0.5个“罚分”。

ROC曲线中,每遇到一个正例向上走一步,每遇到一个反例向右走一步,对于所有的正例,其横坐标所代表的步数就是得分比其高的反例数。我们修改ROC空间的坐标,对横坐标乘以m−,对纵坐标乘以m+,在这个空间中每一步的刻度为1。
在这里插入图片描述
如图,蓝色的线表示ROC曲线。根据这个曲线,我们可以知道正反例顺序(反,正,[正,反],反,正,…).对第一个正例,对应的区域1,区域1的面积表示排在其前面的反例数。
第二个正例和第三个正例是特殊情况,它们和一个反例得分是相同的。我们把这种情况一般化,假设有p个正例和q个反例的得分相同,那么有斜线对应的三角形的面积为q/2∗p
,这和公式(2.21)中的相应的情况吻合。

所以有

左右两边同时除以m+m−,得到公式(2.22)。

l rank对应的是ROC 曲线上的面积。若能一个正例在ROC曲线上对应标记点的坐标为(x,y),则x恰是排序咋其之前的反例所占的比例,即假正例率。

AUC值的计算

1)第一种方法:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积之和,计算的精度与阈值的精度有关。
  (2)第二种方法:根据AUC的物理意义,我们计算正样本score大于负样本的score的概率。取NM(N为正样本数,M为负样本数)个二元组,比较score,最后得到AUC。时间复杂度为O(NM)。
  
  (3)第三种方法:与第二种方法相似,直接计算正样本score大于负样本的score的概率。我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n(n=N+M),其次为n-1。那么对于正样本中rank最大的样本(rank_max),有M-1个其他正样本比他score小,那么就有(rank_max-1)-(M-1)个负样本比他score小。其次为(rank_second-1)-(M-2)。最后我们得到正样本大于负样本的概率为:

时间复杂度为O(N+M)。

对于auc物理意义的理解:

auc 是衡量分类器分类能力好坏的指标,其物理意义是对于任何一对正负样本,其正样本score 大于负样本score的概率,也就是说正样本排在负样本前的概率。
从其图像角度理解, 横坐标越靠左,阈值越接近于1,即只有大于阈值才能被分为正例,比较难分。
所以 如果在阈值大的情况下,还能被分为正例 ,这就要求 正样本的score很高
而负样本 是 每出现一个负样本 那么我们的曲线就会往右边一点 是平的,我们希望负样本的概率(score 代表的是样本预测为1 的概率)都小一点 那么就都会图形的最后端, auc 的面积就会更大。
所以 理想情况下 是所有正样本的score 都 排在 负样本前,那么auc = 1 就是完美的分类器

sklearn使用

from sklearn.metrics import roc_curve,auc
在这里插入图片描述

参考

[1]. https://blog.csdn.net/qq_37059483/article/details/78595695/
[2]. https://www.cnblogs.com/gatherstars/p/6084696.html/
[3]. ROC曲线的最佳阈值如何选取[https://blog.csdn.net/sunxingxingtf/article/details/42751295]


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

相关文章

AUC的两种计算方式

1.什么是AUC&#xff1f; 推荐 搜索场景下的auc理解_凝眸伏笔的博客-CSDN博客_搜索auc 随机抽出一对样本&#xff08;一个正样本&#xff0c;一个负样本&#xff09;&#xff0c;然后用训练得到的分类器来对这两个样本进行预测&#xff0c;预测得到正样本的概率大于负样本概率…

AUC到底是什么?

前言 上一篇单值AUC计算优化里&#xff0c;提到了AUC&#xff0c;AUC的全名是Area Under Curve&#xff0c;就是ROC曲线下的面积&#xff0c;上一篇文中提到了AUC是评估模型整体排序能力的&#xff0c;但是具体是什么没有进行展开介绍&#xff0c;考虑到可能很多人对这么个玩意…

matlab计算auc,ROC和AUC介绍以及如何计算AUC

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见这里。这篇博文简单介绍ROC和AUC的特点,以及更为深入地,讨论如何作出ROC曲线图以及计算AUC。 ROC曲线 需要提前说明的是,我们这里只讨论二值分类器…

加了权重样本的AUC如何计算

加了权重样本的AUC如何计算&#xff1f;对理解roc_auc_score函数里sample_weight参数以及xgb模型赋予样本权重再评估都有帮助哦&#xff5e; 一、 roc_auc_score函数中有个参数是sample_weight&#xff0c;可以给样本设置权重。一直不太理解加上weight怎么来计算AUC&#xff…

机器学习之AUC

深入理解AUC AUC是什么 auc是roc曲线的面积&#xff0c;常用来评价二分类系统的好坏。 AUC如何计算 对于二分类问题&#xff0c;预测模型会对每一个预测样本一个得分p&#xff0c;然后选取一个阈值t&#xff0c;当 p > t p>t p>t时&#xff0c;样本预测为正&#…

ROC和AUC

目录 ROC AUC ROC ROC曲线是Receiver Operating Characteristic Curve的简称&#xff0c;中文名为"受试者工作特征曲线"。ROC曲线的横坐标为假阳性率(False Postive Rate, FPR)&#xff1b;纵坐标为真阳性率(True Positive Rate, TPR).FPR和TPR的计算方法分别为 F…

Rank: AUC

最近计算了搜索排序的auc指标&#xff0c;记录一下~ AUC很大一个好处是其对正负样本比例不敏感 AUC的三种定义&#xff1a; AUC&#xff1a;一个正例&#xff0c;一个负例&#xff0c;预测正样本为正的概率值比预测负样本为正的概率值还要大的可能性。从一堆0和1中&#xff0c…

auc计算 matlab代码,AUC计算

思路 为最终比较划分好测试集和不存在边集【全集1-train-test-对角元】,根据集合中非零元【即边的数目】构建比较矩阵test_rd【比较n次,随机生成n个值右取整作为抽取的要比较的边】,下一步对test的邻接矩阵赋值,相似性指标给予一个分值存入test_pre,然后依据判断条件【tes…

AUC

最近我们在尝试深度学习模型&#xff0c;离线的auc已经高于基线&#xff0c;上线后ctr表现也优于基线&#xff0c;但是基于线上实际反馈的打点日志&#xff0c;深度学习的模型的auc要明显低于基线。但以前的模型迭代auc是可以和线上ctr对应的。 这个问题比较奇怪&#xff0c;一…

AUC详解

AUC在机器学习领域中是一种模型评估指标。根据维基百科的定义&#xff0c;AUC(area under the curve)是ROC曲线下的面积。所以&#xff0c;在理解AUC之前&#xff0c;要先了解ROC是什么。而ROC的计算又需要借助混淆矩阵&#xff0c;因此&#xff0c;我们先从混淆矩阵开始谈起。…

笔记︱统计评估指标AUC 详解

文章目录 1 AUC的两种解读视角&#xff1a;1.1 ROC曲线与坐标轴形成面积1.2 古典概率模型——求导AUC 2 AUC的特性与优劣3 AUC多大才算好&#xff1f;4 线上、线下AUC差异较大成因分析4.1 业务场景使用AUC&#xff1a;点击模型与购买模型的差异4.2 线上、线下AUC有差异 5 AUC逻…

AUC原理详细讲解

一、AUC含义 首先&#xff0c;在试图弄懂AUC和ROC曲线之前&#xff0c;首先要彻底理解混淆矩阵的定义&#xff01; 混淆矩阵中有着Positive、Negative、True、False的概念&#xff0c;其意义如下&#xff1a; 称预测类别为1的为Positive&#xff08;阳性&#xff09;&#x…

详解AUC指标

AUC指标 AUC是一个模型评价指标&#xff0c;用于二分类模型的评价。AUC是“Area under Curve&#xff08;曲线下的面积&#xff09;”的英文缩写&#xff0c;而这条“Curve&#xff08;曲线&#xff09;”就是ROC曲线。 ROC:受试者工作特征曲线    为什么要用AUC作为二分类…

机器学习篇-指标:AUC

AUC是什么东西&#xff1f; AUC是一个模型评价指标&#xff0c;只能够用于二分类模型的评价&#xff0c;对于二分类模型来说还有很多其他的评价指标&#xff1a; 比如&#xff1a;logloss&#xff0c;accuracy&#xff0c;precision 在上述的评价指标当中&#xff0c;数据挖掘…

网络: 快速理解NAT与NAPT的区别

NAT:网络地址转换 。 NAPT:网络地址端口转换。 &#xff08;通俗的讲&#xff09;它们都是地址转换&#xff0c;NAPT与NAT的区别在于 NAT是NAT是一对一转换&#xff0c;NAPT是多对一转换。通俗来说NAT是一个内部地址转换成一个外部地址进行通信的&#xff0c;而NAPT是多个内部地…

NAT和NAPT 技术

一、什么是NAT NAT(Network Address Translator)是用于在本地网络中使用私有地址&#xff0c;在连接互联网时转而使用全局IP地址的技术。除了转换IP地址&#xff0c;还出现了可以转换TCP\UDP端口号的NAPT(Network Address Port Translator)技术 二、NAT的工作机制 如下图所示…

19 网络端口地址转换NAPT配置

借鉴网址&#xff1a; Packet Tracer 思科模拟器入门教程 之十八 网络端口地址转换NAPT配置_柚子君.的博客-CSDN博客 姓 名 彭彭头 实验日期 2022.06.07 学 号 实验序号 19 实验名称 网络端口地址转换NAPT配置 一、实验目的及要求 理解NAT网络地址转换的原理及功能…

Cisco Packet Tracer思科模拟器中利用动态NAPT实现局域网访问Internet (动态地址转换)

本篇文章主要讲解思科模拟器中的动态地址转换 &#xff0c;主讲ACL和接口进行地址转换、地址池范围地址转换、静态一对一地址转换。 园区网内通常情况下有很多台主机&#xff0c;从ISP申请并给园区网中的每台主机分配一个合法IP地址是不现实的&#xff0c;为了使所有内部主机都…

NAT--静态、动态、NAPT、Easy-ip、NAT server

静态NAT 静态 NAT ( Static NAT )&#xff08; 一对一 &#xff09;。将内部网络的私有IP地址转换为公有IP地址&#xff0c;IP地址对是一对一的&#xff0c;是一直不变的。 实验拓扑&#xff1a; PC配置 AR1 <Huawei>sys Enter system view, return user view with Ct…

静态NAPT部署

实验拓扑 Jan16公司搭建了网站服务器&#xff0c;用于对外发布官方网站&#xff0c;公司只租用了一个互联网IP地址用于互联网的访问。为了保障内部网络的安全和互联网IP地址不足的情况&#xff0c;需在出口路由中配置静态NAPT&#xff0c;用于将内部服务器映射到互联网IP地址上…