机器学习之AUC

article/2025/10/3 21:57:36

深入理解AUC

AUC是什么

aucroc曲线的面积,常用来评价二分类系统的好坏。

AUC如何计算

对于二分类问题,预测模型会对每一个预测样本一个得分p,然后选取一个阈值t,当 p &gt; t p&gt;t p>t时,样本预测为正,当 p &lt; = t p&lt;=t p<=t时样本预测为负。根据样本自身的标签值和模型预测的标签值,我们可以把样本划分为四个部分。分别是TPFPTNFN。如下图所示:

混淆矩阵
随着阈值t选取的不同,这四类样本的比例各不相同。定义TPR(真正例率)和FPR(假正例率)分别如下:

T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP

F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP

  • TPR的意义是所有真实类别为1的样本中,预测类别为1的比例
  • FPR的意义是所有真实类别为0的样本中,预测类别为1的比例

当阈值t发生变化时,TPRFPR会随之变化。我们将TPRFPR写成关于t的变量形式。定义 N + ( t ) N_{+}(t) N+(t) N − ( t ) N_{-}(t) N(t)分别为得分大于 t t t的样本中正负样本的数目, N + N_{+} N+ N − N_{-} N为总的正负样本数目,则:
T P R ( t ) = N + ( t ) N + TPR(t)=\frac{N_{+}(t)}{N_{+}} TPR(t)=N+N+(t)
F P R ( t ) = N − ( t ) N − FPR(t)=\frac{N_{-}(t)}{N_{-}} FPR(t)=NN(t)

TPR为横轴,FPR为纵轴,随着阈值t的变化,点 ( T P R , F P R ) (TPR,FPR) (TPR,FPR)会在坐标轴上画出一条曲线,这条曲线就是ROC曲线。
显然,如果模型是随机的,模型得分对正负样本没有区分性,那么得分大于t的样本中正负样本的比例应该和总的正负样本比例基本一致。也就是说
N + ( t ) N − ( t ) = N + N − \frac{N_{+}(t)}{N_{-}(t)}=\frac{N_{+}}{N_{-}} N(t)N+(t)=NN+
从上式可以看出此时ROC曲线是一条直线。
反之,如果模型的区分性非常理想,也就是说正负样本的得分可以完全分开,所有的正样本都比负样本得分高,此时ROC曲线表现为字形。
ORC曲线
实际的模型ROC曲线则是一条上凸的曲线,介于随机和理想的ROC曲线之间。二ROC曲线的面积即为AUC

A U C = ∫ t = ∞ + ∞ y ( t ) d x ( t ) AUC=\int _{t=\infty}^{+\infty}y(t)dx(t) AUC=t=+y(t)dx(t)
这里的 x x x y y y分别是FPRTPR,是ROC曲线的横纵坐标。

ROC曲线上有几个值得关注的点:

  • (0,1):此时 F P R = 0 FPR=0 FPR=0, T P R = 1 TPR=1 TPR=1模型最好,混淆矩阵是对角矩阵
  • (0,0): F P R = 0 FPR=0 FPR=0 T P R = 0 TPR=0 TPR=0,此时当 t ≥ 1 t \ge 1 t1时取到,即样本预测全部为负样本,混淆矩阵第一行全为0
  • (1,1): F P R = 1 FPR=1 FPR=1 T P R = 1 TPR=1 TPR=1,此时当 t ≤ 0 t \le 0 t0时取到,即样本预测全部为正样本,混淆矩阵第二行全为0

AUC的概率解释

AUC常常被用来作为模型排序好坏的指标,原因在于AUC可以看做随机从正负样本中选取一对正负样本,其中正样本的得分大于负样本的概率!考虑随机取得这对正负样本中,负样本得分在 [ t , t + Δ t ] [t,t+\Delta t] [t,t+Δt]之间的概率为
P ( t ≤ s − &lt; t + Δ t ) = P ( s − &gt; t ) − P ( s − &gt; t + Δ t ) P(t \le s_{-} &lt; t+\Delta t)=P(s_{-}&gt;t)-P(s_{-}&gt;t+\Delta t) P(ts<t+Δt)=P(s>t)P(s>t+Δt)
= N − ( t ) − N − ( t + Δ t ) N − = x ( t ) − x ( t + Δ t ) = − Δ x ( t ) =\frac{N_{-}(t)-N_{-}(t+\Delta t)}{N_{-}}=x(t)-x(t+\Delta t)=-\Delta x(t) =NN(t)N(t+Δt)=x(t)x(t+Δt)=Δx(t)

