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

文章目录

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

一、什么是AUC?

  • 机器学习中的AUC(Area Under the Curve)是一个重要的评估指标,特别是在二分类问题中。
  • AUC特指ROC曲线(Receiver Operating Characteristic Curve)下的面积用于衡量分类器区分正负类的能力
    • 在机器学习和统计分类中,正负类(Positive Class 和 Negative Class)是二分类问题中的两个类别标签。这两个标签是相对的,并没有固定的含义,而是根据具体问题的上下文来定义的。

      • 正类(Positive Class):通常用于表示我们感兴趣或希望模型能够正确识别出来的类别。在不同的应用场景中,正类的具体含义可能会有所不同。例如,在医疗诊断中,正类可能代表“患病”;在欺诈检测中,正类可能代表“欺诈行为”;在电子邮件分类中,正类可能代表“垃圾邮件”。
      • 负类(Negative Class):则是与正类相对的类别,表示我们不特别感兴趣或希望模型能够识别出来以避免的类别。同样地,负类的具体含义也取决于问题的上下文。继续上面的例子,在医疗诊断中,负类可能代表“健康”;在欺诈检测中,负类可能代表“正常交易”;在电子邮件分类中,负类可能代表“非垃圾邮件”。
  • 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 / (TP+FN)

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

    • FPR= FP / (FP+TN)

      其中,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_scorey_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.mzph.cn/news/878045.shtml

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

相关文章

springboot故障分析FailureAnalyzer

org.springframework.boot.diagnostics.FailureAnalyzer是springboot框架中的一个接口,用于为应用程序启动失败提供详细的诊断报告。当springboot应用程序无法正常启动时,springboot会尝试查找一个或多个实现了FailureAnalyzer接口的类,以提供…

网络游戏运营

游戏运营是将一款游戏平台推入市场,并通过一系列的策略和行动,使玩家从接触、认识到最终成为忠实玩家的过程。这一过程涵盖了多个方面,包括前期准备、上线运营、活动策划、数据分析、渠道合作以及用户维护等。以下是对游戏运营的详细解析&…

HarmonyOS--认证服务-操作步骤

HarmonyOS–认证服务 文章目录 一、注册华为账号开通认证服务二、添加项目:*包名要与项目的包名保持一致三、获取需要的文件四、创建项目:*包名要与项目的包名保持一致五、添加json文件六、加入请求权限七、加入依赖八、修改构建配置文件:bui…

软硬链接

建立软连接 ln -s 指向的文件 软连接文件 建立硬连接 ln 原来文件 硬连接文件 上面我们发现,建立的软链接文件的inode编号和指向文件不同,而建立的硬链接文件inode编号没变,为什么呢? 为什么不能给目录创建硬链接&#xff1f…

macOS 安装 JMeter

在 macOS 上安装 JMeter 有几种不同的方法,可以通过 Homebrew 安装或者手动下载并配置。下面是这两种方法的详细步骤: 方法 1:使用 Homebrew 安装 JMeter 安装 Homebrew(如果还未安装): 打开终端并运行以下…

解决添加MPJ插件启动报错

在项目中需要用到多数据源的级联查询,所以引入了MPJ插件,MPJ的版本是1.2.4,MP的版本是3.5.3,但却在启动的时候报错,报错如下: 解决办法: 将MP的版本降到3.5.1

UnrealEngine学习(02):虚幻引擎编辑器界面详解

学习一款软件,我个人建议是先学习怎么用,然后是学习怎么用的好,再研究源码。 上一篇文章详细描述了我们该如何安装虚幻5引擎: UnrealEngine学习(01):安装虚幻引擎https://blog.csdn.net/zuodingquan666/article/deta…

Spring IOC 创建Bean过程

ABC.class---推断构造涵数-->create Instance(普通对象)-->依赖注入字段、属性 -->Aware(设置Bean名称) -->初始化InitializingBean【void afterPropertiesSet()】回调 -->BeanPostProcessor(AOP)后置处理 初始化之前&…

7-7 数组中能被5整除的数的和

在一维数组中有10个整数&#xff0c;求出其中能被5整除的所有数的和。 输入格式: 在一行中输入10个整数&#xff0c;数据之间用1个空格间隔。 输出格式: 直接输出运算结果&#xff0c;没有任何附加字符。 输入样例: 5 6 8 15 98 45 71 2 3 1输出样例: 65 #include <…

Cypress 调用后端能力 task

