机器学习|分类问题性能评价指标详述

目 录
二分类问题
代码实现
多分类问题
二分类问题 根据样例和学习器预测类别的组合划分为表中四种情况,下图也叫做“混淆矩阵”。

真实情况 预测结果
正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)
(1)准确率定义如下:
机器学习|分类问题性能评价指标详述
文章图片

准确率在样本不平衡的情况下,产生效果较差,一般用accuracy来表示准确率。
(2)精确率(查准率)定义如下:
机器学习|分类问题性能评价指标详述
文章图片

含义为:分为正例的样本中实际为正例的百分比,一般用precision来表示精确率。
(3)召回率(查全率)定义如下:
机器学习|分类问题性能评价指标详述
文章图片

含义为:有多少个实际正例被划分为正例。一般用racall表示。
一般来说,(2)(3)两个度量方式,是一对矛盾的度量。一般来说,精确率高,召回率就会低,反之成立。假设好坏分类,若想将“好”全部选出来(召回率上升),那么可以增加样本数量实现,但将所有样本选上了,精确率也就下降了。
(4)P-R曲线(PR图)
机器学习|分类问题性能评价指标详述
文章图片

图片来自:https://blog.csdn.net/b876144622/article/details/80009867
P-R曲线是以Recall为横轴,Precision为纵轴做图得到的,能够直观的显示学习器的性能问题,(从图中也可以清楚的看出,二者之间一般成负相关的关系):若两个学习器比较,其中一个把另外一个全部包围,则这个学习器更优,如A(黑色)与B(蓝色)作比较;若两者有交叉,如B(蓝色)C(绿色),只能根据具体情况进行比较,或者用各自的P-R曲线下的面积来比较,但是这种方法比较难以计算。
当二者难以比较的时候,平衡点(BEP)就提出来了,即当P=R时,(图中的红线,画的弯弯曲曲的那条线),两者各自的取值。B:约为0.47,C:约为0.57。这样就可以比较二者的优劣性了。
(5)机器学习|分类问题性能评价指标详述
文章图片
(加权调和平均)和 F1(调和平均)
利用机器学习|分类问题性能评价指标详述
文章图片
可以,使得在衡量问题时,可以定义召回率(查全率)和精确率(查准率)两者的相对重要性。
机器学习|分类问题性能评价指标详述
文章图片
定义如下:
机器学习|分类问题性能评价指标详述
文章图片

机器学习|分类问题性能评价指标详述
文章图片
时,召回率影响更大;反之,精确率影响更大。
机器学习|分类问题性能评价指标详述
文章图片
,得到了F1度量,即:
机器学习|分类问题性能评价指标详述
文章图片

F1根据的是P和R的调和平均计算定义的:
机器学习|分类问题性能评价指标详述
文章图片

机器学习|分类问题性能评价指标详述
文章图片
根据加权调和平均计算定义的:
机器学习|分类问题性能评价指标详述
文章图片

算数平均为:机器学习|分类问题性能评价指标详述
文章图片
,几何平均为:机器学习|分类问题性能评价指标详述
文章图片
,调和平均更注重较小值。
代码实现 上述几种性能评价指标,在sklearn中的都有封装,可以直接使用。代码如下。
为了简单,我直接将y_test和y_pred给出了,按照道理来说,应该是通过模型得到的。
from sklearn import metrics as ms #统计库y_test = [1,1,1,1,0,0,1,1,1,0,0] y_pred = [1,1,1,0,1,1,0,1,1,1,0] print("准确率为:{0:%}".format(ms.accuracy_score(y_test, y_pred))) print("精确率为:{0:%}".format(ms.precision_score(y_test, y_pred))) print("召回率为:{0:%}".format(ms.recall_score(y_test, y_pred))) print("F1分数为:{0:%}".format(ms.f1_score(y_test, y_pred))) print("Fbeta为:{0:%}".format(ms.fbeta_score(y_test, y_pred,beta =1.2))) # beta为fbeta_score()函数需要设置的


多分类问题 假设为三分类(ABC)问题,同样利用混淆矩阵来求解。
(1)宏查准率(macro-P),宏查全率(macro-R),宏F1(macro-F1),做法如下:
将A与BC化为两类,将A看做正例,非A看做反例,计算Pa、Ra。
将B与AC化为两类,将B看做正例,非B看做反例,计算Pb、Rb。
将C与AB化为两类,将C看做正例,非C看做反例,计算Pc、Rc。
【各自计算】后,再计算平均值。
机器学习|分类问题性能评价指标详述
文章图片

机器学习|分类问题性能评价指标详述
文章图片

机器学习|分类问题性能评价指标详述
文章图片

(2)微查准率(micro-P)、微查全率(micro-R)、微F1(micro-F1)
按照上述做法,首先得到A、B、C的TP、FP、TN、FN。然后取平均值,得到机器学习|分类问题性能评价指标详述
文章图片
机器学习|分类问题性能评价指标详述
文章图片
机器学习|分类问题性能评价指标详述
文章图片
机器学习|分类问题性能评价指标详述
文章图片
。(没找见平均值的那个表示,用撇来表示)
机器学习|分类问题性能评价指标详述
文章图片

机器学习|分类问题性能评价指标详述
文章图片

机器学习|分类问题性能评价指标详述
文章图片


还有很多指标评价方法,以后再做补充吧。

【机器学习|分类问题性能评价指标详述】参考:《机器学习》周志华

    推荐阅读