当前位置: 首页 > news >正文

吴恩达深度学习复盘(15)精度和召回率

精度和召回率

简介

当机器学习应用中正负例比例严重失衡(远非 50:50)时,准确性这样的常用评估指标效果不佳。以训练二元分类器检测罕见疾病为例,假设测试集上错误率为 1%(正确率 99%),看似结果很好,但如果疾病罕见(如人群中只有 0.5% 的病人患病),一个简单的总是预测 “Y 等于 0”(即预测无病)的算法,其错误率可能更低(0.5%)。

在正负例不平衡的情况下,很难根据准确率判断算法优劣。例如,不同算法准确率分别为 99.5%、92%、96%,最低误差的算法可能像总是预测 “Y 等于 0” 的算法一样,没有诊断出任何患病病人,没有实际用处。相对比较,有 1% 误差但能诊断出一些患病病人的算法,可能比总是输出 “Y 等于 0” 的算法更有用。

精度和召回率

这种情况下仅依据错误率无法判断算法结果的好坏,所以引入新的概念精度和召回率

  • 混淆矩阵:在处理复杂数据集时,通常使用精度和召回率等评估指标。为评估算法在交叉验证集或测试集上的表现,构造混淆矩阵(2×2 矩阵)。矩阵上方轴表示实际类别(1 或 0),垂直方向表示预测类别(1 或 0)。例如,在 100 个交叉验证集例子中,可能有 15 个实际类是 1 且预测类是 1(真阳性),5 个实际类是 0 但预测类是 1(假阳性),10 个实际类是 1 但预测类是 0(假阴性),70 个实际类是 0 且预测类是 0(真阴性)。
  • 精度(Precision):在所有预测为正(即预测病人患病)的病人中,真正患有罕见疾病的比例。计算公式为:精度 = 真阳性数量 / 分类为正的数量 = 真阳性 /(真阳性 + 假阳性)。在上述例子中,精度 = 15 /(15 + 5) = 0.75,即 75%,意味着在所有预测为患病的病人中,75% 确实患病。
  • 召回率(Recall):在所有实际患有罕见疾病的病人中,被正确检测出患病的比例。计算公式为:召回率 = 真阳性数量 / 实际阳性数量 = 真阳性 /(真阳性 + 假阴性)。在上述例子中,召回率 = 15 /(15 + 10) = 0.6,即 60%,意味着在所有实际患病的病人中,60% 被正确检测出来了。

作用

计算精度和召回率可以帮助检测学习算法是否总是预测为零(若总是预测为零,真阳性数量为零,精度和召回率都为零或精度无定义)。同时,较高的精度和召回率可以帮助确认学习算法是有用的。精度体现了当算法说病人患病时,病人确实患病的可能性;召回率体现了在所有希望诊断出疾病的病人中,算法能正确检测出的比例。

如何校准精度和召回率

理想目标与现实权衡

理想情况下,希望学习算法具有高精度和高召回率。高精度意味着,如果诊断出患者患有某种疾病,那么患者很可能确实患病,即诊断准确;高召回率表示如果患者实际患有疾病,算法很可能正确识别出他们患病。然而,在实际应用中,精度和召回率之间往往存在权衡关系。

阈值调整

  • 基于逻辑回归预测的阈值设定:在使用逻辑回归进行预测时,模型会输出 0 到 1 之间的数字。通常将输出阈值设为 0.5,当输出大于等于 0.5 时预测为 1(即认为疾病存在),小于 0.5 时预测为 0。但可以根据实际需求调整阈值。
  • 提高阈值的情况:若希望在预测疾病存在时更加谨慎(因为预测患病后可能需要对患者进行侵入性且昂贵的治疗),可以提高阈值,如设为 0.7。提高阈值会使算法在预测为 1 时更有信心,从而提高精度,因为预测为正例时更可能是正确的。但同时,由于预测为 1 的情况减少,会导致召回率降低,即实际患病的患者中被正确诊断出的比例下降。
  • 降低阈值的情况:相反,如果希望避免遗漏太多罕见疾病案例,且治疗相对不那么侵入性、痛苦或昂贵,而不治疗疾病会给患者带来更严重后果时,可以降低阈值,如设为 0.3。此时,只要认为疾病存在的可能性达到 30% 或更高就预测为 1。这样做会使精度降低,因为更倾向于预测为 1,即使不太确定;但会提高召回率,因为能够正确识别出更多实际患病的患者。
  • 阈值与精度、召回率的一般关系:一般来说,通过选择不同的阈值,可以在精度和召回率之间做出不同的权衡。大多数学习算法中,当设置很高的阈值(如 0.99)时,精度高但召回率低;随着阈值降低,会得到一条权衡精度和召回率的曲线,当阈值很低(如 0.01)时,精度低但召回率相对较高。

