「机器学习」分类算法常见的评估指标

1、混淆矩阵(Confuse Matrix)

(1)若一个实例是正类,并且被预测为正类,即为真正类TP(True Positive)

(2)若一个实例是正类,但是被预测为负类,即为假负类FN(False Negative)

(3)若一个实例是负类,但是被预测为正类,即为假正类FP(False Positive)

(4)若一个实例是负类,并且被预测为负类,即为真负类TN(True Negative)

将四个指标一起呈现在表格中,就得到了如下的混淆矩阵

混淆矩阵 真实值
正类 负类
预测值 正类 TP(真正类) FP(假正类)
负类 FN(假负类) TN(真负类)

假设情况一:测试集有100个数据,我的模型预测结果中有60个正确值(其中有20个预测错误)和40个错误值(其中有10个预测错误),但是在实际结果中有50个正确值和50个错误值,那么我们将得到如下的混淆矩阵:

混淆矩阵 真实值
正类 反类
预测值 正类 40 20
反类 10 30

2、准确率(Accuracy)

准确率(ACC):对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。
A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN
针对情况一:
A c c u r a c y = 40 + 30 100 = 0.7 Accuracy = \frac{40 + 30}{100} = 0.7 Accuracy=10040+30=0.7
缺陷:这个指标不适合正负样本不均衡的情况,例如:假设测试集有100个数据,其中90个是正类,剩余10个是负类。即使分类模型将所有实例均预测为正类,Accuracy也有90,这样就没什么意义了。

3、精确率(Precision)

精准率(PPV):又称查准率,正确预测为正样本(TP)占预测为正样本(TP+FP)的百分比。
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} Precision=TP+FPTP
针对情况一:
P r e c i s i o n = 40 40 + 20 = 2 3 ≈ 0.67 Precision = \frac{40}{40 + 20} = \frac{2}{3} ≈ 0.67 Precision=40+2040=320.67

4、召回率(Recall)

召回率:又称为查全率,正确预测为正样本(TP)占正样本(TP+FN)的百分比。
R e c a l l = T P T P + F N Recall = \frac{TP}{TP + FN} Recall=TP+FNTP
针对情况一:
R e c a l l = 40 40 + 10 = 0.8 Recall = \frac{40}{40 + 10} = 0.8 Recall=40+1040=0.8

5、F1 Score

精确率和召回率是相互影响的,精确率升高则召回率下降,召回率升高则精确率下降,如果需要兼顾二者,就需要精确率、召回率的结合,最常见的方法就是F-Measure,又称F-Score。F-Measure是P和R的加权调和平均,即:
1 F = 1 1 + β 2 ⋅ ( 1 P r e c i s i o n + β 2 R e c a l l ) \frac{1}{F} = \frac{1}{1 + \beta^2} \cdot (\frac{1}{Precision} + \frac{\beta^2}{Recall}) F1=1+β21(Precision1+Recallβ2)

特别地,当β=1时,也就是常见的F1-Score,是P和R的调和平均,当F1较高时,模型的性能越好。
1 F 1 = 1 1 + 1 ⋅ ( 1 P r e c i s i o n + 1 R e c a l l ) \frac{1}{F1} = \frac{1}{1 + 1} \cdot (\frac{1}{Precision} + \frac{1}{Recall}) F11=1+11(Precision1+Recall1)

F 1 = 2 1 P r e c i s i o n + 1 R e c a l l = P r e c i s i o n ∗ R e c a l l ∗ 2 P r e c i s i o n + R e c a l l = 2 × T P 样 本 总 数 + T P − T N F1 = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}} = \frac{Precision * Recall * 2}{Precision + Recall} = \frac{2 \times TP}{样本总数 + TP - TN} F1=Precision1+Recall12=Precision+RecallPrecisionRecall2=+TPTN2×TP

针对情况一:
F 1 = 2 1 P r e c i s i o n + 1 R e c a l l = 2 3 2 + 5 4 = 8 11 ≈ 0.73 F1 = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}} = \frac{2}{\frac{3}{2} + \frac{5}{4}} = \frac{8}{11} ≈ 0.73 F1=Precision1+Recall12=23+452=1180.73

6、P-R曲线(Precision-Recall Curve)

P-R曲线是描述精确率和召回率变化的曲线,如下图所示:

「机器学习」分类算法常见的评估指标

我们希望分类结果的Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。假设情况二:测试集有100个数据,我的模型预测结果中有1个正确值(其中有0个预测错误)和99个错误值(其中有99个预测错误),即在实际结果中有100个正确值和0个错误值。那么准确率Precision=1,而召回率Recall=0.01。假设情况三:测试集有100个数据,我的模型预测结果中有100个正确值(其中有99个预测错误)和0个错误值(其中有0个预测错误),即在实际结果中有1个正确值和99个错误值。那么准确率Precision=0.01,而召回率Recall=1。因此在不同的场合中需要自己判断希望Precision比较高还是Recall比较高。如果是做实验研究,可以绘制P-R曲线来帮助分析。

P-R曲线如何评估呢?若一个学习器B的P-R曲线被另一个学习器A的P-R曲线完全包住,则称:A的性能优于B。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。

7、ROC(Receiver Operating Characteristic)

真正类率(true positive rate, TPR),也称为灵敏度 sensitivity,也即召回率,刻画的是被分类器正确分类的正实例占所有正实例的比例。
T P R = T P T P + F N TPR = \frac{TP}{TP + FN} TPR=TP+FNTP

假负类率(false negative rate, FNR),刻画的是被分类器错认为负类的正实例占所有正实例的比例。
F N R = F N F N + T P FNR = \frac{FN}{FN + TP} FNR=FN+TPFN

假正类率(false positive rate, FPR),也称为1-specificity,刻画的是被分类器错认为正类的负实例占所有负实例的比例。
F P R = F P F P + T N FPR = \frac{FP}{FP + TN} FPR=FP+TNFP

真负类率(true negative rate, TNR),也称为特异率 specificity,刻画的是被分类器正确分类的负实例占所有负实例的比例。
T N R = T N T N + F P TNR = \frac{TN}{TN + FP} TNR=TN+FPTN

细分析上述公式,我们可以可看出,灵敏度(真正率)TPR是正样本的召回率,特异度(真负率)TNR是负样本的召回率,而假负率 FNR=1−TPR、假正率 FPR=1−TNR

ROC曲线:接收者操作特征(receiver operating characteristic),ROC曲线上每个点反映着对同一信号刺激的感受性。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力。

横轴:负正类率(FPR,特异度);
纵轴:真正类率(TPR,灵敏度)。

「机器学习」分类算法常见的评估指标

理想目标: TPR=1, FPR=0,即图中(0,1)点。故ROC曲线越靠拢(0,1)点,即,越偏离45度对角线越好。

8、AUC(Area Under Curve)

AUC(Area Under Curve)被定义为 ROC曲线 下与坐标轴围成的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值。
AUC的物理意义:首先AUC值是一个概率值。假设分类器的输出是样本属于正类的Score(置信度),则AUC的物理意义为,任取一对(正、负)样本,正样本的Score大于负样本的Score的概率。

为什么使用Roc和Auc评价分类器?

既然已经这么多标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。下图是ROC曲线和Presision-Recall曲线的对比:

「机器学习」分类算法常见的评估指标

在上图中,a和c为Roc曲线,b和d为Precision-Recall曲线。a和b展示的是分类其在原始测试集(正负样本分布平衡)的结果,c和d是将测试集中负样本的数量增加到原来的10倍后,分类器的结果,可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线变化较大。