【理解机器学习算法】之分类问题的模型评估(ROC-AUC)

ROC曲线(接收者操作特性曲线)和AUC(曲线下面积)是在不同阈值设置下,用于分类问题的性能度量工具。下面是它们所代表的含义以及使用方法:

ROC曲线

  • 代表含义:ROC曲线是一个图形化的表示,说明了一个二分类器系统的诊断能力,随着其区分阈值的变化。它是通过在不同的阈值设置下,绘制真正例率(TPR,也称为召回率或灵敏度)与假正例率(FPR,或1 - 特异性)来创建的。
  • 如何解读:曲线从(0,0)开始,到(1,1)结束。一个做出随机猜测的模型将会产生一条从图表左下角到右上角的对角线(无区分能力线)。曲线越远离这条对角线,模型的性能越好。

AUC - ROC曲线下面积

  • 代表含义:AUC衡量的是整个ROC曲线下(从(0,0)到(1,1))的二维区域面积。它提供了一个在所有分类阈值上的综合性能度量。一个预测完全错误的模型有一个0.0的AUC;一个预测完全正确的模型的AUC为1.0。
  • 如何解读:AUC可以被解释为模型对一个随机正例排名高于一个随机负例的概率。0.5的AUC表明没有区分能力(相当于随机猜测),接近1的AUC表示模型很好地将正例排名高于负例。

AUC 解释为排名概率

  • 把AUC想象成一个游戏,我们随机地从数据集中选取一个正例和一个负例。
  • 然后我们让模型对这两个实例进行评分,预测它们是正例的概率。
  • 如果模型通常能给正例更高的分数,这就意味着模型能很好地区分正例和负例。
  • AUC值是模型在这个游戏中赢得每次比赛(即正例得分高于负例)的概率。

注:在二分类问题中,数据集被分成两类,通常一类是我们关注的目标,另一类则不是。这两类分别被称为“正例”和“负例”:

  • 正例(Positive Case):通常指的是我们试图检测或预测的类别。例如,在疾病诊断中,正例可能指的是患有某种疾病的病例;在垃圾邮件检测中,正例可能指的是垃圾邮件。

  • 负例(Negative Case):与正例相对,负例通常指的是除了正例之外的其它类别。在前面疾病诊断的例子中,负例可能指的是没有患病的健康病例;在垃圾邮件检测的例子中,负例可能指的是正常邮件。

在不同的应用场景中,哪些是正例哪些是负例,取决于问题的具体定义和研究的目的。正例和负例的概念有助于在建立模型时提供清晰的指导,以及在评估模型性能时,特别是计算诸如准确率、召回率、精确率这样的指标时,能够有明确的评判标准。

ROC曲线上的要点:

  • x轴代表假正例率(FPR),y轴代表真正例率(TPR)。
  • 蓝色虚线代表完全随机分类器的ROC曲线(AUC为0.5);它是衡量分类器的基准线。
  • 橙色曲线代表逻辑回归分类器的ROC曲线。它展示了灵敏度和特异性之间的权衡(即真正例和假正例之间的权衡)。
  • AUC(曲线下面积)值为0.92,接近于1,表示模型具有良好的可分性。AUC越接近1,模型在将0预测为0和1预测为1方面就越好。
  • 完美的分类器将有一条线从左下角(0假正例)到左上角(100%真正例),然后到右上角(100%真正例在100%假正例时)。

ROC-AUC得分是一个单一的标量值,总结了分类器在所有阈值下的性能,这使得它在需要评估和比较分类器时非常方便。

从图中我们可以得出结论,分类器的表现明显优于随机猜测,因为曲线更接近左上角。这使得它成为一个可能的好模型,用于它被设计的预测任务。

图表上的阈值:

  • 在图表上,每个点对应一个特定的阈值设置。当你沿着ROC曲线移动时,这个阈值是变化的,每个点代表了在特定阈值下模型的TPR和FPR。
  • 例如,如果一个点位于曲线的右上角,它可能对应一个较低的阈值,此时有高真正例率和高假正例率。
  • 如果一个点位于曲线的左上角,它可能对应一个较高的阈值,此时有高真正例率和低假正例率。

