R数据分析:多分类问题预测模型的ROC做法及解释

devtools/2025/1/12 21:34:29/

有同学做了个多分类的预测模型,结局有三个类别,做的模型包括多分类逻辑回归、随机森林和决策树,多分类逻辑回归是用ROC曲线并报告AUC作为模型评估的,后面两种模型报告了混淆矩阵,审稿人就提出要统一模型评估指标。那么肯定是统一成ROC了,刚好借这个机会给大家讲讲ROC在多分类问题情形下的具体使用和做法。

ROC 曲线回顾

ROC 曲线(Receiver Operating Characteristic Curve):展示分类模型的真阳性率(TPR) 和 假阳性率(FPR)的关系。

  1. 真阳性率 (TPR):模型正确分类正样本的比例。
  2. 假阳性率 (FPR):模型错误地把负样本判为正样本的比例。

其中的逻辑就是分类问题是要看概率阈值进行类别划分的,取不同的概率阈值,真阳性和假阳性率是不一样的。ROC曲线就是在所有可能的阈值下,绘制 TPR(纵轴) 对 FPR(横轴)的曲线。

而AUC(Area Under the Curve)就是ROC 曲线下的面积,反映模型的整体分类能力。AUC = 1,说明模型完美分类;AUC = 0.5,相当于随机猜测。


多分类 ROC 的挑战

但是在多分类问题中,模型输出的不是“正/负”,而是多个类别(如 A、B、C)。与二分类不同,多分类任务中有多个类别,ROC 就无法直接绘制了。这个时候就需要变一下,我们常用两种方法将多分类任务转化为多个二分类问题:

  1. One-vs-Rest (OvR):针对每个类别,将其视为“正类”,其他类别视为“负类”,分别绘制 ROC 曲线。
  2. One-vs-One (OvO):对每两个类别分别计算 ROC 曲线。

举个例子: 假设我们有 3 个类别:苹果(A)香蕉(B)橙子(C)

  • OvR 方法:针对“苹果 vs. 非苹果”、“香蕉 vs. 非香蕉”、“橙子 vs. 非橙子”,分别绘制 ROC。
  • OvO 方法:只考虑两两类别,如“苹果 vs. 香蕉”、“苹果 vs. 橙子”、“香蕉 vs. 橙子”。

我们具体来看一下两种方法。

方法 1:One-vs-Rest (OvR)

每个类别都当作“正类”,其余类别当作“负类”,逐一绘制 ROC 曲线。比如结局有 3 个类别:苹果(A)香蕉(B)橙子(C)


http://www.ppmy.cn/devtools/149978.html

相关文章

CentOS 8 系统中添加 4G 大小的swap(交换空间)

步骤一:检查磁盘空间可用情况 首先,使用 df -h命令查看磁盘各分区的使用情况,确保有足够的磁盘空间来创建 swap文件。一般建议选择有充足剩余空间的分区(比如 /分区或者有较大空闲容量的其他数据分区等)来存放 swap文件。 步骤二:…

Java Web开发进阶——Spring Boot与Thymeleaf模板引擎

Thymeleaf 是一个现代化的、功能强大的 Java 模板引擎,常用于生成 Web 应用程序的视图。它与 Spring Boot 的集成十分方便,并且提供了丰富的功能,能够帮助开发者实现动态渲染数据、处理表单、页面控制等操作。下面,我们将详细探讨…

Linux下实时监测双网卡的默认网卡并重新设置默认网卡

在项目使用过程中,碰到了一些双网卡电脑,连接的两个交换机中某一交换机重启。导致通信不正常的情况。 发现是默认网卡发生变化,当然,也有可能是网络连接状态变化 首先通过命令来查看默认网卡是否发生变化 route -n然后通过写入…

React 实战详细讲解:setState 是什么、如何更新及批量处理

在 React 中,setState 是用来更新组件状态的方法,它触发重新渲染组件的过程。理解 setState 的执行机制非常重要,特别是在大型应用中,它可以帮助你更高效地进行状态管理。 下面我们从 setState 的定义、更新类型、批量更新等方面…

工业 4G 路由器赋能远程医疗,守护生命线

在医疗领域,尤其是偏远地区的医疗救治场景中,工业 4G 路由器正发挥着无可替代的关键作用,宛如一条坚韧的 “生命线”,为守护患者健康持续赋能。 偏远地区医疗资源相对匮乏,常常面临着专业医生短缺、诊疗设备有限等困境…

Postman配置环境变量

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Postman是一套比较方便的接口测试工具,但我们在使用过程中,可能会出现创建了API请求,但API的URL会随着服务器IP地址的变化而改…

android 自定义SwitchCompat,Radiobutton,SeekBar样式

纯代码的笔记记录。 自定义SwitchCompat按钮的样式 先自定义中间的圆球switch_thumb_bg.xml <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"android:shape"oval&q…

每天40分玩转Django:问题解答(一)

解答粉丝提问&#xff1a; 如何利用GitHub Actions优化Django项目的CI/CD流程以提高自动化部署和代码质量监控的效果&#xff1f; 1. 创建GitHub Actions工作流文件 在Django项目的根目录下创建一个名为.github/workflows的目录&#xff0c;并在其中创建一个工作流文件&…