分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)

参考文献

1.利用基于线性假设的线性分类器LogisticRegression/SGDClassifier进行二类分类(复习1)
2.机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线


宏观视角

分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)_第1张图片

一、关于精度(Precision)、召回率(Recall)

混淆矩阵:
分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)_第2张图片
分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)_第3张图片


二、各指标介绍:

具体请参考该博客

1、准确率(Accuracy)

准确率(accuracy)计算公式为:
在这里插入图片描述
注:准确率是我们最常见的评价指标,而且很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好。

准确率确实是一个很好很直观的评价指标,但是有时候准确率高并不能代表一个算法就好。比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个: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)定义为:
在这里插入图片描述
表示被分为正例的示例中实际为正例的比例。

6、召回率(recall)
在这里插入图片描述
召回率是覆盖面的度量,度量有多个正例被分为正例,recall=TP/(TP+FN)=TP/P=sensitive,可以看到召回率与灵敏度是一样的。

7、综合评价指标(F-Measure)
P和R指标有时候会出现的矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure(又称为F-Score)。
F-Measure是Precision和Recall加权调和平均:
在这里插入图片描述
当参数α=1时,就是最常见的F1,也即:
在这里插入图片描述
可知F1综合了P和R的结果,当F1较高时则能说明试验方法比较有效。

8、ROC曲线:
ROC(Receiver Operating Characteristic)曲线是以假正率(FP_rate)和真正率(TP_rate)为轴的曲线,ROC曲线下面的面积我们叫做AUC,如下图所示:
分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)_第4张图片
在这里插入图片描述
(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等衡量指标更加合理,但是其在高不平衡数据条件下的的表现仍然过于理想,不能够很好的展示实际情况。

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




三、个人思考

1.精度和召回率的关系
分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)_第5张图片
结论:鱼和熊掌不可兼得,精度/召回率之间存在权衡,如何选择是要基于问题场景以及目的来决定。虽然说精度和召回率是一对矛盾的指标,但是并不能抛开其中一个而追求另一个,因为上面的例子也表明了,这样做没有实际意义。

2.精度/召回率和阈值
分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)_第6张图片
分类问题的指标权衡(Accuracy、Precision、Recall、F、F1、PR、ROC、AUC)_第7张图片
这里要注意理解为什么精度曲线比召回率曲线要崎岖一些?
原因在于:当你提高阈值时,精度有可能也是会下降的(尽管从宏观趋势上是上升的),这是因为,如上图3-3中,当把阈值从中间向右移动一位时,精度从80%下降到了75%,从公式角度解释,就是因为TP减少了1,分子分母都减一,但是相对来说,精度下降了。另一方面,当阈值上升时,召回率只会下降,这也就解释了为什么召回率的曲线看起来很光滑。

3.PR曲线和ROC曲线选取标准
经验上讲,当正类非常少见或者你更关注假正类而不是假负类时,应该选择PR曲线,否则应该选择ROC曲线;

4.混淆矩阵的用途
也就是说在对模型进行调整优化时,混淆矩阵可以作为一种确定优化方向的方式,通过分析混淆矩阵中较为突出的错误,反思产生这一状况的原因,进而在特征选择或者特征工程方面,采取有针对性的措施加以优化。

你可能感兴趣的:(机器学习)