首页 > 其他分享 >2.5 如何绘制ROC曲线?

2.5 如何绘制ROC曲线?

时间:2024-03-23 12:58:37浏览次数:29  
标签:正例 ROC 样本 截断 曲线 绘制 2.5

2.5 如何绘制ROC曲线?

前情提要:2.4 ROC曲线是什么?

​ 事实上,ROC 曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的,通过下面的例子进一步来解释“截断点”的概念。
​ 在二值分类问题中,模型的输出一般都是预测样本为正例的概率。假设测试集中有20个样本,表2.1是模型的输出结果。样本按照预测概率从高到低排序。在输出最终的正例、负例之前,我们需要指定一个阈值,预测概率大于该阈值的样本会被判为正例,小于该阈值的样本则会被判为负例。比如,指定阈值为0.9,那么只有第一个样本会被预测为正例,其他全部都是负例。上面所说的“截断点”指的就是区分正负预测结果的阈值。
​ 通过动态地调整截断点,从最高的得分开始(实际上是从正无穷开始,对应着ROC 曲线的零点),逐渐调整到最低得分,每一个截断点都会对应一个FPR和TPR,在ROC图上绘制出每个截断点对应的位置,再连接所有点就得到最终的ROC曲线

关于FPR和TPR是什么,以及怎么计算,详见2.4 ROC曲线是什么?

就本例来说,当截断点选择为正无穷时,模型把全部样本预测为负例,那么FP和TP必然都为0,FPR和TPR也都为0,因此曲线的第一个点的坐标就是(0,0)。

当把截断点调整为0.9时,模型预测1号样本为正样本,并且该样本确实是正样本,因此,TP=1,20个样本中,所有正例数量为P=10,故=TP/P=1/10;

这里没有预测错的正样本,即FP=0,负样本总数N=10,故FPR=FP/N=0/10=0,对应ROC曲线上的点(0,0.1)。依次调整截断点,直到画出全部的关键点,再连接关键点即得到最终的ROC 曲线,如图2.2所示。

还有一种更直观地绘制ROC 曲线的方法

  • 首先,根据样本标签统计出正负样本的数量,假设正样本数量为P,负样本数量为N;
  • 接下来,把横轴的刻度间隔设置为1/N,纵轴的刻度间隔设置为1/P;
  • 再根据模型输出的预测概率对样本进行排序(从高到低);依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线,直到遍历完所有样本,曲线最终停在(1,1)这个点,整个ROC 曲线绘制完成。

下集预告:2.6 如何计算AUC?

参考文献:

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

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

ISBN:978-7-115-48736-0

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

标签:正例,ROC,样本,截断,曲线,绘制,2.5
From: https://blog.csdn.net/seasonsyy/article/details/136820772

相关文章

  • R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
    全文链接:https://tecdat.cn/?p=35426原文出处:拓端数据部落公众号本文利用R语言,通过逐步逻辑回归模型帮助客户分析两个实际案例:麻醉剂用量对手术病人移动的影响以及汽车购买行为预测。通过构建模型并解释结果,我们探究了各自变量对因变量的影响程度。同时,借助ROC曲线可视化分析,评......
  • CF1927F Microcycle
    环的权值为边权最小值,可以想到从大到小遍历权值,如果一条边加入后出现了环说明这条边的边权就是整个环的权值。类似Kruskal,我们把边权从大到小排序,然后用并查集维护连通情况,算出最小的权值。然后跑dfs找环输出方案。时间复杂度\(\mathcal{O}(m\log{m}+n)\)。#include<bits......
  • Amazon Bedrock 实践 | 动手玩转 Claude 3
    生成式AI和大模型在2024年已经进入落地实践阶段。因此,围绕开发者在生成式应用程序开发中的主要痛点和需求,我们组织了这个“AmazonBedrock实践”的系列,希望可以帮助开发者高效地上手生成式AI和大模型的应用开发,本篇为第一篇。亚马逊云科技开发者社区为开发者们提供全球......
  • C++ Qt开发:QProcess进程管理模块
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QProcess组件实现针对进程的控制管理等。当你在使用Qt进行跨平台应用程序开发时,经常需要......
  • tkinter画布canvas绘制图片不显示
    tkinter画布canvas绘制图片不显示首次编辑:24/3/22/13:59最后编辑:24/3/22/14:08原因与解决办法在canvas中创建图片一般如下:fromtkinterimport*root=Tk()c=Canvas(root)#在canvas中创建图片image=PhotoImage(file="img/熊猫人.png")canvas.create_image(100,10......
  • Antd+ProComponent管理系统中的部分业务封装
    本文记录在我司后台管理系统中,自己对部分业务的一些封装。业务封装涉及的技术栈为Antd+ProComponent+zustand权限由于此项目的权限精度并没那么高,后台采用ACL权限控制而不是RBAC,仅根据角色来判断权限,因此可能无法适配所有业务场景,但是可以参考思路。此处封装了两个权限......
  • Arcade绘制一个笑脸
    """DrawinganexamplehappyfaceIfPythonandArcadeareinstalled,thisexamplecanberunfromthecommandlinewith:python-marcade.examples.happy_face"""importarcade#SetconstantsforthescreensizeSCREEN_WI......
  • 操作系统综合题之“采用记录型信号量机制实现进程INPUT、PROCESS和OUTPUT的同步算法(
    1.问题:系统中有有三个进程INPUT、PROCESS和OUTPUT,共用两个缓冲区BUF1和BUF2。假期设BUF1中最多可放10个数据,现已放入了2个数据;BUF2最多可放5个数据。INPUT进程负责不断将输入的原始数据推送入BUF1,PROCESS进程负责从BUF1中取出原始数据进行处理,并将处理后的结果数据送入到BUF2中,OUT......
  • rocketmq4.7.0升级到4.9.5
    升级步骤(rocket4.7.0升级到4.9.5)环境:目前就一台rocketmq机器,希望可以平滑升级#升级之前务必备份好store目录#新增机器的操作1.需要新增一台机器,把rocketmq4.9.5安装包放到机器上解压缩2.启动namesrv服务nohupshbin/mqnamesrv&(默认端口是9876)3.修改bro......
  • centos7 安装rocketmq
    rocketmq官网地址:https://rocketmq.apache.org/zh/download1、下载wgethttps://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip2、解压unziprocketmq-all-5.2.0-bin-release.zip-d/data/3、配置broker,新增brokerIP1和names......