AUC在机器学习领域中是一种模型评估指标。根据维基百科的定义,AUC(area under the curve)是ROC曲线下的面积。所以,在理解AUC之前,要先了解ROC是什么。而ROC的计算又需要借助混淆矩阵,因此,我们先从混淆矩阵开始谈起。
混淆矩阵假设,我们有一个任务:给定一些患者的样本,构建一个模型来预测肿瘤是不是恶性的。在这里,肿瘤要么良性,要么恶性,所以这是一个典型的二分类问题。假设我们用y=1表示肿瘤是良性,y=0表示肿瘤是恶性。TP表示预测为良性,而实际也是良性的样例数;
FN表示预测为恶性,而实际是良性的样例数;FP表示预测为良性,而实际是恶性的样例数;TN表示预测为恶性,而实际也是恶性的样例数;所以,上面这四个数就形成了一个矩阵,称为混淆矩阵。那么接下来,我们如何利用混淆矩阵来计算ROC呢?首先我们需要定义下面两个变量:FPR表示,在所有的恶性肿瘤中,被预测成良性的比例。称为伪阳性率。伪阳性率告诉我们,随机拿一个恶性的肿瘤样本,有多大概率会将其预测成良性肿瘤。显然我们会希望FPR越小越好。TPR表示,在所有良性肿瘤中,被预测为良性的比例。称为真阳性率。真阳性率告诉我们,随机拿一个良性的肿瘤样本时,有多大的概率会将其预测为良性肿瘤。显然我们会希望TPR越大越好。
ROC曲线
介绍了混淆矩阵之后,我们就可以了解一下ROC(receiver operating characteristic curve)曲线是怎么定义的。
我们知道,在二分类(0,1)的模型中,一般我们最后的输出是一个概率值,表示结果是1的概率。那么我们最后怎么决定输入的x是属于0或1呢?我们需要一个阈值,超过这个阈值则归类为1,低于这个阈值就归类为0。所以,不同的阈值会导致分类的结果不同,也就是混淆矩阵不一样了,FPR和TPR也就不一样了。所以当阈值从0开始慢慢移动到1的过程,就会形成很多对(FPR, TPR)的值,将它们画在坐标系上,就是所谓的ROC曲线了。
我们来举一个例子。比如我们有5个样本:
真实的类别(label)为y = c(1,1,0,0,1).
一个分类器预测样本为1的概率为p=c(0.5, 0.6, 0.55, 0.4, 0.7).
正如上面说的,我们需要有阈值,才能将概率转换为类别,才能得到FPR和TPR。而选定不同的阈值会得到不同的FPR和TPR。假设我们现在选定的阈值为0.1,那么5个样本都被归类为1。如果选定0.3,结果仍然一样。如果选了0.45作为阈值,那么只有样本4被分进0,其余都进入1类。当我们不断改变阈值,就会得到不同的FPR和TPR。然后我们将得到的(FPR , TPR)连接起来,就得到了ROC曲线了