机器学习--ROC AUC

参考

机器学习-ROC曲线 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/347470776一文看懂ROC、AUC - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/81202617

在了解之前,我们先来认识一下以下的概念

针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况:

(1)TP(True Postive):是正类并且被预测为正类

(2)FN(False Negative):是正类,但是被预测成为负类

(3)FP(False Postive):是负类,但是被预测成为正类

(4)TN(True Negative):是负类,但是被预测成为负类

1.ROC曲线的定义

ROC的全称是Receiver Operating Characteristic Curve,中文名字叫“受试者工作特征曲线”,顾名思义,其主要的分析方法就是画这条特征曲线。

它显示了在不同阈值下真正例率(True Positive Rate,也称为召回率)与假正例率(False Positive Rate)之间的关系。

横轴:假正类率 (false postive rate, FPR),特异度,划分实例中所有负例占所有负例的比例;TNR=1-FPR。

纵轴:真正类率 ==Recall(true postive rate, TPR),灵敏度,Sensitivity(正类覆盖率)

ROC 曲线中横轴和纵轴的含义以及与阈值的关系。

阈值

举一个雷达兵的例子。每一个雷达兵用的都是同一台雷达返回的结果,但是每一个雷达兵内心对其属于敌军轰炸机的判断是不一样的,可能1号兵解析后认为结果大于0.9,就是轰炸机,2号兵解析后认为结果大于0.85,就是轰炸机,依次类推,每一个雷达兵内心都有自己的一个判断标准(也即对应分类器的不同“阈值”),这样针对每一个雷达兵,都能计算出一个ROC曲线上的关键点(一组FPR,TPR值),把大家的点连起来,也就是最早的ROC曲线了。

当改变分类器的阈值时,会影响到对正例和负例的界定,从而影响到分类器的性能。

一般来说,降低阈值会增加真正例率(TPR),但也会导致增加假正例率(FPR)。ROC 曲线展示了在不同阈值下这种权衡关系。

具体来说,当阈值设定得很低时,分类器可能会将大部分样本判定为正例,这会提高真正例率(TPR),但也会导致增加假正例率(FPR)。

相反,当阈值设定得很高时,分类器可能只将少数样本判定为正例,这会降低真正例率(TPR),但也会导致减少假正例率(FPR)。

ROC 曲线展示了在所有可能阈值下 TPR 和 FPR 的变化情况,帮助我们理解分类器在不同判定标准下的性能表现。

ROC曲线绘制了在不同阈值下的TPR和FPR之间的折衷关系。曲线越靠近左上角(0,1)处,分类器性能越好,因为在这个点处TPR最大,而FPR最小。

AUC(Area Under the Curve):是ROC曲线下的面积,用来衡量分类器性能的一个数值。AUC值的范围在0到1之间,完美分类器的AUC值为1,随机猜测的分类器的AUC值为0.5。

