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

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

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

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

例如:

text 复制代码
猫
狗
鸟
马

或者:

text 复制代码
Class A
Class B
Class C
Class D

这类问题称为:

text 复制代码
Multi-class Classification
多分类

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


一、多分类中的 Confusion Matrix

假设有三个类别:

text 复制代码
Cat
Dog
Bird

混淆矩阵可能如下:

Actual \ Predicted Cat Dog Bird
Cat 50 3 2
Dog 4 40 6
Bird 1 5 39

对角线:

text 复制代码
50
40
39

表示预测正确。

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

例如:

text 复制代码
Actual Dog
Predicted Bird
= 6

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


二、多分类 Accuracy 很简单

Accuracy 仍然定义为:

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

在混淆矩阵中就是:

text 复制代码
对角线元素之和
÷
全部元素之和

例如:

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

即:

text 复制代码
86%

三、Precision 和 Recall 怎么扩展?

关键思想是:

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

这叫:

text 复制代码
One-vs-Rest
OvR

例如计算 Cat 的 Precision 和 Recall。

把:

text 复制代码
Cat

视为 Positive。

把:

text 复制代码
Dog + Bird

一起视为 Negative。

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


四、Class-wise Precision

对于类别 i:

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

例如 Cat:

text 复制代码
TP_cat
= 真正是 Cat,并且预测为 Cat

而:

text 复制代码
FP_cat
= 不是 Cat,但被预测为 Cat

因此:

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


五、Class-wise Recall

对于类别 i:

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

其中:

text 复制代码
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

这样可以得到:

text 复制代码
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}Macro Precision=3Precision1+Precision2+Precision3

Macro F1:

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

特点:

text 复制代码
大类别和小类别同等重要

因此如果:

text 复制代码
类别不平衡
并且希望关注少数类别

Macro F1 通常非常有价值。


八、Weighted Average

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

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

text 复制代码
n_i

总样本数量为:

text 复制代码
N

则:

Weighted F1=∑iniNF1iWeighted\ F1=\sum_i\frac{n_i}{N}F1_iWeighted F1=i∑NniF1i

特点:

text 复制代码
样本多的类别权重更高

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

但是:

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


九、Micro Average

Micro Average 的思路是:

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

例如:

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

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

Micro 更关注:

text 复制代码
所有样本的总体预测表现

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


十、Macro、Micro、Weighted 怎么选?

可以这样理解:

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

如果数据:

text 复制代码
Class A = 9000
Class B = 900
Class C = 100

那么:

text 复制代码
Weighted F1

可能主要由 Class A 决定。

而:

text 复制代码
Macro F1

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

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

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


十一、多分类 ROC 怎么做?

ROC 本来是:

text 复制代码
Positive vs Negative

多分类没有单一 Positive。

因此常见方式仍然是:

text 复制代码
One-vs-Rest

例如:

text 复制代码
Cat vs Non-Cat
Dog vs Non-Dog
Bird vs Non-Bird

分别计算 ROC Curve 和 AUC。

于是得到:

text 复制代码
AUC_cat
AUC_dog
AUC_bird

然后再进行:

text 复制代码
Macro-average AUC
Micro-average AUC
Weighted-average AUC

十二、One-vs-One

另一种方式是:

text 复制代码
One-vs-One
OvO

例如三个类别:

text 复制代码
Cat vs Dog
Cat vs Bird
Dog vs Bird

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

OvO 在分析:

text 复制代码
模型究竟容易混淆哪些类别

时非常有用。


十三、Top-k Accuracy

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

text 复制代码
Top-k Accuracy

例如 Image Classification 中:

text 复制代码
Top-1 Accuracy
Top-5 Accuracy

Top-5 Accuracy 表示:

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

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


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

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

text 复制代码
Confusion Matrix
Per-class Precision
Per-class Recall
Per-class F1
Macro F1
Weighted F1

原因是:

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


十五、一个典型报告

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

text 复制代码
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

如果:

text 复制代码
Weighted F1 很高
Macro F1 明显较低

往往意味着:

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


十六、总结

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

核心思想仍然是:

text 复制代码
把每一个类别轮流视为 Positive
其余类别视为 Negative

然后计算:

text 复制代码
Precision
Recall
F1
ROC-AUC

最终再通过:

text 复制代码
Macro
Micro
Weighted

进行汇总。

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

相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
回眸&啤酒鸭1 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅1 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein1 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
尧炎科技1 天前
防潮抗变形,就选纯品梅花全桉多层板
大数据
wukangjupingbb1 天前
智能网联汽车安全能力框架
人工智能