分类评估指标

如题所述

第1个回答  2022-07-23
# 准确率(Accuracy,ACC)

最常用、最经典的评估指标之一,计算公式为:

$ACC = \frac{预测准确的样例数}{总预测数}$

由此可见,准确率是类别无关的,衡量整个数据集的准确情况,即预测正确的样本所占的比例。

by the way,有时人们也会用错误率(Error Rate, ERR),与准确率定义相反,表示分类错误的样本所占的比例,计算公式为:

$ERR = 1 - ACC$

**存在问题**

在类别不平衡数据集中,ACC不能客观反映模型的能力。比如在三分类中,样本数量分布为(9800,100,100),那么模型只要无脑将所有样例都预测为A类即可以有98%的准确率,然而事实是模型根本没有分辨ABC的能力。因此下面引入精确率和召回率的概念。

# 概念定义

介绍精确率和召回率之前,我们先来了解几个概念:

| 名称 | 定义 |

| ------ | ------ |

| TP(True Positives,真阳性样本数)   | 被正确预测为正类别的样本个数 |

| FP(False Positives,假阳性样本数)  | 被错误预测为正类别的样本个数 |

| FN(False Negatives,假阴性样本数)   | 被错误预测为负类别的样本个数 |

| TN(True Negatives,真阴性样本数)   | 被正常预测为负类别的样本个数 |

注意:

* 第一个字母代表预测是否正确,第二个字母代表预测结果。Ground Truth(标签,数据的类别的真实情况,GT)则需要通过玩家组合这两个字母进行推理:预测正确则代表GT和预测结果一致,即TP的样本是正类别,TN的样本是负类别;反之FP的样本是负类别,FN的样本是正类别。搞清楚这个对精确率和召回率的了解会更加容易。

* 对于二分类而言,只要规定了正类别和负类别,这4个值是唯一的(负类别的TP等于正类别的TN,负类别的FP等于正类别的FN,负类别的FN等于正类别的FP,负类别的TN等于正类别的TP,因此对于二分类问题衡量正类别的指标就够了,因为两个类别是对等的)。对于多分类而言,用**One VS Others**的思想,将其中一类看作正类别,其他类看作负类别,**则每个类别都有这4个值,即这4个值在多分类中是与类别强相关的,每个类别的这几个值都不一样。**

# 混淆矩阵

混淆矩阵是所有分类算法模型评估的基础,它展示了模型预测结果和GT的对应关系。

| 推理类别/真实类别 | A | B | C | D |

| :----: | :----: | :----: | :----: | :----: |

| A | 56 | 5 | 11 | 0 |

| B | 5 | 83 | 0 | 26 |

| C | 9 | 0 | 28 | 2 |

| D | 1 | 3 | 6 | 47 |

其中矩阵所有元素之和为样本总数,每一行代表**预测为某类别的样本在真实类别中的分布**,每一列代表**某真实类别的样本在预测类别中的分布**。以A类为例,第一行代表预测为A的有72个样本(即TP+FP,56+5+11+0),第一列表示真实类别为A的有71个样本(即TP+FN,56+5+9+1)。其中TP为56,FP为16(行,5+11+0),FN为15(列,5+9+1),TN为195(即除第一行和第一列外所有的值之和)。样本总数等于混淆矩阵所有元素之和,即282。

如果用符号E来表示$B \cup C \cup D$,那么对于A来说,混淆矩阵可以改写如下:

| 推理类别/真实类别 | A | E |

| :----: | :----: | :----: |

| A | 56 | 16 |

| E | 15 | 195 |

由此可见,对于二分类来说,混淆矩阵的值与TP等指标对应如下:

| 推理类别/真实类别 | Positives(正类别) | Negatives(负类别) |

| :----: | :----: | :----: |

| Positives(正类别) | TP | FP |

| Negatives(负类别) | FN | TN |

对应多分类,可以用不同颜色来对应TP等指标的区域,使可视化效果更好,更方便理解。后续再更新。

# 精确率(Precision,$P$)

**对于某一类别而言**,预测为该类别样本中确实为该类别样本的比例,计算公式为:

$ P = \frac{TP}{TP+FP}$

以A、E的混淆矩阵为例:$ P_A = \frac{56}{56+16}=0.78, P_E = \frac{195}{15+195}=0.93$

以ABCD的混淆矩阵为例:$ P_A = 0.78, P_B = \frac{83}{5+83+0+26} = 0.73, P_C = \frac{28}{9+0+28+2}=0.72, P_D = \frac{47}{1+3+6+47} = 0.83$

可以观察到,精确率的分母是混淆矩阵的行和,分子在对角线上。

# 召回率(Recall,$R$)

**对于某一类别而言**,在某类别所有的真实样本中,被预测(找出来,召回)为该类别的样本数量的比例,计算公式为:

$ R = \frac{TP}{TP+FN}$

以A、E的混淆矩阵为例:$ R_A = \frac{56}{56+15} = 0.79, R_E = \frac{195}{16+195} = 0.92$

