精度和查全率源自信息检索,但也用于机器学习设置中。但是,在某些情况下,使用精度和查全率可能会出现问题。在这篇文章中,我将讨论召回率和精确度的缺点,并说明为什么敏感性和特异性通常更有用。

定义

对于类别0和1的二进制分类问题,所得混淆矩阵具有以下结构:

预测/参考 0
TP FP
0 FN TN

其中TP表示真阳性的数量(模型正确预测阳性类别),FP表示假阳性的数量(模型错误预测阳性类别),FN表示假阴性的数量(模型错误预测阴性类别),TN表示真实否定数(模型正确预测否定类别)。敏感性(召回率),精确度(阳性预测值,PPV)和特异性(真阴性率,TNV)的定义如下:

灵敏度确定正确预测来自阳性分类的观察结果的速率,而精度则表明正确预测预测的正确率。另一方面,特异性是基于假阳性的数量,它表示正确预测来自阴性类别的观察结果的速率。

敏感性和特异性的优势

基于敏感性和特异性的模型评估适用于大多数数据集,因为这些措施会考虑混淆矩阵中的所有条目。敏感性处理真假阳性和假阴性,而特异性处理假阳性和假阴性。这意味着当同时考虑真阳性和阴性时,敏感性和特异性的结合是一项整体措施。

敏感性和特异性可以用一个单一的量来概括,即平衡的准确度,其定义为两种方法的平均值:

平衡精度在[0,1] [0,1]范围内,其中0和1的值分别表示最坏的分类器和最好的分类器。

召回率和精确度的缺点

使用召回率和精度评估模型不会使用混淆矩阵的所有单元。回忆处理的是真实的肯定和错误的否定,而精度处理的是真实的肯定和错误的肯定。因此,使用这对绩效衡量指标,就不会考虑真正的负面影响。因此,精度和召回率仅应在否定类别的正确识别不起作用的情况下使用。 可以将精度定义为

精度和召回率通常归纳为一个单一的数量,即F1得分 :

F1在[0,1] [0,1]范围内,对于分类器,将最大化精度和召回率,将为1。由于F1分数基于 平均值,因此对于精度和查全率的不同值非常敏感。假设分类器的灵敏度为90%,精度为30%。那么常规平均值将是,但是 平均值(F1得分)将是

例子

在这里,我提供两个示例。第一个示例研究了将精度用作性能指标时可能出现的问题。

使用精度时会出什么问题?

当很少有观察结果属于肯定类别时,精度是一个特别糟糕的衡量标准。让我们假设一个临床数据集,其中90%90%的人患病(阳性),只有10%10%的人健康(阴性)。让我们假设我们已经开发了两种测试来对患者是疾病还是健康进行分类。两种测试的准确度均为80%,但会产生不同类型的错误。

# to use waffle, you need
#   o FontAwesomeiron(waffle(c("Diseased" = 90, "Healthy" = 10), rows = 5, use_glyph = "child", glyph_size = 5, title = "Reference", colors = ref.colors),waffle(c("Diseased (TP)" = 80, "Healthy (FN)" = 10, "Diseased (FP)" = 10), rows = 5, use_glyph = "child", glyph_size = 5, title = "Clinical Test 1", colors = c(true.colors[1], false.colors[2], false.colors[1]))
)

第一次测试的混淆矩阵

预测/参考 有病 健康
有病 TP = 80 FP = 10
健康 FN = 10 TN = 0

二次测试的混淆矩阵

预测/参考 有病 健康
有病 TP = 70 FP = 0
健康 FN = 20 TN = 10

两种测试的比较

让我们比较两个测试的性能:

测量 测试1 测试2
灵敏度(召回) 88.9% 77.7%
特异性 0% 100%
精确 88.9% 100%

考虑到敏感性和特异性,我们不会选择第一个测试,因为它的平衡准确度仅为,而第二个测试的平衡准确度仅为

但是,使用精度和召回率,第一个测试的F1得分为,而第二个测试的得分更低,为。因此,尽管特异性为0%,但我们发现第一个测试优于第二个测试。因此,当使用该测试时,  所有健康患者将被分类为患病。这将是一个大问题,因为所有这些患者都会由于误诊而遭受严重的心理压力和昂贵的治疗。如果我们改用特异性,我们将选择第二种模型,该模型不会以竞争敏感性产生任何假阳性。

让我们考虑一个信息检索示例,以说明精度何时是有用的标准。假设我们要比较两种具有80%的准确性的文档检索算法。


iron(waffle(c("Relevant" = 30, "Irrelevant" = 70), rows = 5, use_glyph = "file", glyph_size = 5, title = "Reference", colors = ref.colors),waffle(c("Relevant (TP)" = 25, "Irrelevant (FN)" = 5, "Relevant (FP)" = 15, "Irrelevant (TN)" = 55), rows = 5, use_glyph = "file", glyph_size = 5, title = "Retrieval Algorithm 1", colors = c(true.colors[1], false.colors[2], false.colors[1], true.colors[2]))
)

第一种算法的混淆矩阵

预测/参考 相关  不相关 
相关  TP = 25 FP = 15
不相关  FN = 5 TN = 55

第二种算法的混淆矩阵

预测/参考 相关  不相关 
相关  TP = 20 FP = 10
不相关  FN = 10 TN = 60

两种算法的比较

让我们根据混淆矩阵计算两种算法的性能:

