【理解机器学习算法】之分类问题的模型评估(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.rhkb.cn/news/283273.html

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

相关文章

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false,其他值都为true ..连接两个字符串

浙江IGM机器人K5控制柜维修需要注意哪些问题?

IGM机器人K5控制柜常见故障及维修方法 1、电源故障: 表现为IGM机器人K5控制柜不能开机或突然断电。 检查:检查电源线是否连接良好,有无破损;检查电源模块的输出电压是否正常; 维修方法:如电源模块损坏&…

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

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

docker学习笔记 三-----docker安装部署

我使用的部署环境是centos 7.9 1、安装依赖工具 yum install -y yum-utils device-mapper-persistent-data lvm2 安装完成如下图 2、添加docker的软件信息源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo url地址为如…

【ReactJS】使用GoJS实现自己的图表App

目录 1:用于绘制自定义图表的JavaScript库:用于绘制UML(或BPMN或ERD …)图表的JavaScript库:2:为什么选择GoJS?3:让我们使用现有的React应用程序:步骤1:步骤2:步骤3:步骤4:推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战1:…

IDEA上的Scala环境搭建

Scala环境搭建 一、搭建Scala开发环境 安装Scala编译器 安装scala-2.12.10.msi 检查scala安装情况 在dos窗口输入scala,检查是否能够进入编译器。进行简单的scala命令计算 在IDEA中进行scala编码 File - Settings - Plugins - MarketPlace中搜索scala插件 安…

RabbitMQ在Java中使用 SpringBoot 从基础到高级

充分利用每一个监听者 需要充分利用每一个消费者,需要在配置文件中加上prefetch配置并设置为1 rabbitmq:listener:simple:prefetch: 1 # 每次只能获取一条消息,处理完成才能获取下一个消息创建交换机和队列 创建队列 "fanout.queue1"&…

集简云新增“文本语音转换”功能,实现智能语音交互

为丰富人工智能领域的应用集成,为用户提供更便捷和智能化的信息获取和视觉创作方式,本周集简云上线了内置应用—文本语音转换。目前支持OpenAI TTS和TTS HD模型,实现文本语音高效智能转换,也可根据你的产品或品牌创建独特的神经网…

二、SpringBoot3 配置文件

本章概要 统一配置管理概述属性配置文件使用YAML 配置文件使用批量配置文件注入多环境配置和使用 2.1 统一配置管理概述 SpringBoot工程下,进行统一的配置管理,你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定…

福建科立讯通信 指挥调度管理平台 SQL注入漏洞复现(CVE-2024-2620、CVE-2024-2621)

0x01 产品简介 福建科立讯通信指挥调度管理平台是一个专门针对通信行业的管理平台。该产品旨在提供高效的指挥调度和管理解决方案,以帮助通信运营商或相关机构实现更好的运营效率和服务质量。该平台提供强大的指挥调度功能,可以实时监控和管理通信网络设备、维护人员和工作任…

如何在linux环境上部署单机ES(以8.12.2版本为例)

ES安装(以8.12.2版本为例) 首先创建好对应的文件夹然后在对应的文件夹下执行依次这些命令 1.wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz 2.wget https://artifacts.elastic.co/downloads/…

【Flask】Flask项目结构初识

1.前提准备 Python版本 # python 3.8.0 # 查看Python版本 python --version 安装第三方 Flask pip install flask # 如果安装失败,可以使用 -i,指定使用国内镜像源 # 清华镜像源:https://pypi.tuna.tsinghua.edu.cn/simple/ 检查 Flask 是…

6个免费的ChatGPT网站

AI 大模型的出现给时代带来了深远的影响: 改变了产业格局:AI 大模型的发展推动了人工智能技术在各行业的广泛应用,改变了传统产业的运作方式,促进了新兴产业的崛起,如智能驾驶、医疗健康、金融科技等。提升了科学研究…

python的ITS 信息平台的设计与实现flask-django-nodejs-php

第二,陈列说明该系统实现所采用的架构、系统搭建采用的服务器、系统开发环境和使用的工具,以及系统后台采用的数据库。 最后,对系统进行全面测试,主要包括功能测试、查询性能测试、安全性能测试。 分析系统存在的不足以及将来改进…

haproxy 高可用

一 haproxy HAProxy简介 HAProxy提供高可用、负载均衡以及基于TCP和HTTP的应用代理,适合处理高负载站点的七层数据请求。类似的代理服务可以屏蔽内部真实服务器,防止内部服务器遭受攻击。 HAProxy特点和优点: 1.支持原声SSL,同时支持客户端和…

[LeetBook]【学习日记】排序算法——归并排序

主要思想 归并排序是一种分治算法,其排序过程包括分和治分是指将要排序的序列一分为二、二分为四,直到单个序列中只有一个数治是指在分完后,将每两个元素重新组合,四合为二、二合为一,最终完成排序 图片作者&#xf…

阿里云OSS分布式存储

目录 🧂1.OSS开通 🌭2.头像上传整合OSS 🚍2.1.引入依赖 🚍2.2添加配置 🚍2.3创建配置类 🚍2.4添加实现类 🚍2.5controller调用接口 🚍2.6postman测试 1.OSS开通 1.登…

Google XSS Game Level 6 通关方式

文章目录 链接:[Google XSS Game](#https://xss-game.appspot.com/)Level 6 - Follow the 🐇思路1 (当然,我使用这个方式没有成功,所以才来记录下)解法2 【最简单的解法】需要注意的一个小问题 链接&#x…

Spring异步注解@Async线程池配置

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调…

基于“云”重构“百度云盘”

这一篇文章是和上一篇连着的哟! # docker run -p 80:80 -d -v /data/owncloud/:/var/www/html owncloud 一、【安装完成】 二、【打开浏览器】 三、【回到这个熟悉的界面,掉。】 四、【上传文件】 试了可以看哇偶!!&#xff01…