机器学习:精确率与召回率的权衡

news2024/12/26 19:28:17

高精度意味着如果诊断得了那种罕见病的病人,可能病人确实有,这是一个准确的诊断,高召回率意味着如果有一个还有这种罕见疾病的病人,也许算法会正确的识别他们确实患有这种疾病,事实中,在精确与召回之间往往有一个权衡。

精确率是真阳性的数量除以预测的总数,召回率是真正积极的数量除以实际阳性总数,如果用逻辑回归来做预测,然后Logistic回归模型将输出0-1之间的数字,我们通常将逻辑回归的输出阈值设置为0.5,如果高于0.5,预测为1,如果低于0.5,预测为0,假设我们要预测y=1,只有在非常有信心的情况下,这种罕见的疾病才会出现,所以如果每当我们预测病人有疾病,我们可能得送他们去接受一种可能是侵入性的昂贵治疗,所以如果疾病的后果不是那么糟糕,即使不被咄咄逼人的对待,那么我们可能想预测y只等于1,如果我们很有信心,那样的话,可以选择设置更好的阈值,只有当f(x)≥0.7时,才预测y=1,通过提高这个阈值,只有当你非常自信时,你才能预测y=1,这意味着精确度会提高,因为每当你预测一个,提高阈值将带来更高的精度,这也会导致召回率降低,因为现在很少预测一个,在这种疾病的患者总数中,我们将正确诊断更少的人,所以通过将阈值提高到0.7,最终的得到了更好的精度,更低的召回率,事实上,如果你想预测y=1,只有当你非常自信的时候,甚至可以把阈值提高到0.9,这导致了更高的精度,所以当你预测病人有疾病,你可能是对的,这将给你一个非常高的精度,另一方面,召回将进一步恶化,假设我们想避免错过太多这种罕见疾病的病例,所以如果我们想要的是在有疑问的时候预测y=1,这种情况可能是如果治疗不是太侵入性,痛苦或昂贵,但是让疾病得不到治疗对病人的后果要糟糕得多,所以在这种情况下,为了安全起见,可能会想到,预测他们有它,并考虑他们的治疗,如果对于应用程序来说,这是做出决定的更好方法,然后会接受这个阈值,而不是降低它,把它调到0.3,那样的话,只要你认为有30%的可能性,你就会预测到一个或者更好的是疾病存在,只有当你非常确定疾病不存在时,你才能预测零,可以想象,对精确度和召回率的影响将与你在这里看到的相反,降低这个阈值将导致更低的精确率,我们更愿意预测一个高阈值的数据,即使我们不确定,但是结果更高,因为所有有这种病的病人我们可能会正确的识别更多的他们,更普遍的说,只有当f高于某个阈值时,才能灵活的预测,通过选择这个阈值,我们可以在精确和召回之间做出不同的权衡,事实证明,对于大多数学习算法来说,在精确和召回之间有一个权衡,精度和召回都在0-1之间,如果设定一个很高的阈值,假设阈值为0.99,然后最终得到了非常高的精度和较低的召回,当你降低这个阈值的值时,然后你得到了一条曲线,它权衡了精确率和召回率,直到最终,如果你有一个很低的阈值,阈值等于0.01,然后你最终得到非常低的精度,但相对较高的召回率,有时通过绘制这条曲线,然后可以尝试选择一个阈值对应于在这条曲线上选择一个点,平衡了假阳性和假阴性的成本,或者平衡了高精度和高召回的好处,所以绘制不同阈值的精度和召回率允许你选择一个点,阈值并不是真正可以通过交叉验证来实现的,因为你可以为许多应用程序指定最佳点,手动选择阈值进行交易,精确率和召回率是最终要做的。

 事实证明,如果你想自动权衡精度和召回,而不是自己动手,还有一个指标叫f(score),它有时用于自动组合精确率和召回率,来帮助选择最佳值,或者两者之间最好的权衡,精确召回的一个挑战是你现在使用两个不同的度量来评估你的算法,所以如果你训练了三种不同的算法,精确召回数字是这样的,如何选择使用哪种算法并不那么明显,有一种算法在精度和召回方面都很好,那你可能想用那个,但是在这个例子中,算法二精度最高,但算法三的召回率最高,算法一在两者之间进行权衡,所以显然没有一种算法是最好的选择,所以为了帮助你决定选择哪种算法,找到一种将精确和召回结合起来的方法可能是有用的,变成一个单一的分数,所以你可以看看哪个算法得分最高,可以把精确度和召回率结合起来的一个方法是取平均值,但事实证明,计算平均值和选择算法,精确率和召回率之间的最高平均值并不那么有效,因为这个算法的精度非常低,事实上,这可能与一种算法相呼应,这种算法实际上打印“y=1"诊断,所有病人都得了这种病,这就是为什么召回率是完美的,但是精确率真的很低,所以算法三实际上不是一个特别有用的算法,即使精确率和召回率之间的平均值相当高,所以不要用精确率和召回率之间的平均值,相反,结合精确率和召回率最常见的方法是计算一些东西,称为Fscore,Fscore是一种结合p和r精度和召回的方法,但这更强调这些值中较低的一个,因为如果一个算法有很低的精确率或者很低的召回率,可能没那么有用,所以Fscore是一种计算平均值的方法,其公式如下,不是平均p和r精确召回,而是平均1/p和1/r,如果p和r很小,那么Fscore也将会很小,计算可看出,第一个算法比第二、三个算法更好,在数学方面,这个方程也称为p和r的调和平均值,它是一种取平均值的方法,更强调较小的价值。

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

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

