auc是常见的对二类分类器的评价指标,其大小等于ROC曲线下的面积。
ROC曲线的横坐标为false postive rate(fpr),纵坐标为true positive rate(tpr),
false postive rate的计算法公式:
其中,fp表示false positive,即负例被分成正例的个数,tn表示true negative, 即负例被分成负例的个数,false positive rate 表示负例被分错的比例。
true postive rate 的计算公式是:
tp表示true positive,即正例被分成正例的个数,true postive rate表示正例被分对的比例。
从上面的定义可以看出,fpr越低越好,tpr越高越好。所以,ROC曲线越接近左上角,表示分类器性能越好。
那么,如何绘制ROC曲线呢?
根据ROC曲线的定义,我们只需要得到一组fpr和tpr的值就可以了。具体地,分类器会对每个样本输出一个预测值,可以是概率值,也可以是其他含义的数字。假设我们从中选定一个阈值,大于这个值则将样本分为正类,小于这个阈值则将样本分为负类。那么阈值越高,识别到的true positive 越少,tpr越低,对应地,false positive也会越少,fpr也越低,此时对应于ROC曲线上靠近原点的部分;阈值越低,识别到的true positive和false positive越多,tpr和fpr都会升高,此时,对应ROC曲线上靠近(1,1)的部分。所以,ROC曲线上的每个点都对应一个阈值,阈值最大时对应原点,即tpr=fpr=0,即把所有样本都归为负类,阈值最小时对应(1,1),此时,把所有的样本都归为正类。即纵坐标从左到右,阈值是不断降低的。
那么,将所有样本按输出值从高到低进行排序。对于每个不同的阈值,我们都可以得到一对fpr和tpr。那么把这些(fpr,tpr)对画在平面上就构成了ROC曲线。点越多,曲线越平滑。
计算时,我们使用积分的思想来计算ROC曲线下的面积,即AUC。
假设有两个点A(fp1,tp1)和B(fp2,tp2)(B点在右侧),这两个点之间的阴影面积的大小为
然后得到AUC的计算公式:
假设有n个点
1.http://www.dataschool.io/roc-curves-and-auc-explained/
2.http://stats.stackexchange.com/questions/105501/understanding-roc-curve