《机器学习》—— AUC评估指标

news2024/12/28 23:42:07

文章目录

  • 一、什么是AUC?
    • 1、什么是ROC曲线?
    • 2、ROC曲线的绘制
  • 二、如何计算AUC的值
  • 三、代码实现AUC值的计算
  • 四、AUC的优缺点

一、什么是AUC?

  • 机器学习中的AUC(Area Under the Curve)是一个重要的评估指标,特别是在二分类问题中。
  • AUC特指ROC曲线(Receiver Operating Characteristic Curve)下的面积用于衡量分类器区分正负类的能力
  • AUC值越大,表示模型的性能越好,即模型能够更好地区分正负样本。

1、什么是ROC曲线?

  • ROC曲线(Receiver Operating Characteristic Curve,受试者工作特征曲线)是一种用于评估分类模型性能的图形化方法,特别是在二分类问题中。ROC曲线通过绘制**真正例率(True Positive Rate, TPR)假正例率(False Positive Rate, FPR)**的关系来展示模型在不同阈值下的性能。

  • 在说明 TPR 和 FPR 是什么意思之前,先来了解一下混淆矩阵

    • 混淆矩阵的基本结构如下:

      _预测为正类别预测为负类别
      实际为正类别True Positive (TP)False Negative (FN)
      实际为负类别False Positive (FP)True Negative (TN)
    • True Positive (TP): 模型将实际为正类别的样本正确预测为正类别。

    • False Negative (FN): 模型将实际为正类别的样本错误预测为负类别。

    • False Positive (FP): 模型将实际为负类别的样本错误预测为正类别。

    • True Negative (TN): 模型将实际为负类别的样本正确预测为负类别。

  • 真正例率(True Positive Rate, TPR):也称为灵敏度(Sensitivity)或召回率(Recall),是正确预测的正例占所有实际正例的比例。

    • TPR= (TP+FN) / TP

      其中,TP是真正例的数量,FN是假负例的数量。
  • 假正例率(False Positive Rate, FPR):是错误预测为正例的负例占所有实际负例的比例。

    • FPR= (FP+TN) / FP

      其中,FP是假正例的数量,TN是真负例的数量。
  • 阈值(Threshold):在分类问题中,模型通常会输出一个介于0和1之间的概率值,表示属于某个类别的概率。通过设置不同的阈值(比如0.5),可以将概率值转换为类别标签(0或1)。

2、ROC曲线的绘制

  • ROC曲线是通过在不同阈值下计算TPR和FPR的值,并将这些点绘制在二维坐标图上得到的。横轴是FPR纵轴是TPR。理想情况下,我们希望模型的ROC曲线尽可能接近左上角(FPR=0, TPR=1),这表示模型具有高灵敏度和高特异性。
  • 正常训练模型所画出的ROC曲线如下图所示:
    • 绿色曲线便是ROC曲线
    • 阴影部分的面积便是AUC的值
      在这里插入图片描述
  • 理想状态下的ROC曲线
    • 实际训练模型很难达到
      在这里插入图片描述

二、如何计算AUC的值

  • AUC有两种计算方法,这里我们介绍用公式求解的方法

  • 下面是一个经过很多复杂的推到得到的求解公式
    在这里插入图片描述

    • M——>正样本的个数
    • N——>负样本的个数
      在这里插入图片描述
    • 表示将为正样本的序列值相加
  • 例子:

    • 假设有4个样本,对应的真实标签有 1 和 0 , 并经过一个二分类模型训练后,所得到为正样本的概率,这里我们规定标签为1的是正样本(其实就是结果为标签1的概率)

      样本真实标签模型预测的概率
      A00.1
      B00.4
      C10.35
      D10.8
    • 按概率升序排列后得到:

      样本真实标签模型预测的概率rank
      A00.11
      C10.352
      B00.43
      D10.84
    • 按照上面的公式,只把正样本的序号加起来也就是只把样本C,D的rank值加起来后减去一个常数项:M(M+1)/2再除以正负样本数量的乘积

    • AUC的计算为:

      • AUC = [ (4+2) -2*(2+1)/2]/2*2=0.75
  • 如果出现概率相等的情况又该如何计算呢?

    • 下面的例子中有4个样本测试后的概率为0.5,而且既有正样本也有负样本的情况

    • 计算的时候,其实原则就是相等概率的rank取平均值

      样本真实标签模型预测的概率
      A10.8
      B10.7
      C00.5
      D00.5
      E10.5
      F10.5
      G00.3
    • 排序:

      样本真实标签模型预测的概率rank
      G00.31
      F10.52
      E10.53
      D00.54
      C00.55
      B10.76
      A10.87
    • 这里需要注意的是:相等概率的样本,无论正负,谁在前,谁在后无所谓。

    • 由于只考虑正样本的rank值

      • 对于正样本A,其rank值为7
      • 对于正样本B,其rank值为6
      • 对于正样本E,其rank值为(5+4+3+2)/4
      • 对于正样本F,其rank值为(5+4+3+2)/4
    • AUC的计算为:

      • AUC = [ 7 + 6 +(5+4+3+2)/4 + (5+4+3+2)/4 - 4*(4+1)/2] / 4*3 = 10/12=5/6

