【机器学习深度学习】多分类评估策略:混淆矩阵计算场景模拟示例
目录
前言摘要
一、假设任务:三分类情感分析
二、假设混淆矩阵如下(真实值为行,预测值为列):
三、每个评估类别的指标计算
➤ 类别 0(正面):
➤ 类别 1(中性):
➤ 类别 2(负面):
四、每类指标汇总表格
五、平均策略计算(宏平均、加权平均、微平均)
🧮 宏平均(Macro Average)
🧮 加权平均(Weighted Average)
🧮 微平均(Micro Average)
六、最终平均结果表格
✅ 总结
前言摘要
在多分类任务中,仅凭一个准确率远远无法全面判断模型优劣。为了真正理解模型的预测表现,我们需要深入分析每个类别的精确率、召回率、F1 分数,并结合宏平均、加权平均、微平均等策略,从多个维度评估整体性能。
本文以一个三分类情感分析任务为例,构造具体的混淆矩阵,并逐类计算出关键评估指标,带你系统掌握多分类模型评估的核心方法与策略。无论你是新手入门还是经验工程师,相信这篇实战推导都会帮你更清晰理解“评估指标背后的意义”。
【全文概括】
本文通过一个三分类情感分析示例,手工推导并计算各类精确率、召回率、F1 分数及三种平均策略,全面剖析多分类模型评估指标的计算与适用场景。
一、假设任务:三分类情感分析
-
类别 0:正面
-
类别 1:中性
-
类别 2:负面
二、假设混淆矩阵如下(真实值为行,预测值为列):
实际 \ 预测 | 0(正面) | 1(中性) | 2(负面) | 支持数(Support) |
---|---|---|---|---|
0 正面 | 40 | 5 | 5 | 50 |
1 中性 | 3 | 32 | 5 | 40 |
2 负面 | 2 | 3 | 25 | 30 |
三、每个评估类别的指标计算
我们对每一类手动计算:
➤ 类别 0(正面):
-
TP = 40
-
FP = 来自其他行预测为 0 的:3(中性错预测为正面) + 2(负面错预测为正面) = 5
-
FN = 实际为正面但预测错的:5(→中性)+ 5(→负面) = 10
指标 | 公式 | 数值 |
---|---|---|
精确率 P₀ | 40 / (40 + 3+2) = 40 / 45 | 0.8889 |
召回率 R₀ | 40 / (40 + 5+5) = 40 / 50 | 0.8000 |
F1 分数 | 2 × (P×R)/(P+R) | 0.8421 |
支持数 | — | 50 |
➤ 类别 1(中性):
-
TP = 32
-
FP = 5(正面错判为中性)+ 3(负面错判为中性) = 8
-
FN = 3 + 5 = 8
指标 | 数值 |
---|---|
精确率 P₁ | 32 / (32 + 3+5) = 0.8000 |
召回率 R₁ | 32 / (32 + 8) = 0.8000 |
F1 分数 | 0.8000 |
支持数 | 40 |
➤ 类别 2(负面):
-
TP = 25
-
FP = 5(正面→负面)+ 5(中性→负面) = 10
-
FN = 2(→正面)+ 3(→中性) = 5
指标 | 数值 |
---|---|
精确率 P₂ | 25 / (25 + 10) = 0.7143 |
召回率 R₂ | 25 / (25 + 5) = 0.8333 |
F1 分数 | 2×(0.7143×0.8333)/(0.7143+0.8333) ≈ 0.7692 |
支持数 | 30 |
四、每类指标汇总表格
类别 | 精确率(P) | 召回率(R) | F1 分数 | 支持数(Support) |
---|---|---|---|---|
正面 0 | 0.8889 | 0.8000 | 0.8421 | 50 |
中性 1 | 0.8000 | 0.8000 | 0.8000 | 40 |
负面 2 | 0.7143 | 0.8333 | 0.7692 | 30 |
类别 | 精确率(Precision) | 召回率(Recall) | F1 分数(F1 Score) | 支持数(Support) |
---|---|---|---|---|
类别 0(正面) | 40 / (40 + 3+2) = 0.8889 | 40 / (40 + 5+5) = 0.8000 | 2×(0.8889×0.8)/(0.8889+0.8) = 0.8421 | 50 |
类别 1(中性) | 32 / (32 + 8) = 0.8000 | 32 / (32 + 8) = 0.8000 | 0.8000 | 40 |
类别 2(负面) | 25 / (25 + 10) = 0.7143 | 25 / (25 + 5) = 0.8333 | 2×(0.7143×0.8333)/(0.7143+0.8333) ≈ 0.7692 | 30 |
对照说明:
精确率:预测为某类中有多少是真实的
召回率:真实为某类中有多少被预测对
F1 分数:精确率与召回率的调和平均
支持数:该类在真实标签中的出现次数
五、平均策略计算(宏平均、加权平均、微平均)
🧮 宏平均(Macro Average)
不考虑样本多少,每个类算完后直接平均
P_macro = (0.8889 + 0.8000 + 0.7143) / 3 ≈ 0.8011
R_macro = (0.8000 + 0.8000 + 0.8333) / 3 ≈ 0.8111
F1_macro = (0.8421 + 0.8000 + 0.7692) / 3 ≈ 0.8038
🧮 加权平均(Weighted Average)
考虑每类样本占比,按“支持数”加权平均
总样本数:50 + 40 + 30 = 120
P_weighted = (0.8889×50 + 0.8000×40 + 0.7143×30) / 120 ≈ 0.8119
R_weighted = (0.8000×50 + 0.8000×40 + 0.8333×30) / 120 ≈ 0.8083
F1_weighted = (0.8421×50 + 0.8000×40 + 0.7692×30) / 120 ≈ 0.8084
🧮 微平均(Micro Average)
把所有 TP / FP / FN 累加后统一计算
(不算每类单独指标)
【原数据统计】
实际 \ 预测 | 0(正面) | 1(中性) | 2(负面) | 支持数(Support) |
---|---|---|---|---|
0 正面 | 40 | 5 | 5 | 50 |
1 中性 | 3 | 32 | 5 | 40 |
2 负面 | 2 | 3 | 25 | 30 |
【Total TP 的计算】
也就是除斜角线的数值相加,得到预测对的总数;
正面预测对40个;
中性预测对32个;
负面预测对25个;
【Total FP(总假正例)的计算】
也就是除斜角线的数值,其它数值相加得到预测错的总数;
类别 | 预测成该类的样本总数 | 实际就是该类的有几个(TP) | FP(预测错的) |
---|---|---|---|
类别 0 | 40(来自0) + 3(来自1) + 2(来自2) = 45 | TP=40 | FP=45 - 40 = 5 |
类别 1 | 5(来自0) + 32(来自1) + 3(来自2) = 40 | TP=32 | FP=40 - 32 = 8 |
类别 2 | 5(来自0) + 5(来自1) + 25(来自2) = 35 | TP=25 | FP=35 - 25 = 10 |
【Total FN(总假负例)的计算】
实际总数—预测对的总数=模型“漏掉”的总样本数
我们从每一行看:实际是某类,但模型预测成别的类了(除了对角线 TP 之外的)
类别 | 实际是该类的总数 | 被预测对的有几个(TP) | FN(预测错的) |
---|---|---|---|
类别 0 | 50 | TP = 40 | FN = 50 - 40 = 10 |
类别 1 | 40 | TP = 32 | FN = 40 - 32 = 8 |
类别 2 | 30 | TP = 25 | FN = 30 - 25 = 5 |
类别 | TP | FP(列总减去TP) | FN(行总减去TP) |
---|---|---|---|
0 | 40 | 5 | 10 |
1 | 32 | 8 | 8 |
2 | 25 | 10 | 5 |
✅ 合计 | 97 | 23 | 23 |
-
Total TP = 40 + 32 + 25 = 97 #斜角线
-
Total FP = 5 + 8 + 10 = 23 #
-
Total FN = 10 + 8 + 5 = 23
P_micro = TP / (TP + FP) = 97 / (97 + 23) = 97 / 120 ≈ 0.8083
R_micro = TP / (TP + FN) = 97 / (97 + 23) = 97 / 120 ≈ 0.8083
F1_micro = same as P and R when they are equal = 0.8083
六、最终平均结果表格
平均方式 | 精确率(P) | 召回率(R) | F1 分数 |
---|---|---|---|
宏平均 | 0.8011 | 0.8111 | 0.8038 |
加权平均 | 0.8119 | 0.8083 | 0.8084 |
微平均 | 0.8083 | 0.8083 | 0.8083 |
✅ 总结
类型 | 特点 | 适合场景 |
---|---|---|
宏平均(Macro) | 所有类同等重要 | 情感三分类 |
加权平均(Weighted) | 考虑类别数量占比 | 数据不平衡 |
微平均(Micro) | 聚焦全局效果 | 多标签分类、大规模任务 |