全栈基础杂谈第五期:什么是模型训练中常见的F1_Score

简介😶

F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种调和平均,它的最大值是1,最小值是0。 ————《百度百科》

在机器学习和深度学习中,模型的评估是一个至关重要的环节,它帮助我们了解模型在真实世界中的表现,而F1 Score(F1得分)则是其中一种常用的评估指标,尤其在处理不平衡数据集时表现突出。F1 Score因为其结合了“精确率”(Precision)和“召回率”(Recall),成为许多分类任务的首选评估指标。

在分类任务中,我们通常会预测样本是否属于某一类别,比如“猫”或“狗”、电子邮件“垃圾”或“非垃圾”。以二分类问题为例,预测结果和真实情况之间会有以下四种情况:

  1. True Positive (TP):模型正确地将正类预测为正类。
  2. False Positive (FP):模型将负类错误地预测为正类。
  3. True Negative (TN):模型正确地将负类预测为负类。
  4. False Negative (FN):模型将正类错误地预测为负类。

基于这四种情况,我们可以计算出不同的评估指标。

细究🤔

想要细究问题,首先我们得弄明白什么是精确率和召回率。

精确率

精确率表示在模型预测为正的所有样本中,真正为正的比例,即有多少预测为正的样本是真正的正类样本。

公式如下:
P r e c i s i o n = T P T P + F P {Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP
TP是我们上文提到的True Positive (TP):模型正确地将正类预测为正类。

FP是我们上文提到的False Positive (FP):模型将负类错误地预测为正类。

召回率

召回率表示所有实际为正的样本中被模型正确预测为正的比例,即模型能正确捕捉到多少真实的正类样本。

公式如下:
R e c a l l = T P F N + T P {Recall} = \frac{TP}{FN+TP} Recall=FN+TPTP
TP是我们上文提到的True Positive (TP):模型正确地将正类预测为正类。

FN是我们上文提到的False Negative (FN):模型将正类错误地预测为负类。

在模型评估中,之所以会存在精确率和召回率,是因为它们分别衡量了分类模型在正类样本的识别准确性捕获完整性方面的表现,两者互补,帮助我们全面了解模型的性能。

场景示例

我们可以用一个形象的例子,例如“寻找失踪儿童”来解释精确率和召回率的概念。

假设我们有一支救援队正在一个拥挤的购物中心寻找一名失踪的儿童。救援队中有一些观察员专门负责寻找符合孩子特征的人。每次观察员认为某个人可能是失踪的儿童,他们就会发出信号(即“检测到儿童”)。

在这种情况下,我们可以定义以下情况:

  • True Positive (TP):观察员正确地发现了失踪儿童。
  • False Positive (FP):观察员误以为另一个孩子是失踪儿童。
  • False Negative (FN):观察员错过了真正的失踪儿童。
  • True Negative (TN):观察员没有发出信号,因为发现的不是目标儿童。

精确率表示在所有被标记为“疑似失踪儿童”的人中,有多少是真正的失踪儿童。

例如,如果观察员标记了10个孩子为“疑似失踪儿童”,但其中只有2个是正确的,那么精确率是
P r e c i s i o n = T P T P + F P = 2 10 = 0.2 {Precision} = \frac{TP}{TP + FP}=\frac{2}{10} = 0.2 Precision=TP+FPTP=102=0.2
即20%。

精确率高,意味着观察员的“怀疑”准确率高,他们很少错认别人是失踪儿童;但如果精确率低,则表明观察员经常把其他孩子误认为失踪儿童。

召回率表示在所有真正的失踪儿童中,有多少被观察员成功发现。

例如,假设总共有5名符合特征的失踪儿童在场,观察员成功发现了其中的2个,那么召回率是
R e c a l l = T P F N + T P = 2 5 = 0.4 {Recall} = \frac{TP}{FN+TP} = \frac{2}{5} = 0.4 Recall=FN+TPTP=52=0.4
即40%。

召回率高,意味着观察员可以发现大部分失踪儿童;而召回率低,则表明观察员可能会漏掉一些失踪儿童。

二者平衡

F1 Score 是精确率和召回率的调和平均数,这种平均方式使得它对较小的值更加敏感。简单来说,如果精确率或召回率其中之一较低,F1 Score 也会较低。通过这种方式,F1 Score 强调了精确率和召回率的平衡性,适合于对这两者都同样重要的任务,尤其是当正负样本不平衡时。

在上面的场景示例中,如果二者没有达到平衡会造成哪些影响呢?

高精确率,低召回率:如果观察员十分谨慎,只标记那些高度匹配失踪儿童特征的孩子,则精确率会很高,但可能会漏掉一些儿童(召回率低)。

高召回率,低精确率:如果观察员广撒网,将很多孩子标记为疑似失踪儿童,观察员更有可能找到所有真正的失踪儿童,但会产生大量误判(精确率低)

而F1 Score可以帮助我们在找到失踪儿童的数量和误判数量之间进行权衡。这就是为什么在很多类似“寻找失踪儿童”这样不允许遗漏但也不希望过多误判的任务中,F1 Score是一个重要的评估指标。

应用场景👋

在以下几个情况下,F1 Score 显得尤为重要:

  1. 不平衡数据集:当正类和负类的样本数量差异较大时,传统的准确率可能会误导我们。比如在欺诈检测中,正类(欺诈)样本很少,而负类(正常)样本占多数。此时,F1 Score能更准确地反映模型的性能。
  2. 对误判的成本较高:在医学诊断等任务中,误诊一个患者可能带来严重后果。因此,单独考虑精确率或召回率都不够,F1 Score可以帮助我们找到一个适合的平衡点。
  3. 信息检索和自然语言处理:在文本分类、情感分析等自然语言处理任务中,F1 Score广泛应用。对于信息检索的任务,如搜索引擎排名等,F1 Score可以作为排名效果的重要衡量指标。

相关变种👐

在一些多分类问题中,F1 Score有时会扩展为宏观平均F1(Macro F1)和微观平均F1(Micro F1):

  1. 宏观平均F1(Macro F1):对每个类别分别计算F1 Score,然后求平均值。它同等重视各类别,适合类别分布较平衡的情况。
  2. 微观平均F1(Micro F1):将所有类别的TP、FP和FN相加再计算F1 Score,适合于类别不平衡的情况,结果偏向于大类别。

局限性❗️

虽然F1 Score是一个重要的评估指标,但它也存在一定局限性:

  1. 忽略了TN:F1 Score 仅依赖于 TP、FP、FN,完全忽略了 True Negative 的情况。因此,当负类样本多时,F1 Score 的值可能会与实际效果有所偏差。
  2. 难以提供具体业务背景下的误差成本:F1 Score 只考虑了精确率和召回率的平衡,而没有针对不同的业务需求进行加权调整。在某些业务中,误报和漏报的成本可能并不对等。

总结📜

F1分数是一种在机器学习和深度学习中常用的分类模型评估指标,尤其适用于不平衡数据集。它综合了精确率召回率两个指标的调和平均,因此能够在模型的预测准确性和覆盖度之间达到平衡。F1分数的值介于0和1之间,越接近1表示模型的表现越好。

F1分数在一些特定应用场景中尤为重要,比如不平衡数据集(如欺诈检测)或误判成本高的任务(如医学诊断)。此外,F1分数在自然语言处理中的文本分类等任务中广泛使用。对于多分类问题,F1分数有宏观平均(Macro F1)和微观平均(Micro F1)等变种以适应不同的任务需求。

尽管F1分数具有很高的评价价值,但它也存在局限性,如忽略了真负例(TN),并且未对不同业务场景中的误报和漏报的成本差异进行加权调整。因此,在实际应用中需要结合业务场景综合考虑。

欢迎关注公众号:“全栈开发指南针”
这里是技术潮流的风向标,也是你代码旅程的导航仪!🚀
Let’s code and have fun! 🎉

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 64. 最小路径和 动态规划+空间优化

原题链接&#xff1a;Leetcode 64. 最小路径和 二维数据 class Solution { public:int minPathSum(vector<vector<int>>& grid) {int m grid.size();int n grid[0].size();int dp[m][n];dp[0][0] grid[0][0];for (int j 1; j < n; j)dp[0][j] dp[0][…

qt QMenu详解

1、概述 QMenu是Qt框架中的一个类&#xff0c;用于创建和管理菜单。它提供了丰富的接口来添加菜单项&#xff08;通常是QAction对象&#xff09;、子菜单以及分隔符。QMenu可以嵌入到菜单栏&#xff08;QMenuBar&#xff09;中&#xff0c;也可以作为弹出菜单&#xff08;通过…

Android——Activity生命周期

Activity生命周期 onCreate&#xff1a;创建活动。把页面布局加载进内存&#xff0c;君如了初始状态。onStart&#xff1a;开始活动。把活动页面显示在屏幕上&#xff0c;进入了就绪状态。onResume&#xff1a;恢复活动。活动页面进入活跃状态&#xff0c;能够与用户正常交互&…

02- 模块化编程-004 DB18B20温度数码显示

1、DB18B20采样与显示电路 2、DB18B20简介 DS18B20是一款高精度的单总线数字温度传感器&#xff0c;适用于多种温度测量场合。 温度范围&#xff1a;-55℃至125℃精度&#xff1a;可编程设定9至12位分辨率&#xff0c;对应温度分辨率0.5℃、0.25℃、0.125℃、0.0625℃通信&am…

[241102] Fedora Linux 41 正式发布 | Wasmer 5.0 发布

目录 Fedora Linux 41 正式发布Wasmer 5.0 发布 Fedora Linux 41 正式发布 主要更新&#xff1a; DNF 5: 更快、更小、依赖更少&#xff0c;统一了容器、服务器、桌面和设备的包管理体验。桌面更新&#xff1a; Fedora Workstation 41 基于 GNOME 47&#xff0c;默认终端改为…

C++继承

文章目录 一、继承的概念和定义1、继承的概念2、继承的定义3、继承基类成员访问方式的变化 二、基类和派生类之间的转换三、继承中的作用域1、隐藏规则 四、派生类的默认成员函数1、常见默认成员函数2、实现一个不能被继承的类 五、继承与友元六、继承与静态成员变量七、多继承…

嵌入式linux系统中串口驱动框架分析

大家好,今天主要给大家分享一下,如何使用linux系统中的串口实现。 第一:串口基本简介 串口是很常见的一个外设,在Linux下通常通过串口和其他设备或传感器进行通信。根据电平的不同,串口可以分为TTL和RS232。不管是什么样的电平接口,驱动程序是一样的。 第二:Linux下UAR…

秋日盛景,北京马拉松万人齐跑,秀域人工智能理疗获好评无数

在金秋送爽的北京&#xff0c;一场全民瞩目的体育盛事——北京马拉松顺利开跑&#xff0c;再次点燃了这座城市的运动激情。各地跑者齐聚双奥之城&#xff0c;共同奔赴在秋日美景之中。      回首往昔&#xff0c;1981年9月27日&#xff0c;首届北京马拉松赛的举办&#xff…

Java-I/O框架09:InputStreamReader、OutputStreamWriter使用

视频链接&#xff1a;16.24 转换流的使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tz4y1X7H7?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p24 1.InputStreamReader使用 package com.yundait.Demo05;import java…

JavaScript语法基础(JS使用方式, 输出方式, 变量,数据类型,运算符,程序控制语句)

目录 JS概念 一.JS使用方式 &#xff08;1&#xff09;行内式 &#xff08;2&#xff09;内嵌式 &#xff08;3&#xff09;外链式 二.JS输出方式 三.基本语法 1.变量 &#xff08;1&#xff09;变量的命名 &#xff08;2&#xff09;变量的声明 &#xff08;3&#xf…

NPOI 操作详解(操作Excel)

目录 1. 安装 NPOI 2. 使用 NPOI 创建新 Excel 文件 3. 设置列宽和行高 1. 设置列宽 2. 设置行高 3. 同时设置列宽和行高 4. 设置统一的行高 5. 设置统一的列宽 6. 应用统一的行高和列宽 4. 合并单元格 5. 设置单元格样式&#xff08;字体、边框、背景色等&#xf…

codigger体验过程记录

一、codigger的介绍 codigger是一款分布式操作系统&#xff0c;主要是便于进行个人移动化办公、在线协同办公、开发和娱乐的私人应用。 收到codigger开发者朋友的邀请&#xff0c;于是进行了这款产品的升级体验&#xff0c;接下来就简单介绍一下自己的体验过程吧。 二、登录系…

使用labelme中的AI模型提升数据标注速度

1、打开labelme 2、选择AI模型 选择之后&#xff0c;会自动进行模型下载&#xff0c;推荐开梯子&#xff0c;否则可能下载失败&#xff0c;最小的EfficientSam 在30M左右 3、右键选择AI多边形&#xff08;分割&#xff09;或AI蒙版&#xff08;目标检测&#xff09;&#xf…

全双工通信协议WebSocket——使用WebSocket实现智能学习助手/聊天室功能

一.什么是WebSocket&#xff1f; WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器的全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并进行双向数据传输 HTTP 协议是一种无状态的、无连接的、单向的应用…

音乐网站新篇章:SpringBoot Web实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【初阶数据结构篇】链式结构二叉树(二叉链)的实现(感受递归暴力美学)

文章目录 须知 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

el-talble selection行 初始默认勾选

导言 el-talble selection 行&#xff08;选择列&#xff09;用于显示复选框&#xff0c;让用户可以选择或取消选择某些表格行&#xff0c;常用于批量操作场景。 刚刚试了下&#xff0c;想加深印象记录一下当学习碎片。参考的是表格多选并根据每行值初始化选中状态&#xff08;…

RabbitMQ交换机类型

RabbitMQ交换机类型 1、RabbitMQ工作模型2、RabbitMQ交换机类型2.1、Fanout Exchange&#xff08;扇形&#xff09;2.1.1、介绍2.1.2、示例2.1.2.1、生产者2.1.2.2、消费者2.1.2.3、测试 2.2、Direct Exchange&#xff08;直连&#xff09;2.2.1、介绍2.2.2、示例2.2.2.1、生产…

数据结构---排序(上)

一.直接插入排序 思想&#xff1a;将一个个未排序的数字插入到已经排好顺序的数组中。 例如&#xff1a; 思路&#xff1a;先将前两个数字排序&#xff0c;然后将后面数字与前面数字比较排序。 操作&#xff1a; 1.引入变量 i 遍历数组[1&#xff0c;array.lenth] 2.用临时…

ai翻唱部分步骤

模型部署 我是用的RVC进行的训练&#xff0c;也可以使用so-vits-svc。 通过百度网盘分享的文件&#xff1a;RVC-beta 链接&#xff1a;https://pan.baidu.com/s/1c99jR2fLChoqUFqf9gLUzg 提取码&#xff1a;4090 以Nvida显卡为例&#xff0c;分别下载“RVC1006Nvidia”和…