什么是ROC曲线

ROC曲线(Receiver Operating Characteristic Curve),也称为“接受者操作特性曲线”。它最早应用于雷达信号检测的分析,后来广泛应用于心理学和医学领域。

ROC分析是进行临床诊断试验评价最常用的方法。诊断试验是指评价某种疾病诊断方法的临床试验,主要应用于疾病诊断、疾病随访、疗效考核,以及药物毒副作用的监测。医生常通过对同一疾病的多种诊断试验进行分析比较,以便筛选出最佳诊断方案。

同样,在日常的工作和生活中,我们也经常需要进行预测,且总希望预测结果的准确性尽可能高。一个完美的分类模型是,我们可以将实际上属于类别1的也预测成1,属于类别0的也都预测成0。但实际的预测模型往往没有那么准确,一些实际属于类别1 的样本,根据我们的模型,却被预测为了0;而一些原本类别是0的样本,却被预测为了1。正如下图中的混淆矩阵所示:

40b1fa1d97c94be390a04be173176b36.png

 

通过上面的这个混淆矩阵,我们可以知道这个模型到底预测对了多少,预测错了多少;并且,还可以计算出与它相关的一系列分类性能评估指标:

正确率= 正确预测的正反例数 / 总数

误分类率= 错误预测的正反例数 / 总数

覆盖率/敏感度(Sensitivity) = 正确预测到的正例数 / 实际正例总数

负例的覆盖率/特异性(Specificity) = 正确预测到的负例个数 / 实际负例总数

命中率= 正确预测到的正例数 / 预测正例总数

负例的命中率= 正确预测到的负例个数 / 预测负例总数

15b39f55c31f4329adcbf0cc2930e811.png

 

ROC曲线是以1-Specificity(1-特异性)为横轴,Sensitivity(灵敏度)为纵轴所绘制的曲线。随着分类的概率阈值的减少,Sensitivity和1-Specificity也相应增加(也即Specificity相应减少),所以ROC曲线呈从左下角垂直上升到顶线,水平方向向右延伸到右上角的递增态势。

我们可以通过ROC曲线来判断模型效果的好坏,并以此标准比较不同模型的预测准确性。

ROC曲线好坏标准的参照是45度线,即对角线。如果ROC曲线沿着对角线方向分布,表示分类是随机造成的,该曲线表现不佳;而曲线越向左上方靠拢,越远离对角线,说明该曲线的灵敏度和特异性越高。

ROC曲线根据与45度线的偏离来判断模型好坏的好处是直观,缺点是不够精确。到底好在哪里,好了多少?这就要涉及到AUC(Area Under the  ROC Curve,ROC曲线下的面积)。

ROC曲线图中45度线下的面积是0.5,ROC曲线与它偏离越大,越向左上方靠拢,它下方的面积(AUC)就越大,其AUC值也越接近于1。因此,我们可以根据AUC的值来判断一个分类模型的预测效果。

AUC在0.5~0.7之间,说明模型效果较差;AUC在0.7~0.9之间,说明模型效果中等;AUC在0.9以上,说明模型效果佳。一般来说,AUC大于0.8,就可以认为模型效果较好。

 

 

 

案例分析

 

 

 

接下来我将用SPSS中的自带数据集bankloan.sav向大家介绍曲线分析方法。

这个数据集中包含了850位客户的财务和人口统计信息。前700个案例是以前获得贷款的客户,这些客户的违约情况是已知的。后150个案例还没有获得贷款,银行需要对他们进行建模预测,判断他们是否存在信用风险,即判断他们是否会产生违约。

在这个数据集中自带了3个违约概率预测变量(preddef1~3),即银行已经使用了3种不同方法进行了建模预测,接下来,我们需要通过ROC曲线分析来判断哪种模型预测的准确性最高。

打开数据集:

选择文件 -> “欢迎”对话框,在欢迎对话框中选择样本文件,选择bankloan.sav,选择打开。SPSS会自动打开这份数据文件。

b6d9109bdb414da1892337ba10c5c339.png

 

