AUC是一个模型评价指标,用于二分类模型的评价,对于二分类模型,还有很多其他评价指标,比如logloss,accuracy,precision。实际中,AUC和logloss比accuracy更常用,这是因为很多机器学习模型对分类问题的预测结果都是概率,而如果要计算accuracy,需要先把概率转换成类别,这里就需要手动设置一个阈值,概率高于阈值放到一个类别,低于的话就放到另一个类别里,那么这个阈值就很大程序上影响了accuracy的计算效果,使用AUC和logloss能避免阈值带来的影响。

AUC是Area under curve的首字母缩写,字面上的意思是曲线下的面积,那么这个曲线是什么呢?这个曲线是ROC曲线,ROC曲线是统计学里面的概率。

ROC曲线是由样本的真实类别和预测概率计算出来的,具体来说,ROC曲线的x轴是伪阳性率(false positive rate),y轴是真阳性率(true positive rate)。对于二分类问题,一个样本的类别只有两种,我们用0,1来表示,0和1也可以分别叫做阴性和阳性。当我们用一个分类器进行概率的预测的时候,就有四种可能性:

auc曲线表示什么 python auc曲线的意义_AUC


真阳性率=(真阳性的数量)/(真阳性的数量+伪阴性的数量)

伪阳性率=(伪阳性的数量)/(伪阳性的数量+真阴性的数量)

这里我们需要选定阈值才能把概率转化为类别,选定不同的阈值会得到不同的结果。一旦确定了类别,我们就可以计算相对应的真、伪阳性率。当我们把所有的计算得到的真、伪阳性率连起来,就能画出ROC曲线,那么即可得到ROC曲线下面的面积值,也即AUC值。

以上是AUC的定义和计算公式,但它有什么意义呢?
举个实际的例子,对于0-1二分类样本,从中随机选取一个样本,实际为1预测为1的概况设为p1,实际为0预测为1的概率设为p0,AUC就是指p1>p0的概率。
另外AUC对样本类别是否均衡并不敏感,因此不均衡样本通常用AUC评价分类器性能。

Python里面计算AUC的代码:

from sklearn import metrics

def aucfun(act,pred):
    fpr,tpr,thresholds=metrics.roc_curve(act,pred,pos_label=1)
    return metrics.auc(fpr,tpr)