2. 代码演示

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, roc_auc_score
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt# 生成模拟数据集
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)# 将数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 构建分类模型(这里以逻辑回归为例)
model = LogisticRegression()
model.fit(X_train, y_train)# 获取预测概率
y_pred_proba = model.predict_proba(X_test)[:, 1]# 计算 ROC 曲线的各项指标
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)
auc = roc_auc_score(y_test, y_pred_proba)# 绘制 ROC 曲线
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, label=f'ROC curve (AUC = {auc:.2f})', color='orange')
plt.stackplot(fpr, tpr, color='skyblue', alpha=0.3)  # 添加阴影效果
plt.text(0.6, 0.4, f'AUC = {auc:.3f}', fontdict=dict(size=12))  # 添加文本标签
plt.plot([0, 1], [0, 1], 'k--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc='lower right')
plt.show()print(f"AUC值为: {auc:.4f}")

结果展示

3. 一些其他地模型评估参数

a. 准确率(Accuracy)

所有预测正确的和所有test集的比例

b. 精确率(Precision)

也称为查准率,表示分类器预测为正类别的样本中有多少确实属于正类别的比例。

计算公式为:Precision = TP / (TP + FP)

c.召回率(Recall)

也称为查全率或灵敏度,表示实际为正类别的样本中被分类器预测为正类别的比例。

计算公式为:Recall = TP / (TP + FN)

d.F1分数(F1-score)

是精确率和召回率的调和平均值,综合考虑了两者的性能。

F1-score的取值范围在0到1之间,是精确率和召回率的平衡指标。

计算公式为:F1-score = 2 * (Precision * Recall) / (Precision + Recall)。

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

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

相关文章

常见算法(JavaScript版)

持续更新中… 目录 排序冒泡排序选择排序插入排序希尔排序快速排序(必须掌握)优化枢纽选择 堆排序归并排序 查找算法二分查找 排序 假设以下所有排序都是升序 快速排序在大部分情况下是效率最高的,所以笔试的时候要求写排序算法&#xff0…

SSR 服务器端渲染:提升用户体验的新趋势(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Java学习,一文掌握Java之SpringBoot框架学习文集(5)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

物联网的感知层、网络层与应用层分享

物联网的概念在很早以前就已经被提出,20世纪末期在美国召开的移动计算和网络国际会议就已经提出了物联网(Internet of Things)这个概念。 最先提出这个概念的是MIT Auto-ID中心的Ashton教授,他在研究RFID技术时,便提出了结合物品编码、互联网…

CMU15-445-Spring-2023-Project #1 - Buffer Pool

前置知识,参考上一篇博客:CMU15-445-Spring-2023-Project #1 - 前置知识(lec01-06) 在存储管理器中实现缓冲池。缓冲池负责将物理页从主内存来回移动到磁盘。它允许 DBMS 支持大于系统可用内存量的数据库。缓冲池的操作对系统中的…

常用的窗体控件

常用窗体控件 MenuStrip:一个标准的菜单栏控件,可以添加菜单单项和子菜单项 //双击子菜单项同样可以添加点击事件 //menu:菜单 item:菜单选项 //当点击新建选项的时候触发的事件 private void 新建ToolStripMenuItem_Click(ob…

QT+OSG/osgEarth编译之五十八:OpenEXRUtil+Qt编译(一套代码、一套框架,跨平台编译,版本:OpenEXRUtil-3.2.1)

Qt+OSG/osgEarth跨平台编译(用Qt Creator组装各个库,实现一套代码、一套框架,跨平台编译)_qt + osgearth安装-CSDN博客 目录 1、OpenEXRUtil介绍 2、文件下载 3、文件分析

【论文解读】基于神经辐射场NeRF的像素级交互式编辑(Seal-3D)

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/pdf/2307.15131 项目主页:https://windingwind.github.io/seal-3d/ 摘要: 随着隐式神经表征或神经辐射场(NeRF)的普及…

ElecardStreamEye使用教程(视频质量分析工具、视频分析)

文章目录 Elecard StreamEye 使用教程安装与设置下载安装 界面导航主菜单视频窗口分析窗口 文件操作打开视频文件 视频流分析帧类型识别码率分析分析报告 高级功能视觉表示比较模式自动化脚本 下载地址1:https://www.onlinedown.net/soft/58792.htm 下载地址2&…

Typora 编辑器 讲解 包括使用方式 快捷键 附带下载地址 (免费破解)

CSDN 成就一亿技术人! 今天来讲一下很好用的编辑器 Typora CSDN 成就一亿技术人! 什么是Typora? 它是一个 Markdown 编辑器和阅读器,这意味着您可以使用简单的格式代码 (Markdown)是一种轻量级标记语言&…

muduo网络库剖析——日志Log类

muduo网络库剖析——日志Log类 前情从muduo到my_muduo 概要日志日志级别 框架与细节成员函数 源码 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库,考虑的肯定是众多情况是否可以高效满足;而作为学习者,我们需要抽取其中的精华…

Java的二进制数据处理

在Java中,可以使用二进制运算来处理整数类型数据。 二进制基础知识 二进制(binary)在数学和数字电路中指以2为基数,由0和1组成的数字系统。 位运算符 位运算符是对二进制数进行操作的特殊运算符。在Java中,有以下几…

NCC基础开发技能培训

YonBuilder for NCC 是一个带插件的eclipse工具,跟eclipse没什么区别 NC Cloud2021.11版本开发环境搭建改动 https://nccdev.yonyou.com/article/detail/495 不管是NC Cloud 新手还是老NC开发,在开发NC Cloud时开发环境搭建必看!&#xff…

python基础教程七(布尔类型,条件语句,断言)

1. 布尔类型 在前面,你遇到了很多真值,现在终于需要他们了。真值也称布尔值。 用做布尔表达式(如用作if语句中的条件)时,下面的值都将被解释器视为假: False None 0 "" () [] {} 换而言之&#xff0…

207课程表

题目 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。 …

Vue2商品规格选择

Vue2Element-ui Vu2仿写拼多多商家后台规则选择&#xff0c;为什么用Vue2呢&#xff0c;因为公司用的Vue2... 样式不是很好看&#xff0c;自己调一下就行。 <template><div ref"inputContainer"><div>{{ combinationsResult }}</div><…

深入浅出Nacos的原理

前言 本文来讲一讲nacos作为底层注册中心的实现原理。那么就有这几个问题&#xff1f; 临时实例和永久实例是什么&#xff1f;有什么区别&#xff1f; 服务实例是如何注册到服务端的&#xff1f; 服务实例和服务端之间是如何保活的&#xff1f; 服务订阅是如何实现的&#…

Adobe illustrator各版本安装指南

下载链接 https://pan.baidu.com/s/11sTpMUbQEXhyjpkBlixcLg?pwd0531 #2024版 1.鼠标右击【Ai2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Ai2024(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Setup】选择【以…

【Pytorch】学习记录分享11——GAN对抗生成网络

PyTorch GAN对抗生成网络 0. 工程实现1. GAN对抗生成网络结构2. GAN 构造损失函数&#xff08;LOSS&#xff09;3. GAN对抗生成网络核心逻辑3.1 参数加载&#xff1a;3.2 生成器&#xff1a;3.3 判别器&#xff1a; 0. 工程实现 原理解析&#xff1a; 论文解析&#xff1a;GAN…

canvas如何自定义绘制图片

在Canvas中&#xff0c;可以使用drawImage()方法来绘制图片。该方法接受三个参数&#xff1a; 1. 图片对象&#xff1a;可以是<img>、<canvas>或<video>元素。 2. 图片左上角在Canvas中的X坐标。 3. 图片左上角在Canvas中的Y坐标。 如果要自定义绘制图片&a…