如果 Δ t \Delta t Δt很小,那么该正样本得分大于该负样本的概率为
P ( s + &gt; s − ∣ t ≤ s − &lt; t + Δ t ) ≈ P ( s + &gt; t ) = N + ( t ) N + = y ( t ) P(s_{+}&gt;s_{-}|t \le s_{-} &lt; t+\Delta t) \approx P(s_{+}&gt;t)=\frac{N_{+}(t)}{N_{+}}=y(t) P(s+>sts<t+Δt)P(s+>t)=N+N+(t)=y(t)
所以, P ( s + &gt; s − ) = ∑ P ( t ≤ s − &lt; t + Δ t ) P ( s + &gt; s − ∣ t ≤ s − &lt; t + Δ t ) = − ∫ t = − ∞ ∞ y ( t ) d x ( t ) = ∫ t = ∞ − ∞ y ( t ) d x ( t ) = A U C P(s_{+}&gt;s_{-})=\sum P(t \le s_{-} &lt; t+ \Delta t)P(s_{+}&gt;s_{-}|t \le s_{-} &lt; t+ \Delta t)=-\int_{t=-\infty}^{\infty}y(t)dx(t)=\int_{t=\infty}^{-\infty}y(t)dx(t)=AUC P(s+>s)=P(ts<t+Δt)P(s+>sts<t+Δt)=t=y(t)dx(t)=t=y(t)dx(t)=AUC

这个积分表示为随机在样本里面取一对正负样本,正样本的得分大于负样本的概率

AUC的排序特性

根据上面的概率解释,AUC实际上在说一个模型把正样本排在负样本前面的概率!所以AUC常用在排序场景的模型评估,比如搜索和推荐等场景!这个解释还表明,如果将所有的样本得分加上一个额外的常数并不改变这个概率,因此AUC不变。因此,在广告等需要绝对的点击率场景下,AUC并不适合作为评估指标,而是用logloss等指标。

AUC对正负样本比例不敏感

利用概率解释还可以得到AUC另一个性质:对正负样本比例不敏感。在训练模型的时候,如果正负样本差异较大,我们经常会对正样本进行过采样或者对负样本进行下采样。当一个模型训练完了之后,用负样本下采样后的测试集计算出来的AUC和未采样的测试集计算的AUC基本一致,或者说前者是后者的无偏估计!对于阈值t来说,党对正样本或者负样本进行均衡采样时,大于t或者小于t的样本是等比例变化的,即 k ∗ N + ( t ) k ∗ N + = N + ( t ) N + \frac{k*N_{+}(t)}{k*N_{+}}=\frac{N_{+}(t)}{N_{+}} kN+kN+(t)=N+N+(t) k ∗ N − ( t ) k ∗ N − = N − ( t ) N − \frac{k*N_{-}(t)}{k*N_{-}}=\frac{N_{-}(t)}{N_{-}} kNkN(t)=NN(t)。无论哪种情况,积分式大小不发生变化。

相比于其他评估指标,例如准确率、召回率和F1值,负样本下采样相当于只将一部分真实的负例排除掉了,然而模型并不能准确地识别出这些负例,所以用下采样后的样本来评估会高估准确率;因为采样只对负样本采样,正样本都在,所以采样对召回率并没什么影响。这两者结合起来,最终导致高估F1值!

AUC的计算

AUC可以直接根据ROC曲线,利用梯形积分进行计算。此外,还有一个比较有意思的是,可以 利用AUCWilcoxon-Mann-Whitney测试的U统计量的关系,来计算AUC。这可以从AUC的概率意义推导而来。

