我们研究的是多分类问题,下面所有例子以多分类问题举例

混淆矩阵(Confusion Matrix)

混淆矩阵( Confusion Matrix )是一个表格,用于可视化机器学习模型在分类问题上
的性能。混淆矩阵的行表示实际类别,列表示预测类别。矩阵中的每个单元格显示了
实际类别与预测类别组合中的样本数量。

定义:用于展示多分类模型预测结果与真实标签的对应关系矩阵,直观反映各类别的预测正确 / 错误情况。
维度:若有 K 个类别,则混淆矩阵为 K×K 矩阵。

1. 矩阵结构解析

以 3 分类问题(类别 A、B、C)为例,混淆矩阵格式如下:

真实\预测ABC
ATP_AFP_A→BFP_A→C
BFP_B→ATP_BFP_B→C
CFP_C→AFP_C→BTP_C
混淆矩阵的组成部分:

TP_i(True Positive_i):类别 i 的正确预测数(对角线元素)。

FP_i→j(False Positive_i→j):真实为 i 类但被误判为 j 类的样本数(非对角线元素)。

2. 案例说明

假设预测 100 个样本(A 类 30 个、B 类 30 个、C 类 40 个),混淆矩阵如下:

真实\预测ABC
A2532
B2244
C3334
 

TP_A=25(A 类正确预测 25 个),FP_A→B=3(A 类误判为 B 类 3 个),其余同理。

准确率(Accuracy)

准确率 (accuracy) :是指模型预测正确的样本数比上总样本数的比重(是针对模型的)


特点:整体模型的预测正确率,但对样本不均衡问题不敏感(如某类样本极少时,正确预测该类对准确率贡献小)。

精确率(Precision)(分母为列求和)

针对每一个类别,预测正确的样本数比上预测出来的样本数(预测为某类的样本中实际正确的比例(在混淆矩阵里,行表示真实类别,列表示预测类别,预测正确的样本数在对角线上)

召回率(Recall)(分母为行求和)

针对每一个类别,预测正确的样本数比上实际存在的样本数(实际为某类的样本中被正确预测的比例)(在混淆矩阵里,行表示真实类别,列表示预测类别,预测正确的样本数在对角线上)

精确率和召回率之间的关系

🌟 ​核心比喻

想象你是一个渔夫在捞鱼:

  • 精确率​:你捞上来的鱼里,​有多少是真鱼​(而不是垃圾、水草)。
    → ​​“捞得准不准”​​(避免误捞)。
  • 召回率​:整个池塘里所有的鱼,​你捞上来多少
    → ​​“捞得全不全”​​(避免漏捞)。

两者矛盾​:

  • 如果你用特别密的网(严格),捞上来的基本都是鱼(高精确率),但可能漏掉很多鱼(低召回率)。
  • 如果你用特别松的网(宽松),能捞到大部分鱼(高召回率),但会混进很多垃圾(低精确率)。
 ​两者的关系
  1. 此消彼长​:

    • 模型越严格 → ​精确率高,召回率低​(少犯错,但会漏东西)。
    • 模型越宽松 → ​召回率高,精确率低​(多抓取,但混进错误)。
  2. 平衡方法​:

    • F1分数​:精确率和召回率的“调和平均”(既要准,又要全)。
    • 业务需求决定​:
      • 医疗诊断:​高召回率​(宁可误诊,不能漏诊)。
      • 推荐系统:​高精确率​(宁可少推荐,不能推错)。

F1 分数(F1-Score)

f1_Score 是精确率( Precision )和召回率( Recall )的调和平均数,用于评估分类模
型的性能。 f1_Score 0 1 之间, 1 表示完美的精确率和召回率, 0 表示两者都很
差。

多类分类任务评级指标

精度、召回率和 F1 分数等均针对两类分类任务。针对多类分类任务,一种方式
是将 C 分类的评价拆成 C 个两类分类的评价,然后综合多个两类分类指标以得到
评价多类分类任务的指标。综合的方式有微观( Micro )、宏观( Macro )、加
权( Weighted )、样本( samples )等。
微观( Micro ):对每个样本(不分类别)计算全局的指标,每个样本的权重
相同。多标签任务中首选,也可用于多类分类。
宏观( Macro ):计算每个类别(二分类)的指标,再求平均,每个类别的权
重相同,会放大少数类(样本数目较少的类)的影响。
加权( Weighted ):计算每个类别的指标,每类的权重与该类样本数目有
关,可处理不同类别样本数目不均衡问题。
样本( samples ):计算每个样本的指标,然后求平均,仅适用于多标签问

ROC曲线、AUC 

区别于二分类

  1. 一对多(One-vs-Rest, OVR)
  2. 一对一(One-vs-One, OVO)
  3. 微平均(Micro-average)与宏平均(Macro-average)

平均精度均值(mAP,mean Average Precision)

在多分类问题中,平均精度均值(mAP,mean Average Precision) 是一种综合评估模型性能的重要指标,尤其适用于需要考虑样本排序和类别相关性的任务(如目标检测、信息检索、图像分类等)。下面从基础概念、计算流程到多分类场景的扩展进行详细解析。

核心概念:AP(Average Precision)

AP 是衡量单个类别分类效果的指标,其核心思想是:在所有可能的召回率水平下,计算精确率的平均值,反映模型对该类样本的 “排序质量”。

2. AP 的计算流程(以二分类为例,多分类需扩展)

假设模型对某类样本的预测结果按置信度从高到低排序,依次将每个样本视为 “正类阈值”,计算对应的精确率和召回率,最终 AP 是这些精确率的加权平均。具体步骤:

  1. 排序预测结果:按置信度从高到低排序所有样本。
  2. 逐样本计算 TP/FP
    • 若样本真实类别为正类,则记为 TP,否则为 FP。
  3. 累积精确率和召回率
    • 前k个样本的精确率:前k个中的 TP 数 / k。
    • 前k个样本的召回率:前k个中的 TP 数 / 总正类样本数。
  4. 计算 AP
    • 方法 1:全点插值法(现代常用):对每个召回率点r,取所有召回率≥r时的最大精确率,再求这些精确率的平均值(本质是计算精确率 - 召回率曲线下的面积)。
    • 方法 2:11 点插值法(历史方法):在召回率为 0, 0.1, ..., 1.0 的 11 个点上,取对应最大精确率的平均值。
多分类场景下的 mAP 计算

多分类问题中(如C个类别),mAP 是每个类别 AP 的平均值,核心是将多分类转化为多个二分类问题处理。

对每个类别c,将其视为 “正类”,其他C−1个类别视为 “负类”,形成C个二分类任务。例如,在三分类问题(类别 A、B、C)中:

  • 计算类别 A 的 AP 时,将 A 视为正类,B 和 C 视为负类;
  • 同理处理类别 B 和 C。

以目标检测任务(典型多分类场景)为例,假设模型输出每个检测框的类别、置信度和坐标,计算 mAP 的步骤如下:

步骤 1:对每个类别单独处理

以类别c为例:

  1. 收集所有预测框:筛选出预测为类别c的所有检测框,按置信度从高到低排序。
  2. 确定真实正类样本:所有真实标签为类别c的目标。
  3. 计算每个预测框的 TP/FP
    • 对于每个预测框,若与某真实正类目标的 IoU(交并比)≥阈值(如 0.5),且该真实目标未被其他更高置信度的预测框匹配过,则记为 TP;否则为 FP(包括 IoU 不足或重复匹配)。
步骤 2:计算单个类别的 AP

基于步骤 1 的 TP/FP 序列,按 AP 的计算方法(全点插值法)计算类别c的 AP:

  • 例如,假设排序后的预测框依次为p1​,p2​,...,pn​,前k个框中有tk​个 TP,则前k个框的精确率为tk​/k,召回率为tk​/T(T为类别c的总真实目标数)。
  • AP 是所有召回率点对应的最大精确率的平均值(即精确率 - 召回率曲线下的面积)。
步骤 3:计算 mAP

对所有C个类别的 AP 取算术平均值:

三、示例:mAP 计算实例

假设一个三分类问题(类别 A、B、C),每个类别有 2 个真实目标,模型对每个类别输出 5 个预测框(按置信度排序),如下表所示:

类别 A 的 AP 计算
预测框置信度真实标签是否为 AIoU≥0.5?TP/FP前 k 个框的 TP 数精确率(前 k 个)召回率(前 k 个)
10.9TP11/1=1.01/2=0.5
20.8-FP11/2=0.51/2=0.5
30.7TP22/3≈0.6672/2=1.0
40.6-FP22/4=0.52/2=1.0
50.5-FP22/5=0.42/2=1.0

  • 计算各召回率点的最大精确率
    • 召回率 = 0.5 时,最大精确率为 1.0(来自 k=1);
    • 召回率 = 1.0 时,最大精确率为 0.667(来自 k=3);
    • 其他召回率点无新值。
  • AP_A = (1.0 + 0.667) / 2 ≈ 0.833。
类别 B 的 AP 计算
预测框置信度真实标签是否为 BIoU≥0.5?TP/FP前 k 个框的 TP 数精确率召回率
10.9TP11.00.5
20.8TP21.01.0
30.7-FP20.6671.0
40.6-FP20.51.0
50.5-FP20.41.0

  • 召回率 = 0.5 时,精确率 = 1.0;召回率 = 1.0 时,最大精确率 = 1.0(来自 k=1 和 k=2)。
  • AP_B = (1.0 + 1.0) / 2 = 1.0。
类别 C 的 AP 计算

假设模型对类别 C 的预测较差,所有预测框均为 FP,则 AP_C=0。

最终 mAP

mAP=30.833+1.0+0​≈0.611

关于ROC曲线、AUC、平均精度均值,后面复习更多再补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/84375.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/84375.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/84375.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打卡day35

一、模型结构可视化 理解一个深度学习网络最重要的2点: 了解损失如何定义的,知道损失从何而来----把抽象的任务通过损失函数量化出来了解参数总量,即知道每一层的设计才能退出—层设计决定参数总量 为了了解参数总量,我们需要知…

时序数据库 TDengine × Superset:一键构建你的可视化分析系统

如果你正在用 TDengine 管理时序数据,写 SQL 查询没问题,但一到展示环节就犯难——图表太基础,交互不够,甚至连团队都看不懂你辛苦分析的数据成果?别担心,今天要介绍的这个组合,正是为你量身打造…

C# 初学者的 3 种重构模式

(Martin Fowlers Example) 1. 积极使用 Guard Clause(保护语句) "如果条件不满足,立即返回。将核心逻辑放在最少缩进的地方。" 概念定义 Guard Clause(保护语句) 是一种在函数开头检查特定条件是否满足&a…

基于51单片机和8X8点阵屏、独立按键的滑动躲闪类小游戏

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、8X8点阵屏2、独立按键3、定时器04、定时器1 四、主函数总结 系列文章目录 前言 用的是普中A2开发板。 【单片机】STC89C52RC 【频率】12T11.0592MHz 【外设】8X8点阵屏、独立按键 效果查看/操作演示&#xff…

Java面向对象 一

系列文章目录 Java面向对象 二-CSDN博客 Java面向对象 三-CSDN博客 目录 系列文章目录 前言 一、初步认识面向对象 1.类和对象的简单理解 2.类的构成 二、类的实例化 1.对象的创建 2.对象的初始化 三、this引用的作用 四、构造方法 1.构造方法的提供 2.对象的构…

深度学习Y8周:yolov8.yaml文件解读

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 本周任务:根据yolov8n、yolov8s模型的结构输出,手写出yolov8l的模型输出、 文件位置:./ultralytics/cfg/models/v8/yolov8.…

【RocketMQ 生产者和消费者】- 生产者启动源码 - MQClientInstance 定时任务(4)

文章目录 1. 前言2. startScheduledTask 启动定时任务2.1 fetchNameServerAddr 拉取名称服务地址2.2 updateTopicRouteInfoFromNameServer 更新 topic 路由信息2.2.1 topic 路由信息2.2.2 updateTopicRouteInfoFromNameServer 获取 topic2.2.3 updateTopicRouteInfoFromNameSer…

解决Docker容器内yum: not found、apt: not found、apk: command not found等命令找不到问题

Linux有很多发行版,各发行版的包管理工具不一定相同。 Alpine的包管理工具是 apk Debian/Ubuntu的包管理工具是 apt Centos/RHEL的包管理工具是 yum 在安装软件之前,需要先查看Docker容器内的Linux是什么发行版,可使用 cat /etc/os-rele…

每日c/c++题 备战蓝桥杯(修理牛棚 Barn Repair)

修理牛棚 Barn Repair 题解 问题背景与挑战 在一个暴风雨交加的夜晚,Farmer John 的牛棚遭受了严重的破坏。屋顶被掀飞,大门也不翼而飞。幸运的是,许多牛正在度假,牛棚并未住满。然而,为了保护那些还在牛棚里的牛&am…

鸿蒙版Flutter库torch_light手电筒功能深度适配

鸿蒙版Flutter库torch_light手电筒功能深度适配:跨平台开发者的光明之路 本项目作者:kirk/坚果 适配仓库地址 作者仓库:https://github.com/svprdga/torch_light# 在数字化浪潮的推动下,跨平台开发框架如 Flutter 凭借其高效、…

【信息系统项目管理师】一文掌握高项常考题型-项目进度类计算

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 一、进度类计算的基本概念1.1 前导图法1.2 箭线图法1.3 时标网络图1.4 确定依赖关系1.5 提前量与滞后量1.6 关键路径法1.7 总浮动时间1.8 自由浮动时间1.9 关键链法1.10 资源优化技术1.11 进度压缩二、基本公式…

深入了解linux系统—— 操作系统的路径缓冲与链接机制

前言 在之前学习当中,我们了解了被打开的文件是如何管理的;磁盘,以及ext2文件系统是如何存储文件的。 那我们要打开一个文件,首先要先找到这个文件,操作系统又是如何去查找的呢? 理解操作系统搜索文件 …

Docker Hub仓库介绍

Docker Hub仓库全解析:从公共市场到私有化部署指南 一、Docker Hub公共镜像市场 1.1 核心功能解析 全球最大容器镜像库:累计托管超500万镜像核心服务矩阵: #mermaid-svg-CAMkhmtSWKEUw7z0 {font-family:"trebuchet ms",verdana,a…

redis使用RDB文件恢复数据

设置存盘间隔为120秒且10个key改变数据自动存盘使用RDB文件恢复数据 IP地址主机名192.168.10.170redis170 [rootredis170 ~]# yum install -y redis [rootredis170 ~]# systemctl start redis步骤一:设置存盘间隔为120秒且10个key改变自动存盘 [rootredis170 ~]#…

SpringBoot多环境配置文件切换

resources下application.yml、application-dev.yml、application-prod.yml多个配置文件。 spring:profiles:active: devspring:profiles:active: prod一般都是通过修改spring.profiles.active值来修改加载不同环境的配置信息,可以把切换的dev/prod放到pom.xml文件来…

Java 并发编程高级技巧:CyclicBarrier、CountDownLatch 和 Semaphore 的高级应用

Java 并发编程高级技巧:CyclicBarrier、CountDownLatch 和 Semaphore 的高级应用 一、引言 在 Java 并发编程中,CyclicBarrier、CountDownLatch 和 Semaphore 是三个常用且强大的并发工具类。它们在多线程场景下能够帮助我们实现复杂的线程协调与资源控…

【Java多线程】多线程状态下如何安全使用ArrayList以及哈希表

🔍 开发者资源导航 🔍🏷️ 博客主页: 个人主页📚 专栏订阅: JavaEE全栈专栏 多线程安全使用ArrayList 手动加锁 日常中最常用的方法,使用synchronized进行加锁,把代码打包成一份&a…

InnoDB引擎底层解析(二)之InnoDB的Buffer Pool(三)

Buffer Pool 实例 我们上边说过,Buffer Pool 本质是 InnoDB 向操作系统申请的一块连续的内存空间,在多线程环境下,访问 Buffer Pool 中的各种链表都需要加锁处理,在Buffer Pool特别大而且多线程并发访问特别高的情况下&#xff0…

Netty学习专栏(三):Netty重要组件详解(Future、ByteBuf、Bootstrap)

文章目录 前言一、Future & Promise:异步编程的救星1.1 传统NIO的问题1.2 Netty的解决方案1.3 代码示例:链式异步操作 二、ByteBuf:重新定义数据缓冲区2.1 传统NIO ByteBuffer的缺陷2.2 Netty ByteBuf的解决方案2.3 代码示例:…

Vue3逐步抛弃虚拟Dom,React如何抉择

虚拟DOM:前端界的替死鬼 这玩意儿就是个前端开发的充气娃娃! 你以为它很牛逼?无非是给真DOM当替死鬼! 每次数据变,虚拟DOM先搁内存里自嗨一顿,diff算法跟便秘似的算半天,最后才敢碰真DOM。 说白…