在 Cypress 中的测试都是在前端运行的, 一些后端的操作是不可以直接调用的, 例如 fs, 但是可以通过 task 作为桥梁进行调用. 1. 在 cypress.config.js 中配置 e2e: {setupNodeEvents(on, config) {plugins(on, config);},2. 在 plugins/index.js 中实现 const fs require(&q…

【学术英语】Unit3:Academic Writing(学术写作)

文章目录 一、摘要1.1 摘要简介1.2 摘要的两种类型1.3 写摘要的技巧1.4 摘要的关键词1.5 例子1.5.1 例子11.5.2 例子2 二、注释和致谢2.1 注释的格式2.1.1 Book2.1.2 论文2.1.3 例子 2.2 致谢的格式 三、书目选编 一、摘要 1.1 摘要简介 摘要对学术写作极其重要和有用&#x…

小白之 FastGPT Windows 本地化部署

目录 引言环境步骤1. 安装 docker2. 启动 docker3. 浏览器访问4. One API 配置语言模型、向量模型渠道和令牌5. 创建 FastGPT 知识库6. 创建 FastGPT 应用 官方文档 引言 部署之前可以先看一下 RAG 技术原理&#xff0c;也可以后面回过头来看&#xff0c;对一些概念有些了解&a…

Latex插入eps图片不显示报错not found解决方案

Latex插入eps图片不显示并报错&#xff1a; 解决方案&#xff1a; 首先确保.tex文件中添加包\usepackage{epstopdf} winR输入cmd进入系统命令行 进入.tex文件系统盘&#xff0c;代码&#xff1a;D: 进入.tex所在文件夹&#xff0c;代码&#xff1a;cd D:\Desktop\xxx 执行最重要…

Spring Cloud LoadBalancer 源码解析

前言 LoadBalancer&#xff08;负载均衡器&#xff09;&#xff1a;一种网络设备或软件机制&#xff0c;用于分发传入的网络流量负载到多个后端目标服务器上&#xff0c;依次来提高系统的可用性和性能&#xff0c;Spring Cloud 2020 版本以后&#xff0c;移除了对 Netflix 的依…

如何在项目中配置.gitignore文件

1. .gitignore作用 .gitignore文件用于告诉Git哪些文件不应被跟踪或者提交到版本控制中。 2. 创建.gitignore文件 在你的项目根目录下创建一个名为.gitignore的文件 3. 常见规则 3.1 操作系统生成的文件 # macOS .DS_Store .AppleDouble .LSOverride# Windows Thumbs.db …

Physics of Language Models学习小结

1.概述 Physics of Language Models 参考&#xff1a;https://zhuanlan.zhihu.com/p/711391378 这是一系列论文和一个新的LLM研究方向&#xff0c;官网的概述如下。 苹果掉落&#xff0c;盒子移动&#xff0c;但重力和惯性等普遍规律对技术进步至关重要。虽然GPT-5或LLaMA-…

保号套餐千万别随便办理,小心有坑!

现在网上到处都是讨论保号套餐的消息&#xff0c;保号套餐虽好&#xff0c;但是小编提醒大家千万别随便办理&#xff0c;小心有坑&#xff01; 为什么这么说呢&#xff0c;我们先来看一张图&#xff1a; 移动的保号套餐&#xff0c;月租8元&#xff0c;分成两个套餐&#xff0…

算法笔试-编程练习-H-02-24

w这套题&#xff0c;侧重模拟和题目理解&#xff0c;只要按照题目描述正常复现整体分数应该不错 一、数据重删 数据重删是一种节约存储空间的技术&#xff0c;通常情况下&#xff0c;在数据存储池内是有很多重复的数据库。重删则是将这些重复的数据块找出并处理的技术。简单地…

黑神话怎么玩?隐藏BOSS寅虎打法攻略

这期来教大家黑神话悟空寅虎BOSS怎么打&#xff0c;寅虎是游戏中比较强力的一只boss&#xff0c;很多玩家拼尽全力都还是惜败一招&#xff0c;其实想要打赢它需要采用特定的方法和技巧才能攻克&#xff0c;因此接下来小编会给大家介绍下它的打法&#xff0c;还没攻克这个boss的…

P2P 文件共享:现代网络中的高效文件传输

在互联网的世界中&#xff0c;不同应用程序的数据传输方法各异。P2P文件共享&#xff08;Peer-to-Peer File Sharing&#xff09; 作为一种高效的文件传输方式&#xff0c;使得用户可以在没有中央服务器的情况下直接进行文件交换。本文将详细介绍P2P文件共享的基本原理、优势及…