该数据集的部分数据截图如下所示:

2955f40c9adb4af98682f431dddd995c.png

 

数据分析:

选择分析 -> ROC曲线;

将preddef1、preddef2、preddef3这3个变量选入检验变量(这3个变量是分别用3种模型得到的违约概率值);

将违约变量选入状态变量;

因为在该案例的违约变量中违约编码为1,没有违约编码为0,所以在状态变量值中填入1;

勾选ROC曲线、带对角参考线,以及标准误差和置信区间;

完成后,点击确定。对话框如下所示:

d67a7619109e4e8ab957042c16c5565b.png

 

得到的分析结果如下所示:

e94f42b584224c35a8bde908610c0a97.png

 

分析结果详解:

a336a9031b0143708b8a6d953c8c692b.png

 

从分析结果来看,preddef1和preddef2的效果要好于preddef3。preddef1和preddef2的效果相近,但似乎preddef2离对角线更远一些。

preddef1的ROC曲线下的区域面积(AUC)是0.856,标准误为0.016,其95%的置信区间是0.825~0.886;

preddef2的ROC曲线下的区域面积(AUC)是0.870,标准误为0.015,其95%的置信区间是0.842~0.899;

preddef3的ROC曲线下的区域面积(AUC)是0.735,标准误为0.022,其95%的置信区间是0.693~0.778;

因此,preddef2比preddef1的AUC值略大,但它们的95%的置信区间存在交叉,因此可以认为它们的预测效果不存在显著差异。

以上就是在SPSS中进行ROC分析的详细过程,大家可以打开SPSS自行操作练习哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/13822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xshell配置ssh免密码登录-公钥与私钥登录linux服务器

