理解AUC

理解auc

1 ROC曲线和auc

从二分类说起,假设我们的样本全集里,所有样本的真实标签(label)为0或1,其中1表示正样本,0表示负样本,如果我们有一个分类模型,利用它对样本进行了标注,那边我们可以得到下面的划分


 


 


truth


 


 


1


0


predictor


1


TP


FP


0


FN


TN

TP(true positive):表示正确的肯定

TN( true negative):表示正确的否定

FP(false positive):表示错误的肯定

FN (false negative):表示错误的否定

简记:第一个字母表示最终结果true or false(正确或错误),第二个字母表示预测标签positive or negative(肯定或否定),从左往右读。例如FP,表示错误地肯定,即预测是1,而真实是0个样本个数。

由此,我们能得到TPR和FPR的定义

TPR(true positive rate):TPR = TP / T = TP / (TP + FN),表示预测为正的正确结果TP在所有正样本T中的占比,显然TPR越大,模型的预估能力更好。

FPR(false positive rate):FPR = FP / F = FP / (FP + TN) ,表示预测为正的错误结果FP在所有负样本F中的占比,显然FPR越大,模型的预估能力越差。

ROC曲线(receiver operating characteristic curve),由FPR为X轴坐标,TPR为Y轴坐标的曲线。下面介绍如何绘制ROC曲线

假设模型M对样本进行标注,当预测值大于某个阈值r时,我们用下面的函数来预测最后结果

然后,对于每一个r,模型对所有样本标注一遍,统计得到所有的TP和FP,就可以计算(fpr,tpr),对所有的点在ROC图上进行标注就可以得到ROC曲线,而本文的主题AUC就是指

ROC曲线下方的面积(Area under the Curve of ROC)。

下面我们来看一个实际的例子

下面表中有10个样本,其中5个正样本,5个负样本,即T=5,F=5。


score


label


0.15


1


0.12


1


0.11


0


0.1


0


0.04


0


0.04


1


0.03


1


0.02


0


0.012


1


0.01


0

我们让r从+∞逐渐较小至-∞,对每一个区间的r计算点(fpr,tpr),如下图


r


fp


tp


fpr


tpr


(0.15,+∞)


0


0


0


0


(0.12,0.15]


0


1


0


0.2


(0.11,0.12]


0


2


0


0.4


(0.1,0.11]


1


2


0.2


0.4


(0.04,0.1]


2


2


0.4


0.4


(0.03,0.04]


3


3


0.6


0.6


(0.02,0.03]


3


4


0.6


0.8


(0.012,0.02]


4


4


0.8


0.8


(0.01,0.012]


4


5


0.8


1


(-∞,0.01)


5


5


1


1

由此描绘ROC曲线

计算auc

auc即为ROC曲线下方的面积,按梯形法(连续两点构成的梯形)计算面积得到上面例子的auc为0.62。

2 AUC的实际意义

AUC表示,随机抽取一个正样本和一个负样本,分类器正确给出正样本的score高于负样本的概率。在所有标注样本中,正样本共T个,负样本共F个,如果随机抽一个正样本和负样本,共有T*F个pair,其中如果有s个pair的正负样本pair满足于正样本的score高于负样本(权重为1),v个pair正负样本score相同(权重为0.5),则auc就等于(s+0.5v)/(T*F)。本文的例子中,s=15,v=1,则auc=(15+1*0.5)/(5*5)=0.62,和梯形法计算面积的结果是一致。整体上对于某一个正负样本pair:<i,j>的权重Wij计算如下

si和sj分别表示正样本i和负样本j的score。

下面我们对这个进行证明

我们用梯形法,求摸一个梯形的面积时,如上图

图中黄色填充区域的面积是

对S的分子分母同时乘以T*F,由于x*F=FP,y*T=TP,所以有

其中ΔFP=FP2-FP1>=0,表示随着r降低,本次计算roc点时新增的负样本数目;ΔTP=TP2-TP1>=0,表示随着r的降低,本次计算roc点时新增的正样本数目。

由上式可以看出,分母T*F表示所有正负样本的pair总数。

分子第一部分ΔFP*TP1表示新增正负样本pair数目,因为前一个的正样本数TP1和本次新增的负样本数ΔFP组成的pair都满足正样本的score高于负样本,这部分pair权重为1

