【机器学习300问】44、P-R曲线是如何权衡精确率和召回率的?

news2024/9/21 2:43:20

        关于精确率和召回率的基础概念我已经写了两篇文章,如果友友还不知道这两个评估指标是什么,可以先移步去看看这两篇文章:

【机器学习300问】25、常见的模型评估指标有哪些?icon-default.png?t=N7T8http://t.csdnimg.cn/JtuUO       

        总结一下这两个概念,这里直接最凝练的说出其本质:精确率(误测,测正类有多准,查准率);召回率(漏测,测正类有多全,查全率)

【机器学习300问】31、不平衡数据集如何进行机器学习?icon-default.png?t=N7T8http://t.csdnimg.cn/L8idA

        想象一下,你是一位宝石鉴定师,你的工作是在一堆石头中找到所有的宝石。在这个任务中,精确率(Precision)相当于你找到的宝石中真正是宝石的比例,而召回率(Recall)则是你能够找到的宝石总数占所有宝石的比例。

        现在存在这么一种情况,你大多数时候都能找到真正的宝石(红宝石、绿宝石),但你找到的这些宝石并不是你最喜欢的宝石(蓝宝石)。这是为什么呢?

        还有一种情况是,你找到了许多的宝石,这些被你选出的石头里五花八门涵盖了许多宝石(红宝石、绿宝石、蓝宝石都有),但同时相当一部分并不是宝石。

一、精确率和召回率的权衡

(1)问题出在哪儿呢?

  • 高准确率低召回率:如果你非常小心,只有当你百分百确定时,你才会确定一块石头是宝石,那么你找到的“宝石”几乎都是真宝石——这就是很高的精确率,但是你可能会错过一些实际上是宝石的石头,因为你太谨慎了——这会导致较低的召回率。
  • 低准确率高召回率:另一方面,如果你决定宁可错杀三千,绝不放过一个,你可能会将更多的普通石头也当做宝石,这样你几乎能找到所有的宝石——即很高的召回率,但这其中也混入了很多并非宝石的杂石——这就导致了低精确率。

(2)怎么去解决?

        要解决高准确率低召回率或低准确率高召回率的问题,首先应明确实际应用中对精确率和召回率的需求权重,然后通过调整模型决策阈值、优化模型本身,并结合F1分数、ROC曲线和P-R曲线的分析来指导模型调优过程。

【机器学习300问】32、F1分数是什么?icon-default.png?t=N7T8http://t.csdnimg.cn/khqRi

二、P-R曲线是什么?

        本文主要介绍P-R曲线这种方法,来看看它是如何解决精确率和召回率的权衡问题的。P-R曲线可以直观反映精确率随召回率变化的情况,尤其是在数据不平衡的情况下更具指导意义。通过分析P-R曲线,可以找到一个既能保持相对较高的精确率又能提高召回率的理想工作点。

(1)P-R曲线的定义

        P-R曲线(Precision-Recall Curve)是针对二分类问题中模型性能评估的一种可视化工具,主要用于展现模型在不同阈值条件下的精确率和召回率之间的关系

  • 横轴(X轴):召回率(Recall)
  • 纵轴(Y轴):精确率(Precision)
  • 图中的点:不同阈值下的(r,p)

(2)P-R曲线的图像

        在构建P-R曲线的过程中,通常会调整模型的决策阈值,从而获得一系列的精确率和召回率对,这些对在坐标系中连接起来形成一条曲线。

P-R曲线
P-R曲线

        通过对这条曲线的分析,可以了解模型在不同阈值下如何权衡精确识别正类的能力(精确率)与找出尽可能多的正类实例的能力(召回率),即找到图中的平衡点,平衡点对应的阈值就是模型最合适的阈值。图中A、B、C是三个不同的模型,他们有着不同的平衡点。

① 寻找平衡点的三个方法

  1. 观察曲线形状来找平衡点P-R曲线越靠近右上角,表示模型在保持高召回率的同时也能保持高精确率,这是最优的表现。
  2. 通过最高的F1分数来找平衡点,F1分数是精确率和召回率的调和平均值,它提供了一个单值度量来评估模型在这两个指标上的均衡表现。在P-R曲线上对应的F1分数最高的点,通常被认为是精确率和召回率的较好平衡点。
  3. 根据实际需求选择,如果业务对召回率有极高要求(比如疾病筛查,宁可错诊也不愿漏诊),则会选择召回率较高的点;如果对精确率有极高要求(比如防止误报警系统),则会选择精确率较高的点。

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

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

相关文章

单片机LED流水灯的演变过程

文章目录 前言一、代码的重要三部曲二、使用步骤1.LED 过程 三、几种流水灯方式1.循环移位2.数组3.移位运算符“>>”、“<<”4. 位操作 四、效果图总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 课程需要&#xff1a; 提示&#xff1…

获取Book里所有sheet的名字,且带上超链接

应用背景&#xff1a; 当一个excel有很多sheet的时候&#xff0c;来回切换sheet会比较复杂&#xff0c;所以我希望excel的第一页有目录&#xff0c;可以随着sheet的增加&#xff0c;减少&#xff0c;改名而随时可以去更新&#xff0c;还希望有超链接可以直接跳到该sheet。 可以…

EDR下的线程安全

文章目录 前记进程断链回调执行纤程内存属性修改early birdMapping后记reference 前记 触发EDR远程线程扫描关键api&#xff1a;createprocess、createremotethread、void&#xff08;指针&#xff09;、createthread 为了更加的opsec&#xff0c;尽量采取别的方式执行恶意代…