假设我们将测试集的正负样本按照模型预测得分从小到大排序,对于第 j j j个正样本,假设它的排序为 r j r_{j} rj,那么说明排在这个正样本前面的总样本有 r j − 1 r_{j}-1 rj1个,其中正样本有 j − 1 j-1 j1个,所以排在前面的负样本个数为 r j − j r_{j}-j rjj个。也就是说,对于第 j j j个正样本来说,其得分比随机取的一个负样本大的概率为 ( r j − j ) / N − (r_{j}-j)/N_{-} (rjj)/N,其中 N − N_{-} N是总的负样本数目。所以,平均下来,随机取的正样本得分比负样本大的概率为
1 N ∑ j = 1 N + ( r j − j ) / N − = ∑ j = 1 N + r j − N + ( N + + 1 ) / 2 N + N − \frac{1}{N}\sum_{j=1}^{N_{+}}(r_j-j)/N_-=\frac{\sum_{j=1}^{N_+}r_j-N_+(N_++1)/2}{N_+N_-} N1j=1N+(rjj)/N=N+Nj=1N+rjN+(N++1)/2
所以 A U C = ∑ j = 1 N + r j − N + ( N + + 1 ) / 2 N + N − AUC=\frac{\sum_{j=1}^{N_+}r_j-N_+(N_++1)/2}{N_+N_-} AUC=N+Nj=1N+rjN+(N++1)/2

一个更加简单的解释:
将得分从小到大排序,阈值t + ∞ +\infty + − ∞ -\infty 变化。当阈值右边增加一个正样本时, T P TP TP增加一个,这个正样本对面积的贡献率为 1 N + r j − j N − \frac{1}{N_+} \frac{r_j-j}{N_{-}} N+1Nrjj,将所有的正样本贡献率加起来即是ROC面积。即为 ∑ j = 1 N + 1 N + r j − j N − = ∑ j = 1 N + r j − N + ( N + + 1 ) / 2 N + N − \sum_{j=1}^{N_+}\frac{1}{N_+} \frac{r_j-j}{N_{-}}=\frac{\sum_{j=1}^{N_+}r_j-N_+(N_++1)/2}{N_+N_-} j=1N+N+1Nrjj=N+Nj=1N+rjN+(N++1)/2

AUC计算的其它形式

A U C = ∑ i = 1 N + ∑ j = 1 N − δ ( s i + − s j − ) N + N − AUC=\frac{\sum_{i=1}^{N_+}\sum_{j=1}^{N_-}\delta(s_i^+-s_j^-)}{N_+N_-} AUC=N+Ni=1N+j=1Nδ(si+sj)
其中当 x &gt; 0 x&gt;0 x>0 δ ( x ) = 1 δ(x)=1 δ(x)=1,当 x &lt; 0 x&lt;0 x<0时, δ ( x ) = 0 \delta(x)=0 δ(x)=0,我们将 δ \delta δ函数“软化”,即用 s i g m o i d sigmoid sigmoid函数来替代,那么 A U C AUC AUC就是可作为直接优化目标来进行微分。

s o f t A U C = ∑ i = 1 N + ∑ j = 1 N − σ ( s i + − s j − ) N + N − softAUC=\frac{\sum_{i=1}^{N_+}\sum_{j=1}^{N_-}\sigma(s_i^+-s_j^-)}{N_+N_-} softAUC=N+Ni=1N+j=1Nσ(si+sj)

AUC的优化

采用极大似然估计对应的损失函数是logloss,因此极大似然估计的优化目标并不是AUC。在一些排序场景下,AUClogloss更贴近目标,因此直接优化AUC可以达到比极大似然估计更好的结果。 实际上,pairwise的目标函数就可以看做一种对AUC的近似。因为损失函数都是作用与正负样本得分差之上! 例如,

类别优化目标
rank-SVM m a x ( 0 , − s + + s − + Δ ) max(0, -s_++s_-+\Delta) max(0,s++s+Δ)
rank-net l o g ( 1 + e x p ( − ( s + − s − ) ) ) log(1+exp(-(s_+-s_-))) log(1+exp((s+s)))
指数损失 e x p ( − ( s + − s − ) ) exp(-(s_+-s_-)) exp((s+s))
TOP损失 ∑ s m a x ( 0 , − s c + s + Δ ) \sum_smax(0,-s_c+s+\Delta) smax(0,sc+s+Δ)