三、代码实现AUC值的计算

  • 可以直接调用Python中 sklearn.metrics 类中 roc_auc_score() 方法

  • 只需要将数据的真实标签模型预测为正例的概率传入即可计算出结果

  • 我们将上面示例中的数据传入,得出结果

    import numpy as np
    from sklearn.metrics import roc_auc_score
    
    y_label_1 = np.array([0, 0, 1, 1])
    x_scores_1 = np.array([0.1, 0.4, 0.35, 0.8])
    AUC_1 = roc_auc_score(y_label_1, x_scores_1)
    print(AUC_1)
    
    # 结果为:0.75 
    
    y_label_2 = np.array([1, 1, 0, 0, 1, 1, 0])
    x_scores_2 = np.array([0.8, 0.7, 0.5, 0.5, 0.5, 0.5, 0.3])
    AUC_2 = roc_auc_score(y_label_2, x_scores_2)
    print(AUC_2)
    
    # 结果为:0.8333333333333334
    
  • 对比可以看出,代码计算出的结果与例子中计算的结果一致

四、AUC的优缺点

  • 优点
    • 衡量排序能力:AUC主要关注模型对样本的排序能力,即能否将正样本排在负样本之前,适合排序类任务。
    • 对正负样本均衡不敏感:在样本不均衡的情况下,AUC仍然能够提供有效的评估,不会像准确率等指标那样受到样本比例的影响。
      无阈值依赖:AUC是一种无阈值依赖的评估指标,它不需要设定一个具体的分类阈值来判断样本的类别。这使得AUC在评估模型性能时更加灵活和稳定。
  • 缺点
    • 忽略预测概率值:AUC主要关注排序能力,而忽略了预测的具体概率值。这可能导致在某些情况下无法准确反映模型的拟合程度。例如,当模型对所有样本的预测概率都接近时,即使AUC值较高,模型的预测能力也可能较差。
    • 信息笼统:AUC反应的信息较为笼统,无法直接反映召回率、精确率等实际业务关心的指标。因此,在评估模型性能时,还需要结合其他评估指标进行综合考量。
    • 无法衡量样本内部排序:AUC只关心正负样本之间的排序,而不关心正负样本内部的排序。这可能导致在某些个性化推荐等场景中无法准确评估模型的性能。

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

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

相关文章

走进虚拟机逃逸技术之VMware Escape漏洞CVE-2023-20872复现

走进虚拟机逃逸技术之VMware Escape漏洞CVE-2023-20872复现 技术分享 技术分享 起初,为了学习虚拟机逃逸相关技术,也为了搞懂硬件虚拟化。于是请教了某巨佬后告诉我一本书,看完之后为了验证我理解到的硬件虚拟化及虚拟化逃逸原理是否正确&am…

图书管理系统详细设计

需求概述 按照需求分析文档中的规格要求,使用条形码扫描器进书、借书、还书,使得信息传递准确、流畅。同时,系统最大限度地实现易安装,易维护性,易操作性,运行稳定,安全可靠。 软件结构 系统由…

如何让虚拟机识别到宿主机的USB设备

我的实验环境: Windows宿主机VirtualBox虚拟化软件一个Linux虚机一个8G的USB磁盘 首先要让虚拟机能看到宿主机的USB设备,这是在VirtualBox中设置的。 选中虚机,右键选择“设置”菜单,再单击“USB设备”: 选中“启用…

Python | Leetcode Python题解之第365题水壶问题

题目&#xff1a; 题解&#xff1a; class Solution:def canMeasureWater(self, x: int, y: int, z: int) -> bool:if x y < z:return Falseif x 0 or y 0:return z 0 or x y zreturn z % math.gcd(x, y) 0

Alembic:python中数据库迁移的瑞士军刀

Alembic 简介 Alembic 是由 SQLAlchemy 的创始人 Mike Bayer 设计的一个数据库迁移工具。它不仅支持自动迁移脚本生成&#xff0c;还允许开发者手动编辑迁移脚本来满足特定的需求。Alembic 通过提供一个环境来跟踪数据库模式的变更历史&#xff0c;确保数据库的版本与应用代码…

推荐一个完全自由的目录设计网站

引言 如果我们能通过网站出一本书&#xff0c;这将是一件很酷的事。 事实上&#xff0c;我们通过网站发布知识&#xff0c;最常见的是写博客。 这二者有什么区别呢&#xff1f; 书本的知识内容有很强的逻辑性、系统性。而博客是随心所欲的&#xff0c;一时灵感来了就写一篇…

关闭Chrome快捷键

chrome是没办法改变快捷键以及屏蔽快捷键的&#xff0c;需要安装插件&#xff1a;shortkey 保证插件是开启的 不用做其他设置所有快捷键已被关闭

