分类器或学习器为测试样本产生一个实值或概率预测值,相当于通过分类器为每个测试样本打分,如何评价分类器呢?最常用的指标就是AUC。AUC的物理意义是ROC曲线的面积,接下来将介绍ROC曲线、AUC的概念、以及AUC的计算方法。
1 ROC 定义
根据阈值不同,样本被判断为正例和负例的结果也不同。
这些样本按照预测情况和真是分类分成四类:
TP (True Positive) 预测为正,实际为正,真正例
FN (False Negative) 预测为负,实际为正,假反例
TN (True Negative) 预测为负,实际为负,真反例
FP (False Positive) 预测为正,实际为负,假正例
ROC曲线动机:阈值不同,可以得到不同的结果,但是由分类器决定的统计图始终是不变的。这时候就需要一个独立于阈值(遍历每个阈值),只与分类器有关的评价指标,来衡量特定分类器的好坏。
横坐标:FPR = FP / (FP + TN) 负正类率,预测的正类中,实际负实例占所有负实例的比例;
纵坐标:TPR = TP / (TP + FN) 真正类率,预测的正类中,实际正例占所有正实例的比例。
负正类率越低越好,正正类率越高越好。
2 画ROC曲线
遍历样本中的每个分数值,将每个分数值设置为阈值,大于阈值的预测为正,小于阈值的预测为负,根据每个阈值计算FPR和TPR,画出曲线。示例:
假设已经得出一系列样本被划分为正类的概率,然后按照大小排序,下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。
接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。这样一来,我们一共得到了20组FPR和TPR的值,将它们画在ROC曲线的结果如下图:
3 AUC计算
AUC:任意取一个正例和一个负例,正例的预测值大于负例的预测值的概率有多大,也就是预测的准确性。
1)面积法
计算ROC曲线的面积,将曲线分成一个个的梯形去计算
2)排序法
一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test是等价的。这个等价关系的证明留在下篇帖子中给出。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。
公式如下
为了求的组合中正样本的score值大于负样本,如果所有的正样本score值都是大于负样本的,那么第一位与任意的进行组合score值都要大,我们取它的rank值为n,但是n-1中有M-1是正样例和正样例的组合这种是不在统计范围内的(为计算方便我们取n组,相应的不符合的有M个),所以要减掉,那么同理排在第二位的n-1,会有M-1个是不满足的,依次类推,故得到后面的公式M*(M+1)/2,我们可以验证在正样本score都大于负样本的假设下,AUC的值为1