【机器学习】了解 AUC - ROC 曲线

一、说明

        在机器学习中,性能测量是一项基本任务。因此,当涉及到分类问题时,我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时,我们使用AUC(曲线下面积)ROC(接收器工作特性)曲线。它是检查任何分类模型性能的最重要评估指标之一。

 本博客旨在回答以下问题:

  • 1. 什么是 AUC - ROC 曲线?
  • 2. 定义 AUC 和 ROC 曲线中使用的术语。
  • 3. 如何推测模型的性能?
  • 4. 敏感性、特异性、FPR 和阈值之间的关系。
  • 5. 如何在多类模型中使用 AUC - ROC 曲线?

二、什么是 AUC - ROC 曲线?

        AUC - ROC 曲线是各种阈值设置下分类问题的性能度量。ROC 是一条概率曲线,AUC 表示可分离性的程度或度量。它告诉模型能够区分类的程度。AUC 越高,模型在将 0 个类预测为 0 和将 1 个类预测为 1 方面越好。以此类推,AUC越高,模型在区分有疾病和无疾病患者方面就越好。

        ROC 曲线使用 TPR 与 FPR 绘制,其中 TPR 在 y 轴上,FPR 在 x 轴上。

AUC - ROC 曲线

 

三、定义 AUC 和 ROC 曲线中使用的术语。

3.1 TPR(真阳性率)/召回率/灵敏度

 

3.2 特异性

 

3.3 FPR

 

四、如何推测模型的性能?

        优秀的模型的 AUC 接近 1,这意味着它具有良好的可分离性。较差的模型的 AUC 接近 0,这意味着它的可分离性度量最差。事实上,这意味着它正在回报结果。它将 0 预测为 1,将 1 预测为 0。当 AUC 为 0.5 时,意味着模型没有任何类别分离能力。 我们来解读一下上面的说法。 众所周知,ROC是一条概率曲线。那么让我们绘制这些概率的分布: 注:红色分布曲线为正类(患病患者),绿色分布曲线为负类(无疾病患者)。

        这是一个理想的情况。当两条曲线完全不重叠时,意味着模型具有理想的可分离性度量。它完全能够区分正类和负类。

        

        当两个分布重叠时,我们引入类型 1 和类型 2 错误。根据阈值,我们可以最小化或最大化它们。当 AUC 为 0.7 时,这意味着模型有 70% 的机会能够区分正类和负类。

        

        这是最糟糕的情况。当AUC约为0.5时,模型没有区分正类和负类的判别能力。

        

        当 AUC 大约为 0 时,模型实际上是在往复类。这意味着模型将负类预测为正类,反之亦然。

五、灵敏度、特异性、FPR 和阈值之间的关系。

        敏感性和特异性成反比。因此,当我们增加灵敏度时,特异性会降低,反之亦然。

敏感性,特异性和敏感性⬆️⬇️,特异性⬇️⬆️

        当我们降低阈值时,我们得到更多的正值,从而增加敏感性并降低特异性。

        同样,当我们增加阈值时,我们会得到更多的负值,从而获得更高的特异性和更低的灵敏度。

        众所周知,FPR 是 1 - 特异性。因此,当我们增加TPR时,FPR也会增加,反之亦然。

TPR,FPR和TPR,FPR⬆️⬆️⬇️⬇️

六、如何在多类模型中使用 AUC ROC 曲线?

        在多类模型中,我们可以使用 One vs ALL 方法绘制 N 个类的 N 个 AUC ROC 曲线。例如,如果您有名为 X、Y 和 Z 的三个类,则将有一个针对 Y 和 Z 分类的 X 的 ROC,另一个针对 Y 分类的 Y 的 ROC,以及针对 Y 和 X 分类的第三个 Z。

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

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

相关文章

使用 Vue 创建一个简单的 Loading 动画

使用 Vue 创建一个简单的 Loading 动画 1. 开始之前 确保 正确安装了 Vue 3知道如何启动一个新的 Vue 项目(或在项目中使用Vue)了解 Vue 3 的 Composition API(本文将使用) 2. 设计组件 该组件应该包含三个部分 控制逻辑旋转…

win10 安装 langchain-chatglm 遇到的问题

win10 安装 langchain-chatglm 避坑指南(2023年6月21日最新版本)_憶的博客-CSDN博客官网看起来安装很简单,网上教程也是,但实际上我耗费了两天时间,查阅了当前网络上所有可查阅的资料,重复「安装-配置-卸载…

Spring Security 构建基于 JWT 的登录认证

一言以蔽之,JWT 可以携带非敏感信息,并具有不可篡改性。可以通过验证是否被篡改,以及读取信息内容,完成网络认证的三个问题:“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全,使用它需要采用 …

HideSeeker论文阅读

文章目录 3.1 Overview of Our System HideSeeker3.2 Visual Information Extraction3.3 Relation Graph Learning3.4 Hidden Object Inference 4 EVALUATIONS4.7 Summary 6 DISCUSSIONS AND CONCLUSION 3.1 Overview of Our System HideSeeker 我们设计了一种名为“HideSeeke…

个人博客系统(SSM版 前端+后端)

前言 在学习Servlet的时候,也写了一个博客系统,主要的就是使用servelet加Tomcat进行实现的,而这个项目 仅仅适合去学习Web项目开发的思想,并不满足当下企业使用框架的思想,进行学习过Spring,Spring Boot,Spring MVC以及MyBatis之后,我们就可以对之前的项目使用SSM框架的形式进行…

95、Kafka是pull?push?优劣势分析

