根据上一篇博文(如何解释准确率、精确率与召回率?)中对相关概念的定义,引入“真正例率”(True Positive Rate,简称TPR)和“假正例率”(False Postive Rate,简称FPR)。
TPR和FPR的定义为:
假正例率:对应的是真实负样本中分类结果为正样本的比例;
真正例率:对应的是真实正样本中分类结果为正样本的比例。
ROC曲线(接受者操作特性曲线,receiver operating characteristic curve)的横坐标为假正例率,纵坐标为真正例率,曲线图如下:
绘制ROC曲线的思想是,对学习模型估计测试样本为正样本的概率从大到小排序,然后根据概率大小设置阈值,认为概率大于阈值的测试样本为正样本,认为概率小于阈值的测试样本为负样本。
下面对ROC曲线的首末两点进行解释:
测试数据集包含N例正样本和M例负样本;
1.若阈值设置为最大,则学习模型对所有测试样本都预测为负样本,混淆矩阵如下:
TPR = TP/( TP + FN) = 0/(0+N) = 0;
FPR = FP/( TN + FP) = 0/(0+M) = 0;
因此,当阈值设置最大时,TPR与FPR均为0。
2.若阈值设置为最小,则学习模型对所有测试样本都预测为正样本,混淆矩阵如下:
TPR = TP/(TP+FN) = N/(N+0) = 1;
FPR = FP/(TN+FP) = M/(M+0) = 1;
因此,当阈值设置最小时,TPR与FPR均为1。
真正的理想情况是,TPR应接近1,FPR接近0,即图中的(0,1)点。ROC曲线越靠拢(0,1)点,越偏离45度对角线越好。
AUC(Area Under Curve)定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围一般在0.5和1之间。
使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。
从AUC判断分类器(预测模型)优劣的标准:
AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
总之,AUC是衡量模型泛化能力的一个重要指标,若AUC值越大,则分类模型越优;反之,则分类模型越差。