评估分类器的指标取决于要解决问题的性质以及预测误差的潜在后果。以癌症问题为例,我们希望模型能够预测尽可能多的真实癌症诊断,因此有两种方案:在某人实际上没有患癌症时对其进行分类/预测(假阳性),并在某人实际上患有癌症时预测其没有患癌症(假阴性)。

准确率、精确率、召回率、F1-score

混淆矩阵

预测为正类 预测为负类
实际为正类 TP(True Positive) FN(False Negative假阴性)
实际为负类 FP(False Positive假阳性) TN(True Negative)

准确率:衡量所有样本被分类准确的比例
分类问题评估指标 - 图1
精确率:衡量正样本的分类准确率。当假阳性的后果很高时首选。
分类问题评估指标 - 图2
召回率:分类正确的正样本占总的正样本的比例。当假阴性的后果很高时首选。
分类问题评估指标 - 图3
F1-score:精确率和召回率的调和平均
分类问题评估指标 - 图4
上面的F1-score精确率和召回率分配了同等的权重,但有时我们会更看重精确率或召回率其中的一项。此时可引入非负权重β。
分类问题评估指标 - 图5%5Cfrac%7BPR%7D%7B%CE%B2%5E%7B2%7DP%2BR%7D%0A#card=math&code=F_%7B%CE%B2%7D%3D%28%CE%B2%5E%7B2%7D%2B1%29%5Cfrac%7BPR%7D%7B%CE%B2%5E%7B2%7DP%2BR%7D%0A&id=QmlbR)
最好的分类器当然是准确率、精确率,召回率都为1,但实际场景中几乎是不可能的,而且精确率和召回率往往会相互影响,一个高了另一个会有所下降,因此在实际应用中要根据具体需求做适当平衡。

ROC和AUC

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣。
image.png
ROC曲线是由一系列因区分阈值变化产生的点,横坐标是FPR(False Positive Rate),纵坐标是TPR(True Positive Rate同召回率)。
分类问题评估指标 - 图7
当ROC曲线越接近FPR=0,TPR=1的点,即左上角,该分类器的性能越好。对于一个二分类模型,它的输出结果其实是判断这个样本属于真实的阳性相对于假阳性的概率 。我们根据每个测试样本属于正样本的概率值从大到小排序。下图中共有20个测试样本,“Class”表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。
image.png
然后按照样本的score值,从大到小依次作为阈值,当样本score值大于等于阈值时则判定为正样本,否则为负样本。例如第一个阈值取0.9,这时只有id=1的样本被预测为正样本,其余都是负样本,此时TPR=1/1+9=0.1, FPR=0/0+10=0,下面列出一部分计算情况:

threshold TPR FPR
0.9 0.1=1/(1+9) 0=0/(0+10)
0.8 0.2=2/(2+8) 0=0/(0+10)
0.7 0.2=2/(2+8) 0.1=1/(1+9)
0.6 0.3=3/(3+7) 0.1=1/(1+9)
0.51 0.6=6/(6+4) 0.3=3/(3+7)
0.4 0.7=7/(7+3) 0.4=4/(4+6)
0.3 1=10/(10+0) 1=10/(10+0)

当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。
image.png
AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

AUC应该理解为对随机取出一个正样本和一个负样本,模型预测正样本为正样本的概率大于预测负样本为正样本的概率的概率值。如果auc值大,当然会有更多的正样本被更大概率预测准确,负样本被预测为正样本的概率也会越小。

既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
image.png
在上图中,(a)和(c)为ROC曲线,(b)和(d)为Precision-Recall曲线。(a)和(b)展示的是分类器在原始测试集(正负样本分布平衡)的结果,(c)和(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果。可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线则变化较大。