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

进行汇总。

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

相关推荐
冬哥聊AI1 小时前
某团二面追问:多Agent之间怎么实现共享记忆?从文件到治理型架构的演进
人工智能
lucas_AI1 小时前
Grok 4.6:追平 GPT-5.6 Sol 的半价旗舰,但别只看跑分
人工智能·算法
9i编程1 小时前
AI 只解决眼前那个坑【下篇】:写进skills了,重建还是踩坑
人工智能·openai·ai编程
蒟蒻的贤1 小时前
AG-news分类任务
人工智能·分类·数据挖掘
vivo互联网技术1 小时前
从一键检测到 AI 修复:我们如何把无障碍检查做进研发流程
前端·人工智能
珐恩AI-人工智能1 小时前
生成式引擎优化(GEO)全解:2026年AI检索时代企业长效流量运营方法论
大数据·人工智能·产品运营·流量运营·geo优化
圈圈的AI工程笔记1 小时前
+14.6%超越Opus 4.8,阿里通义发现:最好的GUI Agent,有一半时间在敲命令行
人工智能
深蓝AI1 小时前
Unlimited-OCR 实战:百度开源 23K Star 长文档解析模型,把 DeepSeek-OCR 又推进一步
人工智能
桃西西呀1 小时前
读懂 Harbor 前,先背下这 6 个词
人工智能