Kafka是pull?push?优劣势分析 一、pull模式二、push模式三、额外补充 一、pull模式 根据consumer的消费能力进行数据拉取,可以控制速率可以批量拉取、也可以单条拉取可以设置不同的提交方式,实现不同的传输语义 缺点: 如果kafka…

webpack环境配置的问题

1.如何区分不同的配置 // vue.config.js 中定义不同配置项 module.exports {// 默认配置// ...// 开发环境配置dev: {// ...},// 生产环境配置prod: {// ...} };// 在运行 vue-cli-service 命令时,在package.json中设置不同配置 {"scripts": {"ser…

react+redux异步操作数据

reactredux异步操作数据 redux中操作异步方法,主要是: 1、借助createAsyncThunk()封装异步方法;2、通过extraReducers处理异步方法触发后的具体逻辑,操作派生的state 1、异步操作的slice import { createSlice, createAsyncThunk…

uniapp 之 微信小程序、支付宝小程序 对于自定义导航栏的不同

目录 前言 微信小程序 代码 支付宝小程序 首页配置文件 二级菜单页面 配置 总结 不同 相同 前言 小程序都是 uni-app 写的 不是原生 微信小程序 代码 pages.json文件中配置 重点: "navigationStyle": "custom", // 导航栏样式…

【N32L40X】学习笔记05-串口库(空闲中断+接收非空中断)

串口 该函数库的目的就是在统一的地方配置&#xff0c;将配置的不同项放置在一个结构体内部使用一个枚举来定义一个的别名 bsp_uart.h #ifndef _BSP_UART_H_ #define _BSP_UART_H_ #include<stdio.h> #include<stdint.h> #include "n32l40x.h"#define…

ChatGPT开放自定义系统级别的指令,可设置偏好变成专属助理

OpenAI官方消息https://openai.com/blog/custom-instructions-for-chatgpt OpenAI为其大型语言模型接口ChatGPT引入了自定义指令&#xff0c;旨在为用户提供更加量身定制和个性化的体验&#xff0c;可以设置您的偏好&#xff0c;ChatGPT将在未来的所有对话中记住它们。 该功…

Redis高可用部署架构

目录 1. 主从复制与哨兵架构&#xff1a;2. Redis集群架构&#xff1a; Redis高可用部署可以采用主从复制与哨兵架构或Redis集群架构。下面将分别介绍这两种架构的架构图、优缺点和具体应用场景。 1. 主从复制与哨兵架构&#xff1a; 架构图&#xff1a; ----------| Client…

Python—数据结构(一)

先放一张自己学习和整理归纳的思维导图&#xff0c;以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥&#xff0c;但坚持下来一定有很大的收获&#xff01;加油&#x1f4aa;&#x1f3fb;&#xff01; 数据结构 数据的概念数据元素&#xff1a; 若干基本…

Go语言通过反射获取各种类型变量的值

Go语言通过反射获取各种类型变量的值 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 1、什么是反射 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 Golang 反射包中有两对非常重要的函数和类型&#xff0c;两个函数分别是&a…

音视频开发-ffmpeg介绍-系列二

目录 一、FFmpeg核心结构体 二、解码流程 三、FFmpeg解码实现 四、FFmpeg编码实现 五、FFmpeg转码实现 一、FFmpeg核心结构体 AVFormatContext&#xff1a;解封装功能的结构体&#xff0c;包含文件名、音视频流、时长、比特率等信息&#xff1b; AVCodecContext&#xf…

【算法基础:数学知识】4.3 欧拉函数

文章目录 欧拉函数定义性质 例题列表873. 欧拉函数&#xff08;使用质因数分解求一个数的欧拉函数&#xff09;原理讲解&#xff08;公式推导&#xff09;⭐解法代码 874. 筛法求欧拉函数&#xff08;求 1 ~ n 中所有数字的欧拉函数&#xff09;⭐ 欧拉函数 https://oi-wiki.o…

[数据结构 -- 手撕排序算法第六篇] 递归实现快速排序(集霍尔版本,挖坑法,前后指针法为一篇的实现方法,很能打)

目录 1、常见的排序算法 1.1 交换排序基本思想 2、快速排序的实现方法 2.1 基本思想 3 hoare&#xff08;霍尔&#xff09;版本 3.1 实现思路 3.2 思路图解 3.3 为什么实现思路的步骤2、3不能交换 3.4 hoare版本代码实现 3.5 hoare版本代码测试 4、挖坑法 4.1 实现…

Java设计模式解析:迭代器模式的实现与应用

迭代器模式是一种行为型设计模式&#xff0c;它提供了一种统一的方式来遍历集合中的元素&#xff0c;而无需暴露集合的内部结构。在本文中&#xff0c;我们将深入探讨迭代器模式的实现和应用。 在软件开发中&#xff0c;集合是一种常见的数据结构&#xff0c;用于存储和管理一…

【手撕排序算法】---基数排序

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构初阶&#xff08;C实现&#xff09;】 我们直到一般的排序都是通过关键字的比较和移动这两种操作来进行排序的。 而今天介绍的…

​MySQL高阶语句(三)

目录 1、内连接 2、左连接 3、右连接&#xff1a; 二、存储过程⭐⭐⭐ 4. 调用存储过程 5.查看存储过程 5.1 查看存储过程 5.2查看指定存储过程信息 三. 存储过程的参数 3.1存储过程的参数 3.2修改存储过程 四.删除存储过程 MySQL 的连接查询&#xff0c;通常都是将来…