相关文章

海盗王用golang重写的AccountServer功能

自从用golang重写了海盗王的网关gateserver以来,一直想把accountserver也重写了,但是一直没有进行。 趁上次刚写好那个golang版的更新器,还有些熟悉,于是把原来AccountServer的C代码重写读了个大概。它原版的写得太过于复杂&#…

【动态规划】小S的货船租赁冒险

文章目录 一、问题描述输入格式输出格式 问题背景二、动态规划思想三、代码实现细节初始化二维数组遍历每种货船遍历预算并更新状态提前剪枝优化 四、代码实现算法复杂度分析优化思路 一、问题描述 李华在码头租货船,有 Q 种货船可以租赁。第 i 种货船的数量为 m[i…

基于 MVC 架构的 SpringBoot 高校行政事务管理系统:设计优化与实现验证

摘 要 身处网络时代,随着网络系统体系发展的不断成熟和完善,人们的生活也随之发生了很大的变化,人们在追求较高物质生活的同时,也在想着如何使自身的精神内涵得到提升,而读书就是人们获得精神享受非常重要的途径。为了…

【k8s 深入学习之 event 聚合】event count累记聚合(采用 Patch),Message 聚合形成聚合 event(采用Create)

参考 15.深入k8s:Event事件处理及其源码分析 - luozhiyun - 博客园event 模块总览 EventRecorder:是事件生成者,k8s组件通过调用它的方法来生成事件;EventBroadcaster:事件广播器,负责消费EventRecorder产生的事件,然后分发给broadcasterWatcher;broadcasterWatcher:用…

HTML5动漫主题网站——天空之城 10页 html+css+设计报告成品项目模版

📂文章目录 一、📔网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站演示 五、⚙️网站代码 🧱HTML结构代码 💒CSS样式代码 六、🔧完整源码下载 七、📣更多 一、&#…

day2 美化后的登录

import sysfrom PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtWidgets import QApplication, QWidget, QLabel from PyQt6 import uicclass MyWidget(QWidget):def __init__(self):super().__init__()self.setWindowTitle("猫咪乐园")uiuic.loadUi("./untit…

uniapp 自定义导航栏增加首页按钮,仿微信小程序操作胶囊

实现效果如图 抽成组件navbar.vue&#xff0c;放入分包 <template><view class"header-nav-box":style"{height:Props.imgShow?:statusBarHeightpx,background:Props.imgShow?:Props.bgColor||#ffffff;}"><!-- 是否使用图片背景 false…

Android KEY的哪些事儿

目录 一、APK应用签名 1、什么是APK应用签名&#xff1f; 1.1 目的和作用&#xff1f; 1.2 长什么样子&#xff1f; 2、APK应用签名使用流程 步骤一&#xff1a;如何生成APK应用签名文件&#xff1f; 步骤二&#xff1a;如何集成APK应用签名文件&#xff1f; 步骤三&am…

Docker中安装GeoServer

一、准备工作 #创建数据持久化目录 mkdir -p /usr/local/application/geoserver/data_dir#授权 chmod 777 -R /usr/local/application/ 这一步是为了在容器外部管理GeoServer的数据&#xff0c;使得数据能够持久化存储。 二、拉取GeoServer镜像 从Docker Hub拉取GeoServer的…

Create Stunning Word Clouds with Ease!

Looking to craft breathtaking word clouds? WordCloudStudio is your go-to solution! Whether you’re a marketer, educator, designer, or simply someone who loves visualizing data, this app has everything you need. Download now: https://apps.apple.com/app/wor…

【JavaEE初阶】落霞与孤鹜齐飞,秋水共长天一色 - (重点)线程

本篇博客给大家带来的是线程的知识点, 由于时间有限, 分三天来写, 本篇为线程第二篇. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅…

java_判断语句——acwing

题目一&#xff1a;倍数 665. 倍数 - AcWing题库 代码 import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt(), b sc.nextInt();if(a%b0 || b%a0) System.out.printf("Sao Mu…

深度解析棋牌游戏开发:从搭建到运营的全流程实战分享

作为从事游戏开发十五年的技术老兵&#xff0c;经历了国内游戏市场从端游到手游的全流程变迁。市面上大多数棋牌产品&#xff0c;无论是传统房卡模式还是创新竞技玩法&#xff0c;自己曾经都参与设计和研发过。今天&#xff0c;我将结合多年的实战经验&#xff0c;分享棋牌游戏…

mfc110u.dll是什么意思,mfc110u.dll丢失解决方法大全详解

mfc110u.dll是Microsoft Foundation Classes (MFC)库的一个特定版本&#xff08;版本11.0&#xff09;的Unicode动态链接库文件。MFC是Microsoft为C开发者设计的一个应用程序框架&#xff0c;主要用于简化Windows应用程序的开发工作。这个框架封装了很多Windows API函数&#x…

【C++跬步积累】—— 继承

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;C跬步积累 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日一题 &#x1f7e1; Linux跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0…

爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略

简介&#xff1a;本文聚焦 Requests 库的强大功能与应用实战。首先介绍其安装步骤及版本选择要点&#xff0c;随后深入讲解 GET 请求&#xff0c;以百度页面为例&#xff0c;展示如何发起基本 GET 请求、巧妙添加 headers 与参数以精准搜索&#xff0c;以及正确设置 encoding 避…

计算机网络:IP协议详细讲解

目录 前言 一、IP网段划分 二、IP报头 三、解决IP地址不足-->NAT技术 前言 在之前&#xff0c;我们学习了传输层中的TCP和UDP&#xff0c;重点是TCP协议&#xff0c;他帮我们解决具体到主机的哪个应用&#xff08;端口&#xff09;、传输的可靠&#xff08;序列号、校验和…

Proteus8.17下载安装教程

Proteus是一款嵌入式系统仿真开发软件&#xff0c;实现了从原理图设计、单片机编程、系统仿真到PCB设计&#xff0c;真正实现了从概念到产品的完整设计&#xff0c;其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等&#xff0c;能够帮助用…

C++设计模式(装饰模式)

一、介绍 1.动机 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”&#xff0c;由于继承为类型引入的静态特质&#xff0c;使得这种扩展方式缺乏灵活性&#xff1b;并且随着子类的增多&#xff08;扩展功能的增多&#xff09;&#xff0c;各种子类的组合&#xff0…

【VMware】Ubuntu 虚拟机硬盘扩容教程(Ubuntu 22.04)

引言 想装个 Anaconda&#xff0c;发现 Ubuntu 硬盘空间不足。 步骤 虚拟机关机 编辑虚拟机设置 扩展硬盘容量 虚拟机开机 安装 gparted sudo apt install gparted启动 gparted sudo gparted右键sda3&#xff0c;调整分区大小 新大小拉满 应用全部操作 调整完成