测量 算法1 算法2
灵敏度(召回) 83.3% 66.7%
特异性 78.6% 85.7%
精确 62.5% 66.7%
平衡精度 80.95% 76.2%
F1分数 71.4% 66.7%

在此示例中,平衡的精度和F1分数都将导致首选第一种算法而不是第二种算法。请注意,报告的平衡精度绝对高于F1分数。这是因为由于来自否定类的大量丢弃观察,这两种算法的特异性都很高。由于F1分数不考虑真阴性的比率,因此精确度和召回度比敏感性和特异性更适合此任务。

摘要

在这篇文章中,我们看到应该仔细选择绩效指标。尽管敏感性和特异性通常表现良好,但精确度和召回率仅应在真正的阴性率不起作用的情况下使用。

R语言中敏感性和特异性、召回率和精确度作为选型标准的华夫图案例相关推荐

  1. 如何在R语言中建立六边形矩阵热图heatmap可视化

    原文链接:http://tecdat.cn/?p=18879 这是一个六边形热图可视化程序,主要用到的知识RColorBrewer,fields,也就是R中的可视化绘图库(点击文末"阅读原文 ...

  2. R语言中使用pkgbuild::find_rtools查看是否有Rtools、使用Sys.which函数查看make是否存在、如果没有则安装、使用writeLines函数绑定R和Rtools

    R语言中使用pkgbuild::find_rtools(debug = TRUE)查看是否有Rtools.使用Sys.which函数查看make是否存在.如果没有则安装Rtools.使用writeLi ...

  3. R语言中如何计算C-Statistics?几种计算方法详解

    R语言中如何计算C-Statistics?几种计算方法详解 目录 R语言中如何计算C-Statistics? #包导入 #数据加载编码

  4. r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf

    ​注: 本文是R语言sf包的核心开发者和维护者--来自德国明斯特大学的地理信息学教授:Edzer Pebesma 的一篇关于sf包的简介,发表于2018年7月的R语言期刊,主要讲述了sf的定位.功能. ...

  5. R语言中的特殊值 NA NULL NaN Inf

    这几个都是R语言中的特殊值,都是R的保留字, NA:Not available  表示缺失值   用 is.na() 来判断是否为缺失值 NULL:表示空值,即没有内容  用 is.null() 来判 ...

  6. R开发(part8)--应用R语言中的函数环境空间

    学习笔记,仅供参考,有错必纠 文章目录 R开发 应用R语言中的函数环境空间 R语言的函数环境空间 封闭环境 绑定环境 运行环境 调用环境 函数环境空间图示 R开发 应用R语言中的函数环境空间 R语言的 ...

  7. R开发(part2)--R语言中的数学计算

    学习笔记,仅供参考,有错必纠 参考自:<R的极客理想>-- 张丹 文章目录 R开发 R语言中的数学计算 对数 加权平均.连乘.差分.秩.任意数.全体数 阶乘.组合.排列 累加.累乘.最小累 ...

  8. r语言中正定矩阵由于误差不正定_R语言之数据处理(一)

    在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上.数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法.在R语言中,我通 ...

  9. r语言 将表格导出为csv_如何将R语言中表格数据输出为Excel文件.pdf

    如何将R 语言中的表格数据输出为Excel 文件 熊荣川 六盘水师范学院生物信息学实验室 xiongrongchuan@126.com /u/Bearjazz 平台的开放性使得R 语言具有了丰富的运算 ...

最新文章

  1. 防抖函数Debounce实现
  2. Android从放弃到精通 第二天 我还好
  3. linux设置挂载服务端防火墙_Linux Tomcat使用之前预配置(端口开放关闭 防火墙设置 硬盘挂载 安装文件)...
  4. 源码面前没有秘密,推荐 9 个带你阅读源码的开源项目
  5. 设计模式在项目中的应用案例_设计模式在项目中的应用(初学者版)
  6. ajax get请求成功,成功()函数的AJAX GET请求
  7. 一个form 如何做两次提交_如何做一个自信魅力的女人
  8. linux 查看libevent 安装目录,Linux系统centos6.7上安装libevent
  9. 【领域综述】NLP领域,你推荐哪些综述性的文章?
  10. 新手在前期应该怎样发“外链”(4)之终级外链法
  11. 性能测试--jmeter如何发送post请求【4】
  12. MVC数据验证Model Validation
  13. 远程工作两个月的体会(转)
  14. Node-red初级入门
  15. 谷歌浏览器自定义标签页 newtab
  16. QPSK调制解调过程,包括串并转换,电平转换,载波调制,相干解调,抽样判决等
  17. Android的数据存储:SharedPrefrence存储,手机内部文件存储,手机外部文件存储
  18. o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
  19. 微信小程序详情页跳转
  20. 郑明秋什么版本的MySQL_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠著【摘要 书评 在线阅读】-苏宁易购图书...

热门文章

  1. 交换机和路由器技术-13-三层交换
  2. 通过sql注入窃取用户数据库信息
  3. qt保存文件的默认路径_Qt Quick QSettings 配置信息保存位置
  4. 最小二乘法求模型最优解
  5. win10查看计算机系统版本,Win10版本怎么看?Win10系统版本查看方法
  6. 如何衡量客户满意度?选好方法是关键!
  7. 亚马逊云科技北京区域第二个EC2可用区帮助客户构建高可用架构
  8. 编译原理:LL(1)语法分析器的实现(内含代码详细注释)
  9. 防火墙入侵与检测 day03 详解NAT及配置
  10. 最优化及其运用 学习笔记(二)