ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

05 多分类任务中的评估指标:Binary Metrics 如何扩展到 Multi-class?

05 多分类任务中的评估指标:Binary Metrics 如何扩展到 Multi-class?

05 多分类任务中的评估指标:Binary Metrics 如何扩展到 Multi-class?

前面的 TP、FP、TN、FN 都是从二分类问题出发。

但是现实任务中经常存在多个类别。

例如:

猫 狗 鸟 马

或者:

Class A Class B Class C Class D

这类问题称为:

Multi-class Classification 多分类

那么 Accuracy、Precision、Recall、F1 和 ROC-AUC 应该如何扩展?


一、多分类中的 Confusion Matrix

假设有三个类别:

Cat Dog Bird

混淆矩阵可能如下:

Actual \ PredictedCatDogBird
Cat5032
Dog4406
Bird1539

对角线:

50 40 39

表示预测正确。

非对角线表示模型发生了类别混淆。

例如:

Actual Dog Predicted Bird = 6

说明有 6 个 Dog 被错误分类为 Bird。


二、多分类 Accuracy 很简单

Accuracy 仍然定义为:

Accuracy=Correct PredictionsAll PredictionsAccuracy=\frac{Correct\ Predictions}{All\ Predictions}Accuracy=AllPredictionsCorrectPredictions

在混淆矩阵中就是:

对角线元素之和 ÷ 全部元素之和

例如:

Accuracy=50+40+39150=0.86Accuracy=\frac{50+40+39}{150}=0.86Accuracy=15050+40+39=0.86

即:

86%

三、Precision 和 Recall 怎么扩展?

关键思想是:

一次选择一个类别,把它当作 Positive,其余所有类别合并成 Negative。

这叫:

One-vs-Rest OvR

例如计算 Cat 的 Precision 和 Recall。

把:

Cat

视为 Positive。

把:

Dog + Bird

一起视为 Negative。

于是就重新回到了二分类问题。


四、Class-wise Precision

对于类别 i:

Precisioni=TPiTPi+FPiPrecision_i=\frac{TP_i}{TP_i+FP_i}Precisioni=TPi+FPiTPi

例如 Cat:

TP_cat = 真正是 Cat,并且预测为 Cat

而:

FP_cat = 不是 Cat,但被预测为 Cat

因此:

每一个类别都可以拥有自己的 Precision。


五、Class-wise Recall

对于类别 i:

Recalli=TPiTPi+FNiRecall_i=\frac{TP_i}{TP_i+FN_i}Recalli=TPi+FNiTPi

其中:

FN_i = 真正属于类别 i 但模型预测成其他类别

因此:

每一个类别也可以拥有自己的 Recall。


六、Class-wise F1

对于类别 i:

F1i=2×Precisioni×RecalliPrecisioni+RecalliF1_i=2\times\frac{Precision_i\times Recall_i}{Precision_i+Recall_i}F1i=2×Precisioni+RecalliPrecisioni×Recalli

这样可以得到:

F1_cat F1_dog F1_bird

然后问题来了:

如果有多个 F1,最终应该报告哪个?

这就引出了 Macro、Micro 和 Weighted Average。


七、Macro Average

Macro Average 的思路是:

每一个类别权重相同。

例如三个类别:

Macro Precision=Precision1+Precision2+Precision33Macro\ Precision=\frac{Precision_1+Precision_2+Precision_3}{3}MacroPrecision=3Precision1+Precision2+Precision3

Macro F1:

Macro F1=F11+F12+F133Macro\ F1=\frac{F1_1+F1_2+F1_3}{3}MacroF1=3F11+F12+F13

特点:

大类别和小类别同等重要

因此如果:

类别不平衡 并且希望关注少数类别

Macro F1 通常非常有价值。


八、Weighted Average

Weighted Average 按每个类别的样本数量加权。

设第 i 个类别样本数量为:

n_i

总样本数量为:

N

则:

Weighted F1=∑iniNF1iWeighted\ F1=\sum_i\frac{n_i}{N}F1_iWeightedF1=iNniF1i

特点:

样本多的类别权重更高

因此它更接近数据的真实类别分布。

但是:

大类别可能掩盖小类别表现差的问题。


九、Micro Average

Micro Average 的思路是:

先把所有类别的 TP、FP、FN 汇总,再统一计算指标。

例如:

Micro Precision=∑iTPi∑iTPi+∑iFPiMicro\ Precision=\frac{\sum_iTP_i}{\sum_iTP_i+\sum_iFP_i}MicroPrecision=iTPi+iFPiiTPi

Micro Recall=∑iTPi∑iTPi+∑iFNiMicro\ Recall=\frac{\sum_iTP_i}{\sum_iTP_i+\sum_iFN_i}MicroRecall=iTPi+iFNiiTPi

Micro 更关注:

所有样本的总体预测表现

对于单标签多分类任务,Micro Precision、Micro Recall 和 Micro F1 往往会非常接近整体 Accuracy。


十、Macro、Micro、Weighted 怎么选?

可以这样理解:

Average核心思想适合场景
Macro每个类别同等重要类别不平衡且关心小类别
Micro每个样本同等重要关注整体样本表现
Weighted按类别数量加权希望反映真实类别分布

如果数据:

Class A = 9000 Class B = 900 Class C = 100

那么:

Weighted F1

可能主要由 Class A 决定。

而:

Macro F1

会让 Class C 与 Class A 拥有相同权重。

所以当少数类别很重要时:

Macro F1 通常比 Weighted F1 更能暴露问题。


十一、多分类 ROC 怎么做?

ROC 本来是:

Positive vs Negative

多分类没有单一 Positive。

因此常见方式仍然是:

One-vs-Rest

例如:

Cat vs Non-Cat Dog vs Non-Dog Bird vs Non-Bird

分别计算 ROC Curve 和 AUC。

于是得到:

AUC_cat AUC_dog AUC_bird

然后再进行:

Macro-average AUC Micro-average AUC Weighted-average AUC

十二、One-vs-One

另一种方式是:

One-vs-One OvO

例如三个类别:

Cat vs Dog Cat vs Bird Dog vs Bird

分别比较类别对之间的区分能力。

OvO 在分析:

模型究竟容易混淆哪些类别

时非常有用。


十三、Top-k Accuracy

对于类别很多的任务,还可能使用:

Top-k Accuracy

例如 Image Classification 中:

Top-1 Accuracy Top-5 Accuracy

Top-5 Accuracy 表示:

真实类别是否出现在模型概率最高的 5 个类别中。

这在类别数量非常多时比单纯 Top-1 更有解释性。


十四、不要只报告一个平均值

对于多分类问题,推荐至少查看:

Confusion Matrix Per-class Precision Per-class Recall Per-class F1 Macro F1 Weighted F1

原因是:

一个总体平均分很容易掩盖某些类别严重失效的问题。


十五、一个典型报告

多分类模型的评估报告可以包含:

Accuracy: 0.91 Macro Precision: 0.86 Macro Recall: 0.84 Macro F1: 0.85 Weighted Precision: 0.92 Weighted Recall: 0.91 Weighted F1: 0.91

如果:

Weighted F1 很高 Macro F1 明显较低

往往意味着:

模型在大类别上表现很好,但是在小类别上表现较差。


十六、总结

多分类评估并没有发明完全不同的指标。

核心思想仍然是:

把每一个类别轮流视为 Positive 其余类别视为 Negative

然后计算:

Precision Recall F1 ROC-AUC

最终再通过:

Macro Micro Weighted

进行汇总。

理解这一点之后,多分类指标就会非常自然。

返回列表