当前位置: 首页 > news >正文

【机器学习深度学习】多分类评估策略:混淆矩阵计算场景模拟示例

目录

前言摘要

一、假设任务:三分类情感分析

二、假设混淆矩阵如下(真实值为行,预测值为列):

三、每个评估类别的指标计算

➤ 类别 0(正面):

➤ 类别 1(中性):

➤ 类别 2(负面):

四、每类指标汇总表格

五、平均策略计算(宏平均、加权平均、微平均)

🧮 宏平均(Macro Average)

🧮 加权平均(Weighted Average)

🧮 微平均(Micro Average)

六、最终平均结果表格

✅ 总结


前言摘要

在多分类任务中,仅凭一个准确率远远无法全面判断模型优劣。为了真正理解模型的预测表现,我们需要深入分析每个类别的精确率、召回率、F1 分数,并结合宏平均、加权平均、微平均等策略,从多个维度评估整体性能。

本文以一个三分类情感分析任务为例,构造具体的混淆矩阵,并逐类计算出关键评估指标,带你系统掌握多分类模型评估的核心方法与策略。无论你是新手入门还是经验工程师,相信这篇实战推导都会帮你更清晰理解“评估指标背后的意义”。

【全文概括】

本文通过一个三分类情感分析示例,手工推导并计算各类精确率、召回率、F1 分数及三种平均策略,全面剖析多分类模型评估指标的计算与适用场景。


一、假设任务:三分类情感分析

  • 类别 0:正面

  • 类别 1:中性

  • 类别 2:负面


二、假设混淆矩阵如下(真实值为行,预测值为列):

实际 \ 预测0(正面)1(中性)2(负面)支持数(Support)
0 正面405550
1 中性332540
2 负面232530


三、每个评估类别的指标计算

我们对每一类手动计算:

➤ 类别 0(正面):

  • TP = 40

  • FP = 来自其他行预测为 0 的:3(中性错预测为正面) + 2(负面错预测为正面) = 5

  • FN = 实际为正面但预测错的:5(→中性)+ 5(→负面) = 10

指标公式数值
精确率 P₀40 / (40 + 3+2) = 40 / 450.8889
召回率 R₀40 / (40 + 5+5) = 40 / 500.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)
正面 00.88890.80000.842150
中性 10.80000.80000.800040
负面 20.71430.83330.769230
类别精确率(Precision)召回率(Recall)F1 分数(F1 Score)支持数(Support)
类别 0(正面)40 / (40 + 3+2) = 0.888940 / (40 + 5+5) = 0.80002×(0.8889×0.8)/(0.8889+0.8) = 0.842150
类别 1(中性)32 / (32 + 8) = 0.800032 / (32 + 8) = 0.80000.800040
类别 2(负面)25 / (25 + 10) = 0.714325 / (25 + 5) = 0.83332×(0.7143×0.8333)/(0.7143+0.8333) ≈ 0.769230

对照说明:

  • 精确率:预测为某类中有多少是真实的

  • 召回率:真实为某类中有多少被预测对

  • 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 正面405550
1 中性332540
2 负面232530

【Total TP 的计算】

也就是除斜角线的数值相加,得到预测对的总数;

正面预测对40个;

中性预测对32个;

负面预测对25个;

Total FP(总假正例)的计算

也就是除斜角线的数值,其它数值相加得到预测错的总数;

类别预测成该类的样本总数实际就是该类的有几个(TP)FP(预测错的)
类别 040(来自0) + 3(来自1) + 2(来自2) = 45TP=40FP=45 - 40 = 5
类别 15(来自0) + 32(来自1) + 3(来自2) = 40TP=32FP=40 - 32 = 8
类别 25(来自0) + 5(来自1) + 25(来自2) = 35TP=25FP=35 - 25 = 10

 

【Total FN(总假负例)的计算】

实际总数—预测对的总数=模型“漏掉”的总样本数

 我们从每一行看:实际是某类,但模型预测成别的类了(除了对角线 TP 之外的)

类别实际是该类的总数被预测对的有几个(TP)FN(预测错的)
类别 050TP = 40FN = 50 - 40 = 10
类别 140TP = 32FN = 40 - 32 = 8
类别 230TP = 25FN = 30 - 25 = 5

 

类别TPFP(列总减去TP)FN(行总减去TP)
040510
13288
225105
✅ 合计972323
  • 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.80110.81110.8038
加权平均0.81190.80830.8084
微平均0.80830.80830.8083

✅ 总结

类型特点适合场景
宏平均(Macro)所有类同等重要情感三分类
加权平均(Weighted)考虑类别数量占比数据不平衡
微平均(Micro)聚焦全局效果多标签分类、大规模任务
http://www.dtcms.com/a/268562.html

相关文章:

  • Rust 注释
  • OpenAI要开发能聊天的AI版Office挑战微软?
  • 【Spring】Spring Boot + OAuth2 + JWT + Gateway的完整落地方案,包含认证流程设计
  • window 服务器上部署前端静态资源以及nginx 配置
  • 揭秘图像LLM:从像素到语言的智能转换
  • 创意Python爱心代码
  • 基于Flink 1.20、StarRocks与TiCDC构建高效数据处理链路教程
  • linux如何下载github的一个项目
  • stm32与tp-linkv2接线、解决识别不到芯片问题
  • C++ -- string类的模拟实现
  • Go的标准库http原理解析
  • 【论文阅读】Few-Shot PPG Signal Generation via Guided Diffusion Models
  • Web Worker:让前端飞起来的隐形引擎
  • 第0章:开篇词 - 嘿,别怕,AI应用开发没那么神!
  • 【PaddleOCR】数据合成工具 Style-Text安装与使用案例介绍
  • 【机器学习笔记 Ⅲ】3 异常检测算法
  • 4D-VLA:具有跨场景标定的时空视觉-语言-动作预训练
  • Linux运维安全新范式:基于TCPIP与SSH密钥的无密码认证实战
  • 【保姆级图文详解】探秘 Prompt 工程:AI 交互的关键密码
  • C++多线程网络编程:助力高并发服务器性能提升
  • 无人机精准降落辅助系统核心技术解析
  • 一文讲清楚React Fiber
  • RAG 相关概念学习
  • VMware 17.0.2-21581411 安装教程(附详细步骤+序列号激活指南)
  • 【牛客算法】 小红的奇偶抽取
  • kotlin+MongoTemplate的时间类型为is_date类型 pymongo如何处理
  • 【vue】用conda配置nodejs,一键开通模版使用权
  • 设计模式分析
  • 1.1_5_1 计算机网络的性能指标(上)
  • 大模型在肾囊肿诊疗全流程预测及应用研究报告