根据具体情况,我们可能会调整阈值。例如,如果我们非常重视避免误判负例为正例(即希望降低FPR),我们可能会选择一个更高的阈值,即使这会降低TPR。相反,如果我们更希望不漏掉任何正例(即希望提高TPR),我们可能会选择一个更低的阈值,即使这意味着更高的FPR。

为什么ROC-AUC很有价值:

  • 阈值不变性:ROC-AUC之所以有价值,是因为它评估了模型在所有分类阈值下的性能,提供了一个不依赖于特定截断点的质量度量。
  • 分类不平衡问题:它在类别不平衡的情况下特别有用,因为它同时考虑了假正例率和真正例率。在类别不平衡的数据中,诸如准确率这样的指标可能会产生误导,但AUC提供了一个更细致、更全面的度量。
  • 模型比较:AUC指标允许我们比较不同模型,并决定哪个模型在区分类别方面可能更好。

在实践中,为了计算ROC-AUC,你通常会使用一个工具或库函数,该函数接收真实结果和正类的预测概率,计算不同阈值下的TPR和FPR,然后对曲线进行积分以找到AUC。在Python中,这个功能由像`scikit-learn`这样的库提供。

from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression# Create a synthetic binary classification dataset
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# Train a logistic regression classifier
clf = LogisticRegression(random_state=42)
clf.fit(X_train, y_train)# Predict probabilities for the test set
y_scores = clf.predict_proba(X_test)[:, 1]# Compute ROC curve and ROC area
fpr, tpr, _ = roc_curve(y_test, y_scores)
roc_auc = auc(fpr, tpr)# Plotting the ROC curve
plt.figure(figsize=(10, 8))
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate (1 - Specificity)')
plt.ylabel('True Positive Rate (Sensitivity)')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc="lower right")
plt.show()

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

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

相关文章

掌握收支明细,轻松记录收支明细,一键打印财务自由

在繁忙的生活中,你是否曾感到对个人的财务状况一头雾水?是否曾在需要证明收支情况时手忙脚乱,翻箱倒柜地寻找凭证?今天,我要向你揭示一个简单而高效的方法,帮助你轻松记录收支明细,并一键打印&a…

Cesium 默认选中框设置

Cesium 默认提供的选中框 进来关注下不迷人,还有更多集合专栏! 1、设置状态: 设置false 就不会出现这个默认的状态,如果需要修改如下: viewer._selectedEntitynewEntity newEntity 就是你需要设置选中框的样式 可以…

BGP4+简介

定义 BGP是一种用于自治系统AS(Autonomous System)之间的动态路由协议,常用版本是BGP-4,BGP-4只能传递IPv4路由。针对IPv6的BGP4扩展,通常称为BGP4。 目的 BGP4用于在AS之间传递路由信息,并不是所有情况…

python - 更改pdf中文本的字体高亮颜色(fitz模块)

import fitzdoc fitz.open(r"e:/test.pdf") pagedoc[0]# 按照指定的位置设置颜色 highlight page.add_highlight_annot((20, 500,60, 520)) highlight.set_colors(stroke[1, 1, 0]) # light red color (r, g, b) 颜色rgb每个除以255得出 highlight.update()# 按照…

YZ系列工具之YZ09: VBA_Excel之读心术

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的…

大数据分析-基于Python的电影票房信息数据的爬取及分析

概要 现如今,人民群众对物质生活水平的要求已不再局限于衣食住行,对于精神文化有了更多的需求。电影在我国越来越受欢迎,电影业的发展越来越迅猛,为了充分利用互联网技术的发展,掌握电影业的态势,对信息进行…

uniapp 写安卓app,运行到手机端 调试

手机 设置》关于手机》点击版本号 4-5次,弹出手机锁屏页面,输入手机锁屏密码 2.手机 设置中 》搜索 开发人员选项 》 调试》打开USB调试 同页面 找到 选择USB配置》选择 MIDIhbuilder 编辑器 点击 》运行》运行到手机或模拟器》运行到Android App基座 》…

