分类模型评估指标

准确率的局限性

=+准确率=\frac{正类}{正类+反类}
准确率在一些特定的应用场景会有问题,比如在分类不均衡的分类中。比如在一个样本极不均衡的例子,想预测人群中患癌症的模型中,在训练样本时,1千个样本患癌症的人数为个位数,不患癌症的人数为990多人,在做其他操作的情况下,让模型把所有样本默认认为是不患癌症类型,这样的情况下,准确率高达99%多,但是这个模型实际没有什么作用。

精确率(precision)和召回率(recall)

分类模型评估指标

  • TP:实际为正预测为正
  • FP:实际为负但预测为正
  • FN:实际为正但预测为负
  • TN:实际为负预测为负

精确率:
Precision=TPTP+FPPrecision=\frac{TP}{TP+FP}
通俗的讲就是所有预测为正确的样本,给真正为正确占的比例是多少

召回率:
Recall=TPTP+FNRecall =\frac{TP}{TP+FN}
通俗的讲就是所有正确的样本,给预测为正确占的比例是的多少
分类模型评估指标
1到2提升了召回率,但是却牺牲了精确率
精确率与召回率是一对矛盾的度量。一般来说,精确率高时,召回率往往偏低;而召回率高时,精确率往往偏低。通常只有在一些简单任务中,才会使二者都很高。

f1-score(精确率和召回率的调和平均)
F1=2PrecisionRecallPrecision+Recall=2TP2TP+FP+TN F_1 =\frac{2*Precision*Recall}{Precision+Recall} =\frac{2TP}{2TP+FP+TN}
可以看到,在上式里我们认为精确率和召回率是一样重要的(他们的权重一样),当我们的评估更加注重精确率或者召回率的时候,我们引入FβF_{\beta},对于任意的非负值 β \betaβ,我们定义
Fβ=(β2+1)PrecisionRecallβ2Precision+RecallF_{\beta}=(\beta^2+1)*\frac{Precision*Recall}{\beta^2*Precision+Recall}
可以看到,我们可以通过调整 β\beta 来帮助我们更好地评估结果。

PR曲线

P-R曲线的P就是查准率(Precision),R就是查全率(Recall)。以P作为横坐标,R作为纵坐标,就可以画出P-R曲线。

对于同一个模型,通过调整分类阈值,可以得到不同的P-R值,从而可以得到一条曲线(纵坐标为P,横坐标为R)。通常随着分类阈值从大到小变化(大于阈值认为P),Precision减小,Recall增加。比较两个分类器好坏时,显然是查得又准又全的比较好,也就是的PR曲线越往坐标(1,1)的位置靠近越好。若一个学习器的P-R曲线被另一个学习器完全”包住”,则后者的性能优于前者。当存在交叉时,可以计算曲线围住面积,不太容易判断,但是可以通过平衡点(查准率=查全率,Break-Even Point,BEP)来判断。

下图中,基于BEP的比较,可以认为模型A优于模型B。
分类模型评估指标

AUC

分类模型评估指标
True Positive Rate(真阳率):
TPRate=TPTP+FN TPRate=\frac{TP}{TP+FN}
TPRate的意义是所有真实类别为1的样本中,预测类别为1的比例。

False Positive(伪阳率):
FPRate=FPFP+TNFPRate= \frac{FP}{FP+TN}
FPRate的意义是所有真实类别为0的样本中,预测类别为1的比例

AUC即ROC曲线下的面积,而ROC曲线的横轴是FPRate纵轴是TPRate,当二者相等时,即y=x,如下图:
分类模型评估指标
表示的意义是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的。
换句话说,分类器对于正例和负例毫无区分能力,和抛硬币没什么区别,一个抛硬币的分类器是我们能想象的最差的情况,因此一般来说我们认为AUC的最小值为0.5(最大熵)(当然也存在预测相反这种极端的情况,AUC小于0.5,这种情况相当于分类器总是把对的说成错的,错的认为是对的,那么只要把预测类别取反,便得到了一个AUC大于0.5的分类器)。

而我们希望分类器达到的效果是:对于真实类别为1的样本,分类器预测为1的概率(即TPRate),要大于真实类别为0而预测类别为1的概率(即FPRate),即y>x,因此大部分的ROC曲线长成下面这个样子:
分类模型评估指标
最理想的情况下,没有真实类别为1而错分为0的样本,TPRate一直为1,于是AUC为1,这便是AUC的极大值。((0,1)点与(1,1)相连为面积一的正方形)

说了这么多还是不够直观,不妨举个简单的例子。首先对于硬分类器(例如SVM,NB),预测类别为离散标签,对于8个样本的预测情况如下:分类模型评估指标得到混淆矩阵如下:分类模型评估指标进而算得TPRate=3/4,FPRate=2/4,得到ROC曲线:分类模型评估指标最终得到AUC为0.625。对于LR等预测类别为概率的分类器,依然用上述例子,假设预测结果如下:分类模型评估指标这时,需要设置阈值来得到混淆矩阵,不同的阈值会影响得到的TPRate,FPRate,如果阈值取0.5,小于0.5的为0,否则为1,那么我们就得到了与之前一样的混淆矩阵。其他的阈值就不再啰嗦了。依次使用所有预测值作为阈值,得到一系列TPRate,FPRate,描点,求面积,即可得到AUC。

最后说说AUC的优势,AUC的计算方法同时考虑了分类器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器作出合理的评价。例如在反欺诈场景,设欺诈类样本为正例,正例占比很少(假设0.1%),如果使用准确率评估,把所有的样本预测为负例,便可以获得99.9%的准确率。但是如果使用AUC,把所有样本预测为负例,TPRate和FPRate同时为0(没有Positive),与(0,0) (1,1)连接,得出AUC仅为0.5,成功规避了样本不均匀带来的问题。

参考

[1] [机器学习分类模型效果评估指标介绍]:(https://blog.****.net/zuolixiangfisher/article/details/81328297)
[1] [如何理解统计的AUC]:(https://www.zhihu.com/people/carlisle/answers)