AUC原理小记
条评论AUC 是Area under curve的首字母缩写。Area under curve是什么呢,从字面理解,就是一条曲线下区域的面积,所有我们要先来弄清楚这条曲线是什么。这个曲线有个名字叫ROC曲线。ROC曲线是统计里面的概率,最早由电子工程师在二战中提出来。这篇文章主要描述AUC原理。
ROC曲线
ROC曲线是基于样本的真是类别和预测概率算出来的,具体来说,ROC曲线的x轴是伪阳性率(false positive rate), y轴是真阳性率(true positive rate)。因此首先来明确真、伪阳性的概念。
对于二分类问题,一个样本的类别只有两种,我们用0,1分别表示两种类别,0和1也可以分别叫做阴性和阳性。当我们使用一个分类器进行概率的预测的时候,对于真实为0的样本,我们可能预测其为0或1,同样对于真实为1的样本我们也可能预测为0或1,这样就存在4种可能性。
于是有: \[ 真阳性率(True Positive Rate, TPR) = \frac {真阳性的数量} {真阳性的数量 + 伪阴性的数量} \]
\[ 伪阳性率(True Positive Rate, TPR) = \frac {伪阳性的数量} {伪阳性的数量 + 真阴性的数量} \]
例\(1.1\): 比如有5个样本: 真实的类别标签分别是 \(y = c(1, 1, 0, 0, 1)\) 一个分类器预测样本为1的概率是\(p = c(0.5, 0.6, 0.55, 0.4, 0.7)\)
我们需要选定阈值才能把概率转化为类别,选定不同的阈值会得到不同的结果。
- 若我们选定的阈值为0.1,那5个样本被分进1的类别;
- 如果选定阈值为0.3, 结果仍然一样;
- 如果选取了0.45作为阈值,那么只有样本4被分进0,其余都进入1类 ……
一旦得到了类别,我们就可以计算相应的真、伪阳性的概率,当我们把所有计算得到的不同真、伪阳性率连起来,就画出了ROC曲线,根据例\(1.1\)来绘制ROC曲线和计算AUC的Python代码:
1 | from sklearn.metrics import roc_curve, auc ###计算roc和auc |
代码输出如下:
AUC 的含义
通过AUC的定义我们知道了AUC是什么,怎么算,但是它的含义是什么呢?如果从定义来理解AUC的含义,比较困难,实际上AUC和Mann-Whitney U test有密切的联系。从Mann–Whitney U statistic的角度来解释,AUC就是从所有真实标签为1的样本中随机选取一个样本,从所有真是标签为0的样本中随机选取一个样本,然后根据你的分类器对两个随机样本进行预测,把1样本预测为1的概率\(p_1\),把0样本预测为1的概率为\(p_0\),\(p_1 > p_0\)的概率就是AUC。所以AUC反应的是分类器对样本的排序能力。根据这个解释,如果我们完全随机的对样本分类,那么AUC应该接近0.5。
另外值得注意的是,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。
假设分类器的输出是样本属于正类的score(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的score大禹负样本score的概率。从而我们能够理解对于AUC而言,并不关心具体预测的结果是标签或者概率,也不需要卡什么阈值,只要在预测结果之间有排序即可。
Mann-Whiteney U test and statistic
关系
从定义上看,AUC衡量的额是ROC曲线下与横轴为成的面积值。但从统计角度来理解AUC的意义,还要结合Mann-Whitney U 统计量。
首先,AUC与Mann-Whitney U统计量基本上是等价的: \[ AUC = \frac {U} {n_1, n_0} \]
其中\(n_1\) 和\(n_0\)分别代表样本中,样本1的总个数和样本0的总个数。则上例中\(n_0 = 3\), \(n_1 =2\)。
参考引用
- 本文链接:http://www.keeptry.cn/2018/07/20/AUC原理小记/
- 版权声明:chuang keeptry-blog
分享