显然,这些损失函数都是对 s + &lt; s − s_+&lt;s_- s+<s的正负样本对进行惩罚!此外,也有一些其它对AUC近似度更好的损失函数,例如
E [ ( 1 − w T ( s + − s − ) ) 2 ] = 1 n + n − ∑ i = 1 n + ∑ j = 1 n − ( 1 − w T ( s i + − s j − ) ) 2 \mathbf{E} \left[ (1-w^T(s_+ - s_-))^2 \right] \\ = \frac{1}{n_+n_-} \sum_{i=1}^{n_+} \sum_{j=1}^{n_-} (1-w^T(s_{i}^+ - s_{j}^-))^2 E[(1wT(s+s))2]=n+n1i=1n+j=1n(1wT(si+sj))2
s i + , s j − s_i^+, s_j^- si+,sj分别表示正例和负例的得分。 这解释了为什么某些问题中,利用排序损失函数比logloss效果更好,因为在这些问题中排序比概率更重要!

AUC要到多少才算好的模型

AUC越大表示模型区分正例和负例的能力越强,那么AUC要达到多少才表示模型拟合的比较好呢?在实际建模中发现,预测点击的模型比预测下单的模型AUC要低很多,在月活用户里面预测下单和日常用户里面预测下单的AUC差异也很明显,预测用户未来1小时下单和预测未来1天下单的模型AUC差异也很大。这表明,AUC非常依赖于具体任务。

以预测点击和预测下单为例,下单通常决策成本比点击高很多,这使得点击行为比下单显得更加随意,也更加难以预测,所以导致点击率模型的AUC通常比下单率模型低很多。

那么月活用户和日活用户那个更容易区分下单与不下单用户呢?显然月活用户要容易一些,因为里面包含很多最近不活跃的用户,所以前者的AUC通常要高一些。

对于预测1小时和预测1天的模型,哪一个更加困难?因为时间越长,用户可能发生的意料之外的事情越多,也越难预测。举个极端的例子,预测用户下一秒中内会干啥,直接预测他会做正在干的事情即可,这个模型的准确率就会很高,但是预测长期会干啥就很困难了。所以对于这两个模型,后者更加困难,所以AUC也越低。


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

相关文章

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地址上…

NAT 和 NAPT

出处&#xff1a;http://bbs.51cto.com/thread-878322-1.html NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是将IP数据报头中的IP地址转换为另一个IP地址的过程。在实际应用中&#xff0c;NAT主要用于实现私有网络访问公共网络的功能。这…

华为静态NAT、动态NAT、NAPT、Easy NAT配置实例

一、NAT的四种类型 1&#xff0c;静态NAT&#xff08;服务器地址转换&#xff09; 静态NAT实现了私有地址和公有地址的一对一转换&#xff0c;一个公网地址对应一个私网地址 2&#xff0c;动态NAT 动态NAT基于地址池来实现私有地址和公有地址的转换&#xff0c;转换是随机的 …

华为 静态NAT---动态NAT---NAPT---Easy IP---NAT服务器工作原理和示例配置

目 录 一、NAT简介 二、NAT好处&#xff1a; 三、静态NAT工作原理和示例配置 1. 静态NAT工作原理 2. 静态NAT配置示例 四、动态NAT工作原理和示例配置 1. 动态NAT工作原理 2.动态NAT示例配置 五、NAPT工作原理和示例配置 1. NAPT工作原理 2.NAPT示例配置 六…

华为设备的NAT、NAPT、easy IP的区别

首先来了解一下什么是NAT&#xff0c;网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术&#xff0c;是一种将私有&#xff08;保留&#xff09;地址转化为合法IP地址的转换技术&#xff0c;它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因…

6.NATNAPT

7. NAT&NAPT 它们都是地址转换NAPT与NAT的区别在于 NAT是NAT是一对一转换&#xff0c;NAPT是多对一转换。通俗来说NAT是一个内部地址转换成一个外部地址进行通信的&#xff0c;而NAPT是多个内部地址使用同一地址不同端口转换成外部地址进行通信的。 //配置完动态路由Rout…