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

2.4 ROC曲线是什么?

2.4 ROC曲线是什么?

场景描述
二值分类器(Binary Classifier)是机器学习领域中最常见也是应用最广泛的分类器。

评价二值分类器的指标很多,比如precision、recall、F1score、P-R 曲线等。前面已对这些指标做了一定的介绍,但也发现这些指标或多或少只能反映模型在某一方面的性能。

相比而言,ROC曲线则有很多优点,经常作为评估二值分类器最重要的指标之一。下面我们来详细了解一下ROC 曲线的绘制方法和特点。
知识点
ROC曲线,曲线下的面积(Area Under Curve,AUC),P-R 曲线

什么是ROC曲线?

​ ROC 曲线是Receiver Operating Characteristic Curve的简称,中文名为“受试者工作特征曲线”。ROC曲线源于军事领域,而后在医学领域应用甚广,“受试者工作特征曲线”这一名称也正是来自于医学领域。

  • ROC 曲线的横坐标为假阳性率(False Positive Rate,FPR)
    F P R = F P N FPR = \frac{{FP}}{N} FPR=NFP

  • ROC 曲线的纵坐标为真阳性率(True Positive Rate,TPR)

T P R = T P P TPR = \frac{{TP}}{P} TPR=PTP

其中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。

Example:只看定义确实有点绕,为了更直观地说明这个问题,我们举一个医院诊断病人的例子。

假设有10位疑似癌症患者,其中有3位很不幸确实患了癌症(P=3),另外7位不是癌症患者(N=7)。

  • 医院对这10位疑似患者做了诊断,诊断出3位癌症患者,其中有2位确实是真正的患者(TP=2)。那么真阳性率(TPR=TP/P=2/3)。

  • 对于7位非癌症患者来说,有一位很不幸被误诊为癌症患者(FP=1),那么假阳性率FPR=FP/N=1/7。

对于“该医院”这个分类器来说,这组分类结果就对应ROC曲线上的一个点(1/7,2/3)。

ROC曲线的由来

​ ROC 曲线最早是运用在军事上的,后来逐渐运用到医学领域,并于20世纪80年代后期被引入机器学习领域。相传在第二次世界大战期间,雷达兵的任务之一就是死死地盯住雷达显示器,观察是否有敌机来袭。理论上讲,只要有敌机来袭,雷达屏幕上就会出现相应的信号。但是实际上,如果飞鸟出现在雷达扫描区域时,雷达屏幕上有时也会出现信号。这种情况令雷达兵烦恼不已,如果过于谨慎,凡是有信号就确定为敌机来袭,显然会增加误报风险;如果过于大胆,凡是信号都认为是飞鸟,又会增加漏报的风险。每个雷达兵都竭尽所能地研究飞鸟信号和飞机信号之间的区别,以便增加预报的准确性。但问题在于,每个雷达兵都有自己的判别标准,有的雷达兵比较谨慎,容易出现误报;有的雷达兵则比较胆大,容易出现漏报。
​ 为了研究每个雷达兵预报的准确性,雷达兵的管理者汇总了所有雷达兵的预报特点,特别是他们漏报和误报的概率,并将这些概率画到一个二维坐标系里。这个二维坐标的纵坐标为敏感性(真阳性率),即在所有敌机来袭的事件中,每个雷达兵准确预报的概率。而横坐标则为1-特异性(假阳性率),表示在所有非敌机来袭信号中,雷达兵预报错误的概率。由于每个雷达兵的预报标准不同,且得到的敏感性和特异性的组合也不同。将这些雷达兵的预报性能进行汇总后,雷达兵管理员发现他们刚好在一条曲线上,这条曲线就是后来被广泛应用在医疗和机器学习领域ROC 曲线

下集预告: 2.5 如何绘制ROC曲线?

参考文献:

《百面机器学习》 诸葛越主编

出版社:人民邮电出版社(北京)

ISBN:978-7-115-48736-0

2022年8月第1版(2022年1月北京第19次印刷)

http://www.lryc.cn/news/320777.html

相关文章:

  • mysql笔记:21. 演示脏读、不可重复读和幻读现象
  • iOS通过wifi连接硬件设备
  • SQL-Labs靶场“36-37”关通关教程
  • RabbitMQ介绍及搭建
  • VSCode + PicGo + Github 实现markdown图床管理
  • 小程序搜索排名优化二三事
  • 分布式 Session--一起学习吧之架构
  • 记录一下小程序自定义导航栏消息未读已读小红点,以及分组件的消息数量数据实时读取
  • qt+ffmpeg 实现音视频播放(二)之音频播放
  • Bash Shell中双引号中的感叹号问题详解
  • MFC中CString的用法及使用示例
  • 注册个人小程序
  • VTK----VTK的事件机制
  • 常用的vim和linux命令
  • 生产环境中间件服务集群搭建-zk-activeMQ-kafka-reids-nacos
  • Smart Light Random Memory Sprays Retinex 传统图像增强 SLRMSR
  • Oracle数据库实例概述
  • Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类
  • [RCTF2015]EasySQL ---不会编程的崽
  • Memcached-分布式内存对象缓存系统
  • bash: sqlplus: command not found 问题解决方法
  • 大模型-Prompt
  • Python实战:SQLAlchemy ORM使用教程
  • 能不能绕过c去学c++?
  • Python 小爬虫:爬取 bing 每日壁纸设为桌面壁纸
  • 利用textarea和white-space实现最简单的文章编辑器 支持缩进和换行
  • 总结mac下解决matplotlib中文显示问题的几种方法
  • 探索区块链世界:从加密货币到去中心化应用
  • GitLab/Github从头开始配置秘钥
  • uni.getlocation h5获取定位失败后,阻塞问题