一、定义
1.1 样本与结果的分类
如下图所示,以阴阳(Negative青,Positive黄)标记样本实际类别(如:阴阳、正负、男女、是否、有无……),以真假(True,False斜线阴影)描述预测结果是否正确,因此可将样本分为4类,简记为:
- 真阳(TP):样本为阳,预测为阳(黄绿色);
- 假阴(FN):样本为阳,预测为阴(黄绿色+斜线);
- 真阴(TN):样本为阴,预测为阴(青绿色);
- 假阳(FP):样本为阴,预测为阳(青绿色+斜线)。
二、衡量二分类模型性能的常用评价指标
根据不同场景,衡量二分类模型的性能会侧重于不同的指标,通常会选择多个互补的指标来评价模型的好坏,下图展示了8个直接的指标,后面还会介绍几个综合和衍生指标。
2.1 准确度(ACC,Accuracy)
【准确度】(Accuracy)是指所有样本中被预测正确的比例,是最常被用于衡量二分类模型性能的指标,通常正确率越高模型越好,当指标值为100%时所有标本都被正确分类,模型性能达到最优(不考虑过拟合和泛化能力),与之互补的指标是错误率(Error Rate),两者之和等于1。但是,当阴阳两类样本分布不均匀时,该指标往往不能准确地评价模型的性能。例如:当阳性样本仅占1%时,即便该指标值达到99%,也未必能说明模型是否优良,比如一个把所有样本都判断为阴性的模型,在这份样本上的准确度就为99%,但直觉告诉我们这个模型没什么实际应用意义,特别是在疾病检验场景下,这简直就是一个毫无使用价值的模型,在该情况下召回率则可补足该缺陷。
$$ {\color{blue}\text{准确度(Acc)}}=\frac{TP+TN}{P+N} $$
2.2 召回率(TPR,Recall)
【召回率】(Recall)又称真阳性率(TPR,true positive rate)、命中率(hit rate)、灵敏度(Sensitivity),是指在阳性样本中被预测正确的比例,是ROC曲线的纵轴。该指标衡量了模型对阳性样本的识别能力,对于阳性样本占比低的情况依然有效,但是它也会偏袒于把所有样本都判断为阳性的模型,因此要结合其它指标综合来评价模型的好坏,不能仅使用召回率一个指标,而伪阳性率就是一个不错的补充指标。
$$ {\color{blue}\text{召回率(Recall)|真阳性率(TPR)}}=\frac{TP}{P}=\frac{TP}{TP+FN} $$
【伪阳性率】(FPR,false positive rate),又称:错误命中率,假警报率(false alarm rate),是指在阴性样本中被判断的阳性的比例,通常伪阳性率越小越好。是ROC曲线的横轴,与真阴性率是互补指标。
$$ {\color{blue}\text{伪阳性率(FPR)}}=\frac{FP}{N}=\frac{FP}{FP+TN}=1-\mathrm{{\color{blue}{TNR}}} $$
【真阴性率】(TNR,特异度,SPC,Specificity)衡量了模型对阴性样本的识别能力,是伪阳性率的互补指标,两者之和等于1。
$$ {\color{blue}\text{真阴性率(TNR)|特异度(Specificity)}}=\frac{TN}{N}=\frac{TN}{FP+TN}=1-\mathrm{\color{blue}{FPR}} $$
2.3 精确率(PPV,Precision)
【定义】在被预测为阳性的样本中被预测正确的样本占比
【别称】阳性预测值(PPV)
$$ {\color{blue}\text{精确率(Precision)|阳性预测值(PPV)}}=\frac{TP}{TP+FP}=\frac{TP}{P'} $$
【相关指标】阴性预测值 (NPV):NPV = TN/(TN+FN) = TN/N'
$$ {\color{blue}\text{阴性预测值(NPV)}}=\frac{TN}{TN+FN}=\frac{TN}{N'} $$
2.4 F-score
对同一样本,精确率$\mathrm{\color{blue}{p}}=\mathrm{\color{blue}{PPV}}$与召回率$\mathrm{\color{blue}r}=\mathrm{\color{blue}{TPR}}$,两者一般此消彼长,很难兼得,F-score(也称 F-measure)是精确率与召回率的综合衡量指标,当$\alpha>1$时更注重精确率,当$\alpha<1$时更注重召回率:
$$ \mathrm{\color{blue}{F_\alpha}} =\dfrac{1+\alpha^2}{\dfrac{1}{\mathrm{\color{blue}p}}+\dfrac{\alpha^2}{\mathrm{\color{blue}r}}} =\dfrac{(1+\alpha^2)\,\mathrm{\color{blue}p}\times \mathrm{\color{blue}r}}{\alpha^2\mathrm{\color{blue}p}+\mathrm{\color{blue}r}} $$
特别的,当$\alpha=1$时,$\mathrm{\color{blue}{F_\alpha}}$即为$\mathrm{\color{blue}{F_1}}$值,它是精确率与召回率的调和平均值,同等注重两者:
$$ \frac{2}{\mathrm{\color{blue}{F_1}}}=\frac{1}{\mathrm{\color{blue}p}}+\frac{1}{\mathrm{\color{blue}r}} \quad \Longrightarrow\quad \mathrm{\color{blue}{F_1}}=\frac{2\,\mathrm{\color{blue}p}\times\mathrm{\color{blue}r}}{\mathrm{\color{blue}p}+\mathrm{\color{blue}r}}=\frac{2TP}{2TP+FP+FN} $$
勘误:李航《统计学习方法》第2版,P30 第一个公式,应该为上式。
【相关指标】Kappa系数
$$ {\color{blue}\text{Kappa系数(k)}}=\frac{p_o-p_e}{1-p_e} $$
其中:$p_o=\mathrm{ACC}$,$\begin{align}p_e=\frac{\sum_{i=1}^{c}{a_i b_i}}{n^2}\end{align}$,$n$是样本量,$a_i$是第i类样本量,$b_i$是被预测为第i类的数量
2.6 交并比(IoU)
【定义】在阳性样本或被预测为阳性的样本中被预测正确的比例。在目标检测中,产生的候选框(candidate bound)与原标记框(ground truth bound)的交叠率。
$$ {\color{blue}\text{交并比(IoU)}}=\frac{TP}{TP+FP+FN}=\frac{area(C)\bigcap area(G)}{area(C)\bigcup area(G)} $$
2.7 接收者工作特征曲线(ROC)
ROC曲线,即接收者工作特征曲线(receiver operating characteristic curve),起源于无线电接收信号正确性的评价。
对于同一模型来说,采用不同的分类阈值,会有不同的(1-特异度)和(灵敏度),即每个阈值都可以对应到平面$[0,1]\times[0,1]$上的一个点(1-特异度为横轴,灵敏度为纵轴)。把模型在原始数据上的所有不同预测值(通常为模型预测样本为阳性的概率)作为分类阈值,将从小到大每个阈值所对应的点集连起来,便绘制成了经验ROC曲线,这样绘制的经验ROC曲线是不光滑的折线。在绘制ROC曲线时,通常还会增加一条参考线:对于所有阈值,$灵敏度\equiv 1-特异度$(过原点斜率为1的直线)。
- 横轴:FPR(False Positive Rate)—— 伪阳性率 = 1-特异度
- 纵轴:TPR(True Positive Rate)—— 真阳性率 = 灵敏度
ROC曲线下方的面积,记为AUC(Area under the Curve of ROC),显然AUC在0~1之间,可将其理解为在所有特异度下的平均灵敏度,简单说AUC值越大的分类器,其性能越好,参考标准如下:
AUC > 0.5,优于随机猜测。如设定适当的阈值,分类器(模型)有一定价值:
- 0.5~0.7:价值较低
- 0.7~0.9:价值中等
- 0.9~1.0 :价值较高
- AUC = 1,是完美分类器,采用这个预测模型时,至少存在一个阈值能得出完美预测
- AUC = 0.5,跟随机猜测一样,模型没有预测价值
- AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测
关于AUC的具体计算方法和AUC比较方法,可参考:《医学统计学 第3版》颜虹,徐勇勇,P228~235(勘误:P233,公式(14-42)中求和符号上限应为$n_A$)。基于这本书中的方法,我用 Mathematica 写了段代码,来计算AUC和比较两模型的AUC:https://github.com/SqRoots/mma-package-lix(Mathematica 12.0 以上版本已经支持绘制ROC曲线了,参见 NetMeasurements)。