简单梳理对AUC的理解

时间:2022-12-07 17:42:32

     AUC(Area Under Curve)是机器学习中二分类模型的一个评价指标。定义为ROC曲线中下的面积,但我们先不管定义。

    简单解释,AUC代表的是真阳性率(实际阳性、猜测阳性) > 伪阳性率(实际阴性、猜测阳性)的概率

    就拿预测患糖尿病概率这一事例来说,对于真的患有糖尿病的人我们当然应该尽可能预测为阳性,而对没患糖尿病的人应尽可能不预测为阳性,所以真阳性率应该尽可能大,伪阳性率应尽可能小。


    深入解释的话,首先来看混淆矩阵

    简单梳理对AUC的理解

    参考混淆矩阵,我们可以直观知道:

    真阳性率  =  真阳性 / 真实阳性总数  =  TP  /  ( TP + FN )

    伪阳性率  =  伪阳性 / 真实阴性总数  =  FP  /  ( FP + TN )


    接着,我们知道,一堆数据经过分类器模型的计算后,会得到一个0-1之间的数,这个数即样本结果为1的概率,如下面的例子:

    简单梳理对AUC的理解


    一般在生活中遇到这种数据,我们会习惯性地用四舍五入来归纳预测的数据,即>=0.5为1,<0.5为0,如此得到的混淆矩阵如下:

    简单梳理对AUC的理解    

    计算的结果:

    真阳性率 = 3 / (3+2) = 0.6

    伪阳性率 = 3 / (3+4) = 0.43

    这便是一个可用的点数据。


    回头看一下,得出这组数据的前提,是我们选择了四舍五入(0.5)来归纳预测数据,这里的0.5便是阀值

    而除了0.5,阀值还可能是从0到1的任何一个值,一般把所有预测概率结果排序得到所有阀值(如实例中的阀值就有0.2、0.3、0.4、0.5、0.6、0.7、0.9),以阀值来划分预测数据是属于阳性还是阴性。


    所以当我们把阀值设定为许多个不同的数,便能得到许多个不同的混淆矩阵,从而计算得到许多组不同的(真阳性率, 伪阳性率)的点数据,这时我们便能引入ROC曲线这个东西了,所有这些点构成的曲线便是ROC曲线:

    简单梳理对AUC的理解

    数据量大时,曲线近于平滑,大概会长比如这样子(网上随便找的图):

    简单梳理对AUC的理解简单梳理对AUC的理解

    这时,我们再来看AUC的定义:ROC曲线中下的面积。也就是说,曲线下的阴影部分面积即为我们心心念念的AUC了!


    所以AUC值一般是越大越好,即阴影面积越大。

    放到ROC曲线看,即TPR越大越好,FPR越小越好。    

    放到混淆矩阵中看,即真阳性率越高越好(阳性值尽可能多预测为阳性),伪阳性率越低越好(阴性值尽可能少预测为阳性)。

    而AUC描述的,就是这个“好”的大小。