多分类 · Multi-class
多分类:逐类指标与三种平均
三个以上的类别时,每一类都可以看成「这一类 vs 其余所有类」的二分类,各有自己的精确率和召回率。怎么把它们汇总成一个数,有宏平均、微平均、加权平均三种做法,结果可能差很多。
输入数据 INPUT
三种平均怎么选 AVERAGING
- 宏平均 macro
- 每一类算出指标后直接取平均,小类和大类同样重要。某个小类判得很差,宏平均会明显下降。
- 加权平均 weighted
- 按每类的真实样本数加权。结果更接近大类的表现,小类判得差不太看得出来。
- 微平均 micro
- 先把所有类的 TP、FP、FN 加起来再算。每个样本只有一个真实类别、一个预测类别时,一个错判同时算作一个 FP 和一个 FN,所以微平均的精确率、召回率、F1 都等于准确率。
01
计算结果
样本数20
类别数3
准确率0.7500
混淆矩阵
| 真实 ↓ · 预测 → | 狗 | 猫 | 兔 | 合计 |
|---|---|---|---|---|
| 狗 | 6 | 1 | 1 | 8 |
| 猫 | 1 | 6 | 1 | 8 |
| 兔 | 1 | 0 | 3 | 4 |
| 合计 | 8 | 7 | 5 | 20 |
逐类指标
| 类别 | TP | FP | FN | 支持数 | 精确率 | 召回率 | F1 |
|---|---|---|---|---|---|---|---|
| 狗 | 6 | 2 | 2 | 8 | 0.7500 | 0.7500 | 0.7500 |
| 猫 | 6 | 1 | 2 | 8 | 0.8571 | 0.7500 | 0.8000 |
| 兔 | 3 | 2 | 1 | 4 | 0.6000 | 0.7500 | 0.6667 |
三种平均
| 平均方式 | 精确率 | 召回率 | F1 |
|---|---|---|---|
| 宏平均 macro3 个类别的指标直接取平均,每类同等重要 | 0.7357 | 0.7500 | 0.7389 |
| 加权平均 weighted按每类的支持数(真实样本数)加权 | 0.7629 | 0.7500 | 0.7533 |
| 微平均 micro先把所有类别的 TP、FP、FN 加总再算;单标签多分类时三者都等于准确率 | 0.7500 | 0.7500 | 0.7500 |
02
逐类指标是怎么来的
TP、FP、FN 从哪里读
对第 i 类:对角线上第 i 格是 TP;第 i 列里除对角线外的数加起来是 FP(别的类被错判成 i);第 i 行里除对角线外的数加起来是 FN(i 被错判成别的类)。支持数是第 i 行的合计。
然后套二分类的公式
精确率 = TP / (TP + FP),召回率 = TP / (TP + FN),F1 = 2TP / (2TP + FP + FN)。和二分类计算台用的是同一套公式,只是「正类」换成了第 i 类。
某一类没有被预测到
如果模型从没预测过某一类,这一类的精确率分母为 0,是无定义的。算宏平均和加权平均时本站按 0 计入,并在结果下方列出,见约定。
和手算对不上?
先核对行列方向:本站行是真实类别、列是预测类别。有些资料正好反过来,转置之后精确率和召回率会互换。