多分类逻辑回归混淆矩阵

文章目录

前言

多分类逻辑回归混淆矩阵是用于评估多分类模型(例如逻辑回归扩展到多类情况,如Softmax回归)性能的一种特定表格布局。

例如:

它是什么

混淆矩阵是一个 N × N N \times N N×N 的矩阵(其中 N N N 是类别的数量),用于比较模型预测结果与真实标签之间的差异。

  • 行:通常代表真实的类别(实际值)。
  • 列:通常代表模型预测的类别(预测值)。
  • 单元格:矩阵中的每个单元格 C i j C_{ij} Cij 表示"真实类别为 i i i 但被模型预测为类别 j j j"的样本数量。

示例:三分类问题(类别:猫、狗、兔)

假设我们有一个包含100个样本的测试集,混淆矩阵可能如下所示:

真实\预测
15 3 2
4 25 1
2 3 45
  • 对角线(15, 25, 45):都是预测正确的情况。
  • 非对角线:都是预测错误的情况。eg. 第二行第一列的 4 表示"有4只真实的狗被错误地预测成了猫"。

主要用途

混淆矩阵不仅仅是一张数字表,它对于理解模型在多分类问题中的表现至关重要,因为它能揭示比简单准确率更丰富的信息。

直观展示全局错误分布

  • 只看准确率(Accuracy),你可能只知道模型在测试集上正确率是 85%(对角线和除以总数)。
  • 但混淆矩阵能告诉你错误都发生在哪些类别之间。eg. 从上面的矩阵可以看出,模型经常混淆"猫"和"狗",但很少把"猫"和"兔"混淆。

计算多分类评估指标

基于混淆矩阵,可以为每个类别计算以下关键指标

  • 精确率:预测为该类别的样本中,有多少是真正正确的。eg. 精确率------"预测为猫的里面,有多少是真的猫?"

    精确率 = 对角线元素 该列的总和 \text{精确率} = \frac{\text{对角线元素}}{\text{该列的总和}} 精确率=该列的总和对角线元素

    针对"猫":

    15 15 + 4 + 2 = 0.714 \frac{15}{15+4+2}=0.714 15+4+215=0.714

  • 召回率:真实为该类别的样本中,有多少被正确找出来了。eg. 召回率------"真实为猫的里面,有多少被正确预测出来了?"

    召回率 = 对角线元素 该行的总和 \text{召回率} = \frac{\text{对角线元素}}{\text{该行的总和}} 召回率=该行的总和对角线元素

    针对"猫":

    15 15 + 3 + 2 = 0.75 \frac{15}{15+3+2}=0.75 15+3+215=0.75

  • F1分数:精确率和召回率的调和平均。

    F1 = 2 × 精确率 × 召回率 精确率 + 召回率 \text{F1} = \frac{2 \times \text{精确率} \times \text{召回率}}{\text{精确率} + \text{召回率}} F1=精确率+召回率2×精确率×召回率

    针对"猫":
    2 × 0.714 × 0.75 0.714 + 0.75 ≈ 0.731 \frac{2 \times 0.714 \times 0.75}{0.714 + 0.75} \approx 0.731 0.714+0.752×0.714×0.75≈0.731

识别"易混淆"的类别(模型偏差)

这是混淆矩阵最重要的诊断功能。

如果你发现某两个类别(比如"狼"和"哈士奇")之间的非对角线数字特别高,这意味着:

  • 特征相似性:模型无法有效区分这两个类别,可能是因为它们的特征过于相似,或者训练数据中这两个类别的区分度不够。
  • 数据不平衡:某个类别样本太少,导致模型倾向于将其预测为样本多的那个大类。

发现"类别不平衡"的影响

通过观察矩阵的行和与列和,可以判断模型是否偏向于多数类。

  • 如果某个类别的样本数(行和)远大于其他类别,但模型表现不佳,混淆矩阵会显示模型倾向于把别的类预测为这个大类。

准确率

为了方便阅读,再次列出矩阵和之前算出的每类指标:

真实\预测 样本总数(行和)
15 3 2 20
4 25 1 30
2 3 45 50
预测总数(列和) 21 31 48 100(总计)

每类的性能指标:

猫:精确率 P c ≈ 0.714 ( 25 / 21 ),召回率 R c = 0.75 , F 1 ≈ 0.731 狗:精确率 P d ≈ 0.806 ( 25 / 31 ),召回率 R d ≈ 0.833 ( 25 / 30 ), F 1 ≈ 0.819 兔:精确率 P r ≈ 0.938 ( 45 / 48 ),召回率 R r = 0.9 ( 45 / 50 ), F 1 ≈ 0.918 \text{猫}:\text{精确率 }P_c \approx 0.714 (25/21),\text{召回率 }R_c = 0.75 ,F1 ≈ 0.731 \\ \text{狗}:\text{精确率 }P_d \approx 0.806 (25/31),\text{召回率 }R_d \approx 0.833 (25/30),F1 ≈ 0.819 \\ \text{兔}:\text{精确率 }P_r \approx 0.938 (45/48),\text{召回率 }R_r = 0.9 (45/50),F1 ≈ 0.918\\ 猫:精确率 Pc≈0.714(25/21),召回率 Rc=0.75,F1≈0.731狗:精确率 Pd≈0.806(25/31),召回率 Rd≈0.833(25/30),F1≈0.819兔:精确率 Pr≈0.938(45/48),召回率 Rr=0.9(45/50),F1≈0.918


总体准确率

在讲两种平均之前,先明确最简单的总体准确率作为参照:

公式: 所有预测正确的样本数 总样本数 计算: 15 + 25 + 45 100 = 85 100 = 0.85 \text{公式:} \frac{\text{所有预测正确的样本数}}{\text{总样本数}}\\[10pt] \text{计算:} \frac{15 + 25 + 45}{100} = \frac{85}{100} = \mathbf{0.85}\\[10pt] 公式:总样本数所有预测正确的样本数计算:10015+25+45=10085=0.85

含义为整体上有 85% 的样本被正确分类。


平均准确率

这里容易和上面的总体准确率混淆,需要注意区分。

  • 别名:宏平均准确率
  • 计算方式:先分别算出每一类的准确率(注意:是每一类的准确率,不是精确率),然后对所有类取算术平均。
    • 每一类的准确率 = 该类预测正确的数量 / 该类真实的总数量

运算步骤:

  1. 猫的准确率: 15 / 20 = 0.75 2. 狗的准确率: 25 / 30 ≈ 0.833 3. 兔的准确率: 45 / 50 = 0.9 4. 平均准确率 = 0.75 + 0.833 + 0.9 3 ≈ 2.483 3 = 0.828 \text{1. 猫的准确率:} 15 / 20 = 0.75\\[10pt] \text{2. 狗的准确率:} 25 / 30 \approx 0.833\\[10pt] \text{3. 兔的准确率:} 45 / 50 = 0.9\\[10pt] \text{4. 平均准确率} = \frac{0.75 + 0.833 + 0.9}{3} \approx \frac{2.483}{3} = \mathbf{0.828}\\[10pt] 1. 猫的准确率:15/20=0.752. 狗的准确率:25/30≈0.8333. 兔的准确率:45/50=0.94. 平均准确率=30.75+0.833+0.9≈32.483=0.828

为什么是 0.828,而不是总体准确率的 0.85

  • 原因:平均准确率给每个类别赋予了相同的权重(各占 1/3)。
  • 虽然"兔"类表现很好(0.9)且样本多,但"猫"类表现较差(0.75)且样本少。在计算平均准确率时,"猫"类差的表现在权重上被提升到了和"兔"类一样高,因此分数被拉低到了 0.828。

加权平均准确率

  • 别名:加权宏平均准确率
  • 计算方式:先算出每一类的准确率,然后用该类样本数量占总数的比例作为权重,进行加权平均。

运算步骤:

  1. 各类权重:
    • 猫:20/100 = 0.2
    • 狗:30/100 = 0.3
    • 兔:50/100 = 0.5
  2. 加权计算:
    加权平均准确率 = ( 0.75 × 0.2 ) + ( 0.833 × 0.3 ) + ( 0.9 × 0.5 ) = 0.15 + 0.2499 + 0.45 ≈ 0.85 \begin{aligned} \text{加权平均准确率} &= (0.75 \times 0.2) + (0.833 \times 0.3) + (0.9 \times 0.5) \\ &= 0.15 + 0.2499 + 0.45 \\ &\approx \mathbf{0.85} \end{aligned} 加权平均准确率=(0.75×0.2)+(0.833×0.3)+(0.9×0.5)=0.15+0.2499+0.45≈0.85

发现了吗?

这里的 0.85 正好等于最开始的总体准确率

  • 原因:加权平均准确率本质上就是在计算总体准确率,只是换了一种拆分再求和的形式。
  • 因为每一类的准确率乘以该类样本权重,实际上就是在计算该类正确分类的样本数占总数的比例,求和后自然等于总体准确率

对比

为了更直观地对比这几个指标的区别,可以看下面这张表:

指标 计算核心 特点 适用场景
总体准确率 正确的总数 / 总数 容易被大类别主导 类别均衡时的快速参考
平均准确率 各类准确率的算术平均 平等对待每个类别,小类别的表现和大类别一样重要 关注小类、数据不平衡、需要保守评估时
加权平均准确率 各类准确率的加权平均 按样本量加权,结果等于总体准确率 官方报告常用,反映按样本量加权后的综合表现

回到"猫狗兔"的例子思考

  • 如果只看总体准确率(0.85),可能会觉得模型还不错。
  • 但如果查看平均准确率(0.828),就会发现模型在少数类(猫)上的表现其实拖了后腿,不如多数类(兔)那么理想。平均准确率 正是帮助捕捉到这种差异的工具。
相关推荐
深度学习lover2 小时前
<数据集>yolo骑行者识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉
东离与糖宝2 小时前
Spring Boot 3.x面试全攻略:自动配置+事务+AOT,2026最新考点
java·人工智能·面试
2601_955363152 小时前
技术赋能B端拓客:号码核验行业的迭代与价值升级氪迹科技法人股东号码筛选系统,阶梯式价格
大数据·人工智能
志栋智能2 小时前
超自动化巡检:构筑业务连续性的第一道智能防线
大数据·运维·网络·人工智能·自动化
Elastic 中国社区官方博客2 小时前
使用 OpenTelemetry 和 Elastic 的 ML 和 AI Ops 可观测性
大数据·人工智能·elasticsearch·搜索引擎·全文检索
码农小白AI2 小时前
AI报告审核打通多终端协同:IACheck如何实现新能源汽车检测报告跨平台统一管理
人工智能·汽车
ai_xiaogui2 小时前
PanelAI 最新进展:AI算力集群一键部署ComfyUI & Stable Diffusion,多节点Docker管理面板从原型到真实数据全解析
人工智能·docker·stable diffusion·ai算力集群管理·ai私有化部署工具·ai容器管理与算力调度实战·多节点docker服务器面板
花千树-0102 小时前
用 Java 实现 RAG 组件化:从 PDF 加载到智能问答全流程
java·开发语言·人工智能·langchain·pdf·aigc·ai编程
文心快码 Baidu Comate2 小时前
Comate AI IDE三大能力升级:支持语音输入& AI可操作浏览器 & Figma设计与代码双向转换
ide·人工智能·ai编程·figma·文心快码·ai编程助手