选择阈值的方法

绘制不同阈值下的精度和召回率曲线,可以帮助选择一个合适的阈值,该阈值对应的点能够平衡假阳性和假阴性的影响,或者平衡高精度和高召回率的好处。需要注意的是,选择阈值通常不能通过交叉验证来完成,而是需要根据具体应用手动选择。

综合评估指标 ——F1 分数

  • 提出 F1 分数的原因:由于使用精度和召回率这两个不同指标评估算法时,可能会遇到难以选择算法的情况(例如不同算法的精度和召回率表现各有优劣,没有一个算法在两个指标上都明显更优),所以需要一种方法将精度和召回率合并为一个指标,以便更直观地比较算法。
  • 简单平均的不足:直接取精度和召回率的平均值不是一个好方法,因为可能会出现某个算法的精度非常低(如一个算法总是预测为 1,诊断所有患者都患有疾病,虽然召回率可能高,但精度很低),但平均后得到的数值可能看起来还不错,导致选择了实际上不太有用的算法。
  • F1 分数的计算和特点:最常见的结合精度和召回率的方法是计算 F1 分数。F1 分数的计算公式为F1 = \frac{2}{\frac{1}{P} + \frac{1}{R}}(其中P为精度,R为召回率),也可以化简为其他形式。F1 分数更强调精度和召回率中较低的值,因为如果一个算法的精度或召回率很低,那么它可能不太有用。通过计算 F1 分数,可以对不同算法进行比较,选择 F1 分数较高的算法。在数学上,F1 分数是精度和召回率的调和平均值,调和平均值更注重较小的值。

相关文章:

  • 八大排序算法
  • JavaScript 定时器
  • Go语言--语法基础4--基本数据类型--整数类型
  • 深度学习(一)
  • 网页制作中的MVC和MVT
  • 【JDBC-54.1】MySQL JDBC连接字符串常用参数详解
  • 二.springBoot项目集成ElasticSearch及使用
  • PyRoboPlan 库,给 panda 机械臂微分 IK 上大分,关节限位、碰撞全不怕
  • 从 Vue 到 React:深入理解 useState 的异步更新与函数式写法
  • 理解分布式数据库基本概念:逻辑透明、分片透明、复制透明、位置透明
  • 2、JSX:魔法世界的通行证——用魔法符号编织动态界面
  • C++基础精讲-06
  • 青少年编程与数学 02-016 Python数据结构与算法 17课题、数论算法
  • goweb连接数据库操作
  • 02_位掩码逻辑及Java示例
  • 阿里云备案有必要选择备案管家服务吗?自己ICP备案可以吗?
  • Java第四节:idea在debug模式夏改变变量的值
  • 详细解释:k ≈ 3 对应 99.7% 置信度
  • 大模型面经 | 手撕多头注意力机制(Multi-Head Attention)
  • 笔记本电脑突然无法开机电源灯亮但是屏幕无法点亮
  • 市体育局网站 两学一做/推广优化
  • 苏州集团网站设计定制/培训机构排名全国十大教育机构排名
  • 佛山电商网站制作团队/十大网络营销成功案例
  • 网站建设whjzyh/百度地图客服人工电话
  • vps怎么搭建网站/独立站谷歌seo
  • 苏州朗冠网站建设公司/百度爱采购优化排名软件