目录 简介 提示 方法步骤 步骤1:生成密钥公钥(Public key)与私钥(Private Key) 方法1:使用xshell工具 方法2:使用命令行 步骤2:放置公钥(Public Key)到服务器 方法1:(我使用的是…

InnoDB数据存储结构

一. InnoDB的数据存储结构:页 索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般不同的,甚至有的存储引擎比如Memory都不用磁盘来存储数据,这里讲讲InooDB存储引擎…

NineData支持最受欢迎数据库PostgreSQL

根据在 Stack Overflow 发布的 2023 开发者调研报告中显示,PostgreSQL 以 45% vs 41% 的受欢迎比率战胜 MySQL,成为新的最受欢迎的数据库。NineData 也在近期支持了 PostgreSQL,用户可以在 NineData 平台上进行创建数据库/Schema、管理用户与…

解决AttributeError: ‘DataParallel‘ object has no attribute ‘xxxx_fc1‘

问题描述 训练模型时,分阶段训练,第二阶段加载第一阶段训练好的模型的参数,接着训练 第一阶段训练,含有代码 if (train_on_gpu):if torch.cuda.device_count() > 1:net nn.DataParallel(net)net net.to(device)第二阶段训练…

Linux环境Arduino IDE中配置ATOM S3

linux选择ubuntu发行版。 硬件设备有多小呢: 功能超级强大。 之前的ROS1和ROS2案例已经全部移植完成并测试结束(三轮纯人力校验😎)。 官网文档信息非常非常好: https://docs.m5stack.com/zh_CN/quick_start/atoms3…

Jenkins 配置maven和jdk

前提:服务器已经安装maven和jdk 一、在Jenkins中添加全局变量 系统管理–>系统配置–>全局属性–>环境变量 添加三个全局变量 JAVA_HOME、MAVEN_HOME、PATH 二、配置maven 系统管理–>全局工具配置–>maven–>新增 新增配置 三、配置JDK 在系统管…

科普 | OSI模型

本文简要地介绍 OSI 模型 1’ 2’ 3。 更新:2023 / 7 / 23 科普 | OSI模型 术语节点链路协议网络拓扑 概念作用结构应用层表示层会话层传输层网络层数据链路层物理层 数据如何流动OSI 和TCP/IP 的对应关系和协议参考链接 术语 节点 节点( Node &#…

Go 语言切片是如何扩容的?

在 Go 语言中,有一个很常用的数据结构,那就是切片(Slice)。 切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 切片是一种引用类型,它有…

前端(九)——探索微信小程序、Vue、React和Uniapp生命周期

🙂博主:小猫娃来啦 🙂文章核心:探索微信小程序、Vue、React和Uniapp生命周期 文章目录 微信小程序、Vue、React和Uniapp的基本定义和应用领域微信小程序生命周期生命周期概述页面生命周期应用生命周期组件和API的生命周期钩子 Vu…

【雕爷学编程】MicroPython动手做(16)——掌控板之图片图像显示

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

基于注解的 SpringMVC

SpringMVC SpringMVC使用SpringMVC的两个配置EnableWebMVC 和 ACWACSpringMVC执行流程接收请求参数Postman 发包工具()get 请求---简单类型数据(基本数据类型和String)get 请求---对象类型数据get 请求---数组类型get 请求 --- 集…

Python自动计算Excel数据指定范围内的区间最大值

本文介绍基于Python语言,基于Excel表格文件内某一列的数据,计算这一列数据在每一个指定数量的行的范围内(例如每一个4行的范围内)的区间最大值的方法。 已知我们现有一个.csv格式的Excel表格文件,其中有一列数据&#…

基于光子实验的指数级加速的量子同态加密理论

前言 量子计算机不仅有望在某些重要任务上超越经典计算机,而且还能保护计算的隐私。例如,盲量子计算协议支持安全委托量子计算,其中客户端可以保护其数据和算法的隐私,不受分配来运行计算的量子服务器的影响。然而,这…

【雕爷学编程】MicroPython动手做(14)——掌控板之OLED屏幕2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

Visual Studio2022报错 无法打开 源 文件 “openssl/conf.h“解决方式

目录 问题起因问题解决临时解决方案 问题起因 近一段时间有了解到Boost 1.82.0新添加了MySQL库,最近一直蠢蠢欲动想要试一下这个库 所以就下载了源码并进行了编译(过程比较简单,有文档的) 然后在VS2022中引入了Boost环境&#xf…

软件外包开发的需求分析

需求分析是软件开发中的关键步骤,其目的是确定用户需要什么样的软件,以及软件应该完成哪些任务。需求分析是软件工程的早期工作,也是软件项目成功的基础,因此花费大量精力和时间去做好需求分析是值得的。今天和大家分享软件需求分…

【开发问题】flink-cdc不用数据库之间的,不同类型的转化

不同的数据库之期间数据类型转化 问题来源与原因解决过程,思路错误,导致各种错误错误思路是什么 正确解决方式,找官网对应的链接器,数据转化 问题来源与原因 我一开始是flink-cdc,oracle2Mysql,sql 我一开…

idea中设置maven本地仓库和自动下载依赖jar包

1.下载maven 地址&#xff1a;maven3.6.3 解压缩在D:\apache-maven-3.6.3-bin\apache-maven-3.6.3\目录下新建文件夹repository打开apache-maven-3.6.3-bin\apache-maven-3.6.3\conf文件中的settings.xml编辑&#xff1a;新增本地仓库路径 <localRepository>D:\apache-…

【Kafka】常用操作

1、基本概念 1. 消息&#xff1a; Kafka是一个分布式流处理平台&#xff0c;它通过消息进行数据的传输和存储。消息是Kafka中的基本单元&#xff0c;可以包含任意类型的数据。 2. 生产者&#xff08;Producer&#xff09;&#xff1a; 生产者负责向Kafka主题发送消息。它将消息…

Python web实战 | Docker+Nginx部署python Django Web项目详细步骤【干货】

概要 在这篇文章中&#xff0c;我将介绍如何使用 Docker 和 Nginx 部署 Django Web 项目。一步步讲解如何构建 Docker 镜像、如何编写 Docker Compose 文件和如何配置 Nginx。 1. Docker 构建 Django Web 项目 1.1 配置 Django 项目 在开始之前&#xff0c;我们需要有一个 D…