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

第二章:14.1 倾斜数据集的误差指标

目录

1. 问题背景

2. 准确率的局限性

3. 混淆矩阵

4. 精确率和召回率

5. 精确率和召回率的重要性

混淆矩阵

精确率(Precision)

召回率(Recall)

解释

6. 结论


在训练一个二进制分类器来检测一种罕见疾病时,我们通常会用到一些误差度量标准来评估算法的性能。这是因为仅仅使用分类误差率(如准确率)可能无法准确反映算法的实际效果,尤其是在处理不平衡数据集时。


1. 问题背景

假设我们正在开发一个二进制分类器,用于检测一种罕见疾病。在这种情况下,y=1 表示患者患有该疾病,y=0 表示患者未患病。由于这种疾病非常罕见,假设在人群中只有 0.5% 的患者实际患病。这意味着数据集是高度不平衡的,大多数样本的标签为 y=0

2. 准确率的局限性

在这种不平衡数据集中,仅使用准确率来评估算法可能具有误导性。例如,如果一个算法总是预测 y=0(即从未诊断出任何患者患病),它的准确率可能会非常高(99.5%),因为大多数样本本身就是未患病的。然而,这样的算法显然是无用的,因为它无法检测出任何真正的患者。

3. 混淆矩阵

为了更全面地评估算法性能,我们通常使用混淆矩阵(Confusion Matrix)。混淆矩阵是一个 2×2 的表格,用于记录算法预测结果与实际标签之间的关系。具体来说:

  • 真正例(True Positive, TP):算法预测为患病(y=1),且实际也患病。

  • 假正例(False Positive, FP):算法预测为患病(y=1),但实际未患病。

  • 真负例(True Negative, TN):算法预测为未患病(y=0),且实际也未患病。

  • 假负例(False Negative, FN):算法预测为未患病(y=0),但实际患病。

4. 精确率和召回率

为了更好地评估算法的性能,我们通常会计算精确率(Precision)和召回率(Recall):

  • 精确率(Precision):衡量算法预测为患病的样本中,真正患病的比例。计算公式为:

    例如,如果算法预测了 20 个样本患病,其中 15 个实际患病,那么精确率为:

  • 召回率(Recall):衡量所有实际患病的样本中,被算法正确预测为患病的比例。计算公式为:

    例如,如果实际有 25 个患者患病,算法正确预测了 15 个,那么召回率为:

5. 精确率和召回率的重要性

  • 精确率:帮助我们评估算法的可靠性。如果精确率很高,说明当算法预测患者患病时,有很大概率是正确的。

  • 召回率:帮助我们评估算法的覆盖能力。如果召回率很高,说明算法能够检测出大部分实际患病的患者。

如果一个算法总是预测 y=0,那么它的精确率和召回率都会很低(甚至为零),因为没有真正例(TP)。因此,精确率和召回率可以帮助我们识别那些看似准确率很高但实际上无用的算法。


图片展示了一个关于精确率(Precision)和召回率(Recall)的混淆矩阵示例,用于评估一个二元分类器在检测罕见疾病时的性能。以下是图片中的内容整理:

混淆矩阵

实际类别\预测类别1(患病)0(未患病)
1(患病)真正例 (True Positive, TP) 15假负例 (False Negative, FN) 10
0(未患病)假正例 (False Positive, FP) 5真负例 (True Negative, TN) 70

精确率(Precision)

精确率是指在所有被预测为正类(患病)的样本中,实际为正类的比例。

召回率(Recall)

召回率是指在所有实际为正类(患病)的样本中,被正确预测为正类的比例。

解释

  • 精确率:反映了模型预测为患病的准确性。在这个例子中,精确率为75%,意味着在所有被预测为患病的病人中,有75%的病人确实患有这种疾病。

  • 召回率:反映了模型识别出所有实际患病病人的能力。在这个例子中,召回率为60%,意味着在所有实际患病的病人中,有60%的病人被正确地诊断为患病。

这个例子说明了在处理罕见疾病时,除了准确率之外,精确率和召回率也是非常重要的评估指标。


6. 结论

在处理不平衡数据集时,仅靠准确率是不够的。精确率和召回率能够更全面地评估算法的性能,帮助我们确保算法不仅能够正确预测患者是否患病,还能在实际应用中真正发挥作用。一个好的算法应该在精确率和召回率上都表现出色,这样才能在实际诊断中提供可靠的帮助。

相关文章:

  • 性格测评小程序04题库管理
  • 动态规划算法
  • 探索ELK 的魅力
  • 原型模式详解(Java)
  • Nginx location 和 proxy_pass 配置详解
  • [Python 数据科学] Python 的良好编程规范与 logging 的使用
  • 如何下载AndroidStudio的依赖的 jar,arr文件到本地
  • 网络通信的基石:深入理解 TCP/IP 协议栈与 TCP/UDP 协议
  • Linux命令 ----操作命令
  • 2.14寒假
  • Baklib知识中台构建企业智能运营核心架构
  • 基于 openEuler 构建 LVS-DR 群集
  • 《玩转AI大模型:从入门到创新实践》(9)第七章 AI职业地图:从使用者到创造者
  • k8s集群搭建参考(by lqw)
  • DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件
  • 给你一个三维numpy,形状为n*120*140,这里n<30,在其第一位维度n上扩展,将其扩展到30,扩展的部分全部设置为零
  • LLM:BERT or BART 之BART
  • 机器学习之AAE(Adversarial Autoencoder,对抗自编码器)生成数据样本
  • Jenkins项目CICD流程
  • Git GUI设置中文的方法及使用
  • 自助建站平台便宜/山东建站
  • 有哪些线上做酒店的网站/专业营销策划团队
  • 长春网站建设首选网诚传媒/市场营销网站
  • 中国建筑装饰网公众号/正规seo需要多少钱
  • 搜索引擎作弊网站有哪些/推广引流吸引人的标题
  • 做网站教程百度云/手机游戏性能优化软件