以ABCD的混淆矩阵为例:$ R_A = 0.79, R_B = \frac{83}{5+83+0+3} = 0.91, R_C = \frac{28}{11+0+28+6} = 0.62, R_D = \frac{47}{0+26+2+47} = 0.63$

可以观察到,召回率的分母是混淆矩阵的列和,分子在对角线上。

# F1

刚才提到,用ACC衡量模型的能力并不准确,因此要同时衡量精确率和召回率,遗憾的是,**一个模型的精确率和召回率往往是此消彼长的**。用西瓜书上的解释就是:挑西瓜的时候,如果希望将好瓜尽可能多地选出来(提高召回率),则可以通过增加选瓜的数量来实现(),如果将所有西瓜都选上(),那么所有的好瓜也必然被选上了,但是这样的策略明显精确率较低;若希望选出的瓜中好瓜比例可能高,则可只挑选最有把握的瓜,但这样就难免会漏掉不少好瓜,使得召回率较低。通常只有在一些简单任务中,才可能使得召回率和精确率都很高。因此我们引入F1来评价精确率和召回率的综合效果,F1是这两个值的调和平均(harmonic mean,与算数平均$\frac{P+R}{2}$和几何平均$\sqrt{P*R}$相比,调和平均更重视较小值),定义如下:

$ \frac{1}{F1} = \frac{1}{2}*(\frac{1}{P}+\frac{1}{R})$

化简得:

$ F1 = \frac{2*P*R}{P+R}$

在一些应用中,对精确率和召回率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容的确是用户感兴趣的,此时精确率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时召回率更重要。$F1$的一般形式————$F_\beta$,能让我们表达出对精确率和召回率的不同偏好,它定义为:

$F_\beta = \frac{(1+\beta^2)*P*R}{(\beta^2*P)+R}$

其中$\beta > 0$度量了召回率对精确率的相对重要性。$\beta=1$时退化为标准$F1$;$\beta>1$时召回率有更大影响;$\beta<1$时精确率有更大影响。

以AE的混淆矩阵为例:

$F1_A = \frac{2 * P_A * R_A}{P_A + R_A} = \frac{2 * 0.78 * 0.93}{0.78+0.93} = 0.85$

$F1_E = \frac{2 * P_E * R_E}{P_E + R_E} = \frac{2 * 0.93 * 0.92}{0.93+0.92} = 0.92$

以ABCD的混淆矩阵为例:

$ F1_A = 0.85 $

$ F1_B = \frac{2 * P_B * R_B}{P_B + R_B} = \frac{2 * 0.73 * 0.91}{0.73+0.91} = 0.81$

$ F1_C = \frac{2 * P_C * R_C}{P_C + R_C} = \frac{2 * 0.72 * 0.62}{0.72+0.62} = 0.67$

$ F1_D = \frac{2 * P_D * R_D}{P_D + R_D} = \frac{2 * 0.83 * 0.63}{0.83+0.63} = 0.72$

# 多分类

以上指标除了准确率,其他指标都是类别相关的。要对模型做出总体评价,就需要算出所有类别综合之后的总体指标。求总体指标的方法有两种:宏平均(Macro Average)和微平均(Micro Average)。

**宏平均**

计算各个类对应的指标的算术平均

例,$F1_{macro} = \frac{F1_A+F1_B+F1_C+F1_D}{4} = \frac{0.85+0.81+0.67+0.72}{4} = 0.7625$

所谓宏,就是从更宏观的角度去平均,即粒度是在类以上的。

**微平均**

先平均每个类别的TP、FP、TN、FN,再计算他们的衍生指标

例,

$TP_{micro} = \frac{TP_A+TP_B+TP_C+TP_D}{4} = \frac{56+83+28+47}{4} = 53.5$

$FP_{micro} = \frac{FP_A+FP_B+FP_C+FP_D}{4} = \frac{16+31+11+10}{4} = 17$

$FN_{micro} = \frac{FN_A+FN_B+FN_C+FN_D}{4} = \frac{15+8+17+28}{4} = 17$

$TN_{micro} = \frac{TN_A+TN_B+TN_C+FN_D}{4} = \frac{195+160+226+197}{4}=194.5$

$P_{micro} = \frac{TP_{micro}}{TP_{micro}+FP_{micro}} = \frac{53.5}{53.5+17} = 0.7589$

$R_{micro} = \frac{TP_{micro}}{TP_{micro}+FN_{micro}} = \frac{53.5}{53.5+17} = 0.7589$

$F1_{micro} = \frac{2 * P_{micro}* R_{micro}}{P_{micro} + R_{micro}} = \frac{2 * 0.7589 *0.7589}{0.7589+0.7589} = 0.7589$

# 参考资料

1. 《西瓜书》

2. 《ModelArts人工智能应用开发指南》

如有错误,欢迎指出。下一期继续探讨ROC曲线、AUC曲线和PR曲线
相似回答