OAPT:用于双JPEG伪影去除的偏移感知分区的Transformer

OAPT: Offset-Aware Partition Transformer for Double JPEG Artifacts Removal https://github.com/QMoQ/OAPT 2408.11480 (arxiv.org) 基于深度学习的方法在去除单个JPEG伪影任务中表现出了显著的性能。然而&#xff0c;现有方法在处理双重JPEG图像时往往会退化&#xff0c…

127-隧道搭建穿透上线FRPNPSNgrok

使用了几种工具将会一一介绍 ngrokru 项目地址&#xff1a;Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 这个网站现在要实名认证&#xff08;还得花2元解锁&#xff09; 用这种在线的网站怎么说呢&#xff0c;真不如自己买个云服务器用下面的frp&#xff0c;毕竟流量…

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中&#xff0c;经常需要处理一些接口请求的参数&#xff0c;参数来源形式很多&#xff0c;可能是Excel、知识库文档等&#xff0c;有些数据形式比较复杂&#xff0c;比如多行或者包含很多不同的字符&#xff0c;示例如下&#xff1a; **客服质检分析指引** …

多个程序监听不同网卡的相同端口、相同网卡不同IP的相同端口

1 概述 一个主机上的多个程序监听同一个端口&#xff0c;是否一定存在冲突&#xff1f;如果是多网卡、单网卡多IP的情景下&#xff0c;多个程序是可以独立监听的。 2 多个程序监听不同网卡的相同端口 3 多个程序监听同一个网卡不同IP的相同端口 4 小结 多个程序监听同一个网…

生成式人工智能会导致人工智能崩溃吗

况可能很快就会发生变化。 从定义上讲&#xff0c;LLM 需要大量数据&#xff0c;而且所使用的数据集越来越大。根据缩放定律[2]&#xff0c;要提高性能&#xff0c;必须同时增加参数数量和训练标记数量&#xff08;后者被认为是最重要的因素&#xff09;。 这些数据集包含人类产…

0x03 ShowDoc 文件上传漏洞(CNVD-2020-26585)复现

参考&#xff1a;ShowDoc文件上传漏洞&#xff08;CNVD-2020-26585&#xff09;_showdoc漏洞-CSDN博客 一、fofa 搜索使用该工具的网站 网络空间测绘&#xff0c;网络空间安全搜索引擎&#xff0c;网络空间搜索引擎&#xff0c;安全态势感知 - FOFA网络空间测绘系统 "S…

ZMQ请求应答模型

案例一 这个案例的出处是ZMQ的官网。请求段发送Hello&#xff0c;应答端回复World。 ZMQ Request(client) #include <string> #include <iostream> #include <zmq.hpp>using namespace std; using namespace zmq; // 使用 zmq 命名空间int main() {// ini…

知识竞赛答题设备及答题方式有哪些

根据我们多年的知识竞赛承办经验&#xff0c;我来谈谈在知识竞赛中常用的答题设备和答题方式。 一、常用答题设备 1.电脑 如果电脑资源充足&#xff0c;可以用笔记本电脑进行答题&#xff0c;笔记本电脑可以采取有线或无线方式进行连网&#xff0c;可以根据情况选择连网方案&…

PyTorch专栏介绍

专栏导读 深度学习作为人工智能领域的重要分支&#xff0c;其应用范围广泛&#xff0c;从图像识别到自然语言处理&#xff0c;再到强化学习等。PyTorch作为当前流行的深度学习框架之一&#xff0c;以其动态计算图和易用性受到了广大开发者的青睐。本专栏将带领读者从零开始&am…

kubeadm搭建生产环境高可用集群

前言 搞了好多天&#xff08;今天是20240819&#xff09;&#xff0c;中途遇到各种各样的问题&#xff0c;总算是可以用了 我这里用的vmware开了5台服务器做学习实践 K8S因为直接使用的 pkgs.k8s.io 仓库&#xff0c;所以直接拉取的最新release版&#xff08;v1.31&#xff09…

结构开发笔记(五):solidworks软件(四):绘制36x36方块摄像头基座

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141422131 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

【hot100篇-python刷题记录】【盛最多水的容器】

R6-双指针篇 印象题 双指针法&#xff0c;num1在0处&#xff0c;num2在n-1处&#xff0c;相对移动收缩。 核心&#xff1a; 每次单步移动短板&#xff0c;因为长板收缩面积肯定变小。 面积&#xff1a;短板决定 class Solution:def maxArea(self, height: List[int]) ->…

【嵌入式软件】stm32内部flash读写

1.简介 控制系统采用STM32F429IGT6,STM32F429IGT6 的 FALSH 容量为 1024K 字节。 STM32F429 的闪存模块组织如下表所示。 STM32F429xx 的闪存模块由:主存储器、系统存储器、OTP 区域和选项字节等 4 部分组 成。 1)主存储器,该部分用来存放代码和数据常数(如 con…