打卡--MySQL8.0 三 (SQL语言)

SQL语言介绍 SQL 是 Structured Query Language(结构化查询语言)的缩写。 SQL 是用来与关系数据库进行通信的。 它是关系数据库管理系统的标准语言。 SQL 语句用于执行任务,如更新数据库中的数据,或从数据库中检索数据。 一些常见…

【滑动窗口】长度最小的子数组|无重复字符的最长子串|最大连续1的个数 III|将 x 减到 0 的最小操作数

1. 长度最小的子数组 - 力扣(LeetCode) 1.题目解析: 2.算法原理 (1)方法一:暴力列举出所有的子数组的和 时间复杂度:O(n**2):枚举所有子数组O(…

在Windows中安装wsl2和ubuntu22.04

目录 一、概述二、安装wsl22.1 虚拟化设置2.2 虚拟化设置2.3 切换和更新wsl2 三、安装ubuntu3.1 下载Ubuntu22.043.2 配置Ubuntu22.04 一、概述 wsl2是一种面向Windows操作系统的虚拟化技术,可以让我们在Windows操作系统中“丝滑”的运行Linux系统。wsl2由微软团队…

WMI接口设计实现

WMI是Windows操作系统管理数据和操作的基础设施,系统管理员可以使用VB Script、PowerShell及Windows API(C、C#等)管理本地或远程计算机。 使用WMI框架应用程序可以直接访问EC RAM、 I/O端口、Memory地址、寄存器、Setup NV设定值&#xff0c…

ideaSSM 财务凭证管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 财务凭证管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…

【史上最全面arduino esp32教程】ESP32Time时间库

文章目录 前言一、安装ESP32Time库二、ESP32Time使用2.1 基础使用构造ESP32Time对象设置当前时间获取当前时间结构体 2.2 其他函数 总结 前言 欢迎来到这篇Arduino ESP32教程!在本教程中,我们将介绍ESP32Time时间库的使用。时间在许多项目中起着重要的作…

基于SSM的手机商城管理系统+数据库+论文+免费远程调试

项目介绍: 基于SSM的手机商城管理系统。Javaee项目,采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Mybatis JspBootstrapLayui来实现。MySQL数据库作为系统…

html第一次作业

常用标签 0, 骨架&#xff08;&#xff01;tap&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><t…

两款新春烟花代码-烟花模拟器网站源码

安装教程 1下载源码 2上传主机 3解析域名到主机 4绑定域名 5解压源码 6打开域名 源码免费下载地址 抄笔记 chaobiji.cn

GTC AI 2024:人工智能的未来展望

在2024年GTC AI大会上&#xff0c;NVIDIA推出了多项创新技术和产品&#xff0c;涵盖了从新一代GPU平台到AI超级计算和量子计算云服务等多个领域。 新一代GPU平台 Blackwell Blackwell是为生成式AI时代设计的新一代GPU平台&#xff0c;与前代相比&#xff0c;在FP8训练性能上提…

Python之Web开发中级教程----ubuntu安装MySQL

Python之Web开发中级教程----ubuntu安装MySQL 进入/opt目录 cd /opt 更新软件源 sudo apt-get upgrade sudo apt-get update 3、安装Mysql server sudo apt-get install mysql-server 4、启动Mysql service mysql start 5、确认Mysql的状态 service mysql status 6、安全设…

硬核分享|AI语音识别转文字与自动生成字幕

硬核分享|AI语音识别转文字与自动生成字幕_哔哩哔哩_bilibili 在现代快节奏的生活中&#xff0c;语音转文字工具成为了我们工作和学习中的得力助手。它能够将我们说出的话语迅速转化为文字或者将语音视频自动生成字幕&#xff0c;提供便捷和高效。 语音转文字转字幕工具是一种…

Linux信号处理

Linux信号处理 什么是linux信号 本质是一种通知机制&#xff0c;用户 or 操作系统通过发送一定的信号&#xff0c;通知进程&#xff0c;某些事情已经发生&#xff0c;你可以在后续进行处理。 信号产生是随机的&#xff0c;进程可能正在忙自己的事情&#xff0c;所以&#xf…