分子第二部分ΔFP*ΔTP表示此次新增的同score的正负样本pair数目,这部分权重为0.5。

由此可知每一个梯形面积都表示此时正负样本pair满足正样本score大于等于负样本的加权计数值占全体正负样本pair的占比。从S0累计到最后一个Sn整体表示样本整体满足条件的正负样本的占比,此时等于AUC的面积计算值。

3 AUC的计算方法

到此为止,我们给出了计算auc的两种方法

1根据定义,由梯形法计算ROC曲线下的面积,求auc

2遍历全部样本,对正负pair的数目计数,求auc

在单机上,这两种算法的复杂度比较高,我们对方法2稍作改进,得到方法3

3我们可以将所有样本按升序排好后,通过样本的序号(或者说排序位置,从1开始)rank来计算,我们先给出公式

AUC=((所有的正样本rank相加)-T*(T+1)/2)/(T*F)

对相等score的样本,需要赋予相同的rank,即把所有这些score相等的样本的rank和取平均。

本文的例子(表1),按升序排好后如下表


rank


score


label


1


0.01


0


2


0.012


1


3


0.02


0


4


0.03


1


5


0.04


0


6


0.04


1


7


0.1


0


8


0.11


0


9


0.12


1


10


0.15


1

所有的正样本rank相加=10+9+(5+6)/2+4+2=30.5,注意5和6由于score相同,需要均分rank和。

auc=(30.5-5*6/2)/(5*5)=0.62

下面我们证明一下这个计算公式和方法2计算是一致的

首先是分母部分,T*F表示所有正负样本pair数,对于分子部分

设每个正样本i的rank值为Ri,其score为si,

  1. 若Ri的score唯一,表示si大于Ri-1个样本,样本i和这Ri-1个样本组成的pair权值为1,所有此类正样本的rank之和表示和之前的所有Ri个样本组成的pair数(包括和自己的pair以及之前的正样本pair也算在内)
  2. 如Ri的score不唯一,不妨设此时有p个正样本和q个负样本score和i相同,那么此时有p*q个pair权值为0.5。

    假设这连续p+q个样本中的第一个rank为t,则第p+q个样本的rank为t+p+q-1,根据方法3所述,这p+q个样本的rank值用平均rank来代替,为(t+t+p+q-1)/2,则p个正样本的ranker和为(t+t+p+q-1)*p*0.5=p*(t+t+p-1)/2+0.5*p*q。

    我们看到第二项就是p*q个正负样本pair的加权和,而第一项是rank从r,r+1,…,r+p-1这p个正样本的rank和,它表示这p个正样本和r前面的样本组成的pair数(这p个样本和自己的pair和之前的正样本pair也算在内)。

从1和2分析看,所有正样本rank和会把正样本自己(共T个pair)和自己之前的所有正样本组成的pair(共T*(T-1)/2个pair)都计算一遍,并且权重为1,因此最后要去掉这个计数,这个计数就是T*(T+1)/2个pair,因此方法3的公式的分子算出来是正确正负样本pair的加权和。

4 总结

auc的意义

1 auc只反应模型对正负样本排序能力强弱,对score的大小和精度没有要求

2 auc越高模型的排序能力越强,理论上,当模型把所有正样本排在负样本之前时,auc为1.0,是理论最大值。

时间: 2024-10-29 21:31:24

理解AUC的相关文章

auc ks 新理解

转https://www.zybuluo.com/frank-shaw/note/152851 新理解:我认为auc,和ks异曲同工.auc是根据预测概率(由大到小排序)作为阈值,可分割为不多于样本个数n个阈值.即可得到n个recall和precision把这些点连成线即为roc曲线.auc即为roc下的面积.那个点最接近左上角即为最好的阈值.1和0作阈值分别得到(0,0)和(1,1)点.样本点只是曲线上的点,理论上无穷大,不可能描绘完.横:假阳率,纵:recall.n个点为相应阈值分割得到的r

机器学习算法面试题

机器学习算法题 线性回归和逻辑回归的异同?  SVM和LR(逻辑回归)有什么不同? 线性回归的输入变量和输出变量都是连续的,逻辑回归的输入变量是连续的,输出变量是类别(或者说是离散的.枚举的). SVM和LR一般都用于处理分类问题,不同的是二者的实现原理,SVM是以支持向量到分类平面的距离最大化为优化目标,得到最优分类平面,LR是把输出类别以概率的方式表示,常用的是logistic sigmoid函数,然后通过极大似然或其他方法来构造最优化目标,进而求解得到最优参数. [补充:有一个大厂的面试官

对AUC计算公式和几何意义的理解(详细版)

对AUC的一些理解1.AUC(Area Under ROC Curve)是对机器学习模型的一种性能度量,其直观的意义是ROC(Receiver Operating Characteristic)围成的面积,然而很多文章对AUC的计算公式与其直观意义“面积”的对应描述不甚明了,于是我花了一些时间研究了AUC的计算公式和几何意义,全是我个人理解,如有不对,还望指出. 本文代码在 https://github.com/luo3300612/MachineLearningPy/blob/master/I

一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC

参考资料:https://zhuanlan.zhihu.com/p/46714763 ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到).其实,理解它并不是非常难,但是好多朋友都遇到了一个相同的问题,那就是:每次看书的时候都很明白,但回过头就忘了,经常容易将概念弄混.还有的朋友面试之前背下来了,但是一紧张大脑一片空白全忘了,导致回答的很差. 我在之前的面试过程中也遇到过类似的问题,我的面试经验是:一般笔试题遇到选择题基本都会考这个率,那个率,或者给一个场景让

ROC曲线、AUC、Precision、Recall、F-measure理解及Python实现

本文首先从整体上介绍ROC曲线.AUC.Precision.Recall以及F-measure,然后介绍上述这些评价指标的有趣特性,最后给出ROC曲线的一个Python实现示例. 一.ROC曲线.AUC.Precision.Recall以及F-measure 二分类问题的预测结果可能正确,也可能不正确.结果正确存在两种可能:原本对的预测为对,原本错的预测为错:结果错误也存在两种可能:原本对的预测为错,原本错的预测为对,如Fig 1左侧所示.其中Positives代表预测是对的,Negatives

我理解的朴素贝叶斯模型

我理解的朴素贝叶斯模型 我想说:"任何事件都是条件概率."为什么呢?因为我认为,任何事件的发生都不是完全偶然的,它都会以其他事件的发生为基础.换句话说,条件概率就是在其他事件发生的基础上,某事件发生的概率. 条件概率是朴素贝叶斯模型的基础. 假设,你的xx公司正在面临着用户流失的压力.虽然,你能计算用户整体流失的概率(流失用户数/用户总数).但这个数字并没有多大意义,因为资源是有限的,利用这个数字你只能撒胡椒面似的把钱撒在所有用户上,显然不经济.你非常想根据用户的某种行为,精确地估计一

ROC和AUC介绍以及如何计算AUC

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见这里.这篇博文简单介绍ROC和AUC的特点,以及更为深入地,讨论如何作出ROC曲线图以及计算AUC. ROC曲线 需要提前说明的是,我们这里只讨论二值分类器.对于分类器,或者说分类算法,评价指标主要有precision,recall,F-score1,以及我们今天要讨论的ROC和AUC.下图是一个ROC曲线的示例2. 正

AUC的计算

AUC指的是Area under roc curve,是roc下的面积 roc指的receiver operating characteristic curve,接受者操作曲线,具体的指的什么呢,是一个二维的曲线,横坐标是假正率,计算公式为:预测为正的负样本/负样本数量.纵坐标是真正率,计算公式为:预测为正的正样本/正样本的数量. 很多地方都有介绍,我们这里直接说下AUC的计算方法吧 1. 直接计算曲线下的面积,这个不介绍了,一般不会使用 2. 正样本M个,负样本N个,做交叉,总共会产生M*N个

【转】ROC和AUC介绍以及如何计算AUC

转自:https://www.douban.com/note/284051363/ ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对两者的简单介绍见[这里](http://bubblexc.com/y2011/148/).这篇博文简单介绍ROC和AUC的特点,以及更为深入地,讨论如何作出ROC曲线图以及计算AUC. # ROC曲线需要提前说明的是,我们这里只讨论二值分类器.对于分类器