Web自动化测试:如何生成高质量的测试报告

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 运行了所有测试用例&#xff0c;控制台输入的结果&#xff0c;如果很多测试用例那也不能够清晰快…

C语言----strcpy和strcat的使用和模拟实现

一&#xff0c;strcpy()函数 strcpy() 函数是 C语言中一个非常重要的字符串处理函数&#xff0c;其功能是将一个字符串复制到另一个字符串中。该函数原型如下&#xff1a; char*strcpy(char*dest,const char*src) 其中&#xff0c;dest 表示目标字符串&#xff0c;即将被复制到…

AttributeError: ‘_MSDataLoaderIter‘ object has no attribute ‘_put_indices‘

问题描述 复现代码过程中遇到错误&#xff1a;AttributeError: _MSDataLoaderIter object has no attribute _put_indices 解决方案 出错的原因是代码中使用了不存在的属性"_put_indices"。这个错误可能与你使用的版本不兼容有关。在pytorch1.x版本中&#xff0c;&q…

江苏开放大学2023年春《液压与气压传动060246》第2形考作业占形考成绩的25%参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&am…

Unable to authenticate, need: BASIC realm=“Sonatype Nexus Repository Manager“

问题 使用公司的私有源&#xff0c;执行 npm i 的时候突然报错了&#xff1a; 解决 执行命令 npm config list找到 .npmrc 去掉对应的这一行即可&#xff0c;或者使用 nrm 工具执行 nrm del xxx 删掉私有源&#xff0c;然后在添加私有源也可。可以参考我这篇&#xff1a;使…

七个项目管理经典案例分析

案例一 赵晓东是海正公司的员工&#xff0c;最近感到很烦恼。公司签下了一份价值超过100万的合同&#xff0c;由于双方老板关系密切&#xff0c;都希望项目能够尽快启动&#xff0c;所以在签订合同时没有举行正式的签字仪式。合同签署后&#xff0c;公司老总立即指定赵晓东和其…

【C++】虚拟继承 组合

目录 一、虚拟继承 &#x1f31f;【非虚拟内存分布】 &#x1f31f;【虚拟继承内存分布】 &#x1f31f;【虚拟继承读取】 &#x1f31f;【练习检验】 &#x1f31f;【继承的总结和反思】 二、组合 &#x1f31f;【继承和组合】 &#x1f31f;【前言回顾】 上一篇文章我们…

计算机程序的编译和链接

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

day51 动态规划part8

139. 单词拆分 中等 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 难点&#xff1a;很难想到要用完…

【VALL-E-02】核心原理

本文系个人知乎专栏文章迁移 VALL-E 网络是GPT-SOVITS很重要的参考 知乎专栏地址&#xff1a; 语音生成专栏 相关文章链接&#xff1a; 【VALL-E-01】环境搭建 【VALL-E-02】核心原理 【参考】 【1】Neural Codec Language Models are Zero-Shot Text to Speech Synthesiz…

【MATLAB源码-第168期】基于matlab的布谷鸟优化算法(COA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 布谷鸟优化算法&#xff08;Cuckoo Optimization Algorithm, COA&#xff09;是一种启发式搜索算法&#xff0c;其设计灵感源自于布谷鸟的独特生活习性&#xff0c;尤其是它们的寄生繁殖行为。该算法通过模拟布谷鸟在自然界中…

总结虚函数表机制——c++多态底层原理

前言&#xff1a; 前几天学了多态。 然后过去几天一直在测试多态的底层与机制。今天将多态的机制以及它的本质分享给受多态性质困扰的友友们。 本节内容只涉及多态的原理&#xff0c; 也就是那张虚表的规则&#xff0c;有点偏向底层。 本节不谈语法&#xff01;不谈语法&#x…

Redis中RDB的dirty机制和AOF中的后台重写机制

RDB的dirty计数器和lastsave属性 服务器除了维护saveparams数组之外&#xff0c;还维持着一个dirty计数器,以及一个lastsave属性: 1.dirty计数器记录距离上一次成功执行SAVE命令或者BGSAVE命令之后&#xff0c;服务器对数据库状态(服务器中的所有数据库)进行了多少次修改(包括…

2.4 如何运行Python程序

如何运行Python程序&#xff1f; Python是一种解释型的脚本编程语言&#xff0c;这样的编程语言一般支持两种代码运行方式&#xff1a; 1) 交互式编程 在命令行窗口中直接输入代码&#xff0c;按下回车键就可以运行代码&#xff0c;并立即看到输出结果&#xff1b;执行完一行…

YOLOv5从入门到入土!(一)训练教程

一、下载 代码地址&#xff1a;https://github.com/ultralytics/yolov5 前往YOLOv5官方github&#xff0c;按照图中步骤下载代码及预训练权重。 二、训练 将下载的预训练权重路径填入train.py的weights参数中&#xff0c;并补全其余必要文件。 关于data.yaml看往期教程&#x…

fifo ip核 ————读写时钟同步

1.原理 timescale 1ns/1ns module tb_fifo();reg sys_clk ; reg sys_rst_n ; reg [7:0] pi_data ; reg rd_req ; reg wr_req ; reg [2:0] cnt;wire empty ; wire full ; wire [7:0] po_data ; wire [7:0] usedw ;initial begins…

下载网页上的在线视频 网络视频 视频插件下载

只需要在浏览器上安装一个插件&#xff0c;就可以下载大部分的视频文件&#xff0c;几秒到一两个小时的视频&#xff0c;基本都不是问题。详细解决如下&#xff1a; 0、因为工作需要&#xff0c;需要获取某网站上的宣传视频&#xff0c;我像往常一样&#xff0c;查看视频的url…