准确率(Precision)、召回率(Recall)、F值对于模型的评估

 

一、有哪些模型评估方法?

在机器学习、数据挖掘、推荐系统完成建模之后,需要对模型的效果做评价。

业内目前常常采用的评价指标有准确率(Precision)、召回率(Recall)、F值(F-Measure)等,下图是不同机器学习算法的评价指标。下文讲对其中某些指标做简要介绍。

准确率(Precision)、召回率(Recall)、F值对于模型的评估

倾向于使用准确率,是因为熟悉它的定义,而不是因为它是评估模型的最佳工具!  精度(查准率)和召回率(查全率)等指标对衡量机器学习的模型性能是非常基本的,特别是在不平衡分布数据集的案例中,在周志华教授的「西瓜书」中就特别详细地介绍了这些概念。

二、什么是分布不平衡的数据集?

  倘若某人声称创建了一个能够识别登上飞机的*的模型,并且准确率(accuracy)高达 99%。你相信吗?好了,有这么一个模型:将从美国机场起飞的所有乘客简单地标注为非*。已知美国全年平均有 8 亿人次的乘客,并且在 2000-2017 年间共发现了 19 名*,这个模型达到了接近完美的准确率——99.9999999%。尽管这个模型拥有接近完美的准确率,但是在这个问题中准确率显然不是一个合适的度量指标。

  *检测是一个不平衡的分类问题:我们需要鉴别的类别有两个——*和非*,其中一个类别代表了极大多数的数据点。                                                  

  另一个不平衡分类问题出现在当疾病在公众中的发病率很低时的疾病监测。在这两种情况下,正例类别——疾病或*,远远少于负例类别的数量。这种问题是数据科学中比较常见的例子,其中准确率并不是评估模型性能的很好的衡量标准。

  直观地说,我们应该聚焦于正例(*)的识别。

三、混淆矩阵

True Positive(真正,TP):将正类预测为正类数

True Negative(真负,TN):将负类预测为负类数

False Positive(假正,FP):将负类预测为正类数误报 (Type I error)

False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error)

准确率(Precision)、召回率(Recall)、F值对于模型的评估

准确率(Precision)、召回率(Recall)、F值对于模型的评估

准确率(Precision)、召回率(Recall)、F值对于模型的评估

1、准确率(Accuracy)

准确率(accuracy)计算公式为:
准确率(Precision)、召回率(Recall)、F值对于模型的评估

注:准确率是我们最常见的评价指标,而且很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好。
准确率确实是一个很好很直观的评价指标,但是有时候准确率高并不能代表一个算法就好。比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震、1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的准确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为什么99%的准确率的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的准确率却忽视了我们关注的东西。再举个例子说明下。在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc也有 99% 以上,没有意义。因此,单纯靠准确率来评价一个算法模型是远远不够科学全面的。

2、错误率(Error rate)

错误率则与准确率相反,描述被分类器错分的比例,error rate = (FP+FN)/(TP+TN+FP+FN),对某一个实例来说,分对与分错是互斥事件,所以accuracy =1 - error rate。

3、灵敏度(sensitive)

sensitive = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力。

4、特效度(sensitive)

specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力。

5、精确率、精度(Precision)

精确率(precision)定义为:
准确率(Precision)、召回率(Recall)、F值对于模型的评估

表示被分为正例的示例中实际为正例的比例。

6、召回率(recall)

召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率与灵敏度是一样的。

7、综合评价指标(F-Measure)

P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。
F-Measure是Precision和Recall加权调和平均:
准确率(Precision)、召回率(Recall)、F值对于模型的评估
当参数α=1时,就是最常见的F1,也即
准确率(Precision)、召回率(Recall)、F值对于模型的评估
可知F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

8、其他评价指标

计算速度:分类器训练和预测需要的时间;

鲁棒性:处理缺失值和异常值的能力;

可扩展性:处理大数据集的能力;

可解释性:分类器的预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。

五、下面来看一下ROC和PR曲线

1、ROC曲线:


ROC(Receiver Operating Characteristic)曲线是以假正率(FP_rate)和假负率(TP_rate)为轴的曲线,ROC曲线下面的面积我们叫做AUC,如下图所示:

准确率(Precision)、召回率(Recall)、F值对于模型的评估

 

图片根据Paper:Learning from eImbalanced Data画出


其中:准确率(Precision)、召回率(Recall)、F值对于模型的评估
(1)曲线与FP_rate轴围成的面积(记作AUC)越大,说明性能越好,即图上L2曲线对应的性能优于曲线L1对应的性能。即:曲线越靠近A点(左上方)性能越好,曲线越靠近B点(右下方)曲线性能越差。
(2)A点是最完美的performance点,B处是性能最差点。
(3)位于C-D线上的点说明算法性能和random猜测是一样的–如C、D、E点。位于C-D之上(即曲线位于白色的三角形内)说明算法性能优于随机猜测–如G点,位于C-D之下(即曲线位于灰色的三角形内)说明算法性能差于随机猜测–如F点。
(4)虽然ROC曲线相比较于Precision和Recall等衡量指标更加合理,但是其在高不平衡数据条件下的的表现仍然过于理想,不能够很好的展示实际情况。

 

2、PR曲线:


即,PR(Precision-Recall)曲线。
举个例子(例子来自Paper:Learning from eImbalanced Data):
假设N_c>>P_c(即Negative的数量远远大于Positive的数量),若FP很大,即有很多N的sample被预测为P,因为准确率(Precision)、召回率(Recall)、F值对于模型的评估,因此FP_rate的值仍然很小(如果利用ROC曲线则会判断其性能很好,但是实际上其性能并不好),但是如果利用PR,因为Precision综合考虑了TP和FP的值,因此在极度不平衡的数据下(Positive的样本较少),PR曲线可能比ROC曲线更实用。

六、总结:

对于二分类问题:

  • 真正例(TP):实际上是正例的数据点被标记为正例

  • 假正例(FP):实际上是反例的数据点被标记为正例

  • 真反例(TN):实际上是反例的数据点被标记为反例

  • 假反例(FN):实际上是正例的数据点被标记为反例

 

召回率和精度衡量指标:

  • 召回率(R):分类模型识别所有相关实例的能力

  • 精度(P):分类模型仅仅返回相关实例的能力

  • F1 score:使用调和平均结合召回率和精度的指标

 

召回率和精度的可视化:

  • 混淆矩阵:展示分类模型的真实和预测标签的对应结果。

  • 受试者特征曲线(ROC 曲线):画出真正例率(TPR)和假正例率(FPR),并将此作为模型归类正例阈值的函数。

  • 曲线下面积(AUC):基于 ROC 曲线下方的面积,计算分类模型总体性能的指标。

七、参考文献