Macro / Micro / Weighted AUC 如何计算实例讲解

news/2024/11/18 5:33:47/文章来源:https://www.cnblogs.com/elinablog/p/18386824

情景:二分类模型在验证集上的 outputs 为 [[-0.0464, -0.0268], [-0.0234, -0.0091]],验证集 labels 为 [0, 1]。一步一步推导出 AUC。

  • 首先明确几个概念
  1. TPR: sensitive/recall,检测出来的阳性样本的占比,适用于癌症筛查

  2. FPR:模型是否把所有的阴性样本都预测成了阳性

    👉极限情况1:TPR = 1 & FPR = 1,说明模型把所有样本都预测成了阳性(包含两个含义:对于阳性样本,模型都能检出;但对于阴性样本,模型都判断错误)。但显然,这种情况下,那些未患病的被试(阴性样本)会经历没必要的检查,所以不应该鼓励模型把所有样本都预测成阳性。
    👉极限情况2:TPR = 0 & FPR = 0,说明模型把所有样本都预测成了阴性(同样包含两个含义:没有无辜的被试受模型所害,但真正患病的被试也被模型漏掉了)。这样一来,模型也失去了诊断价值,白白浪费被试们的时间。实际临床应用中,应该根据实际需求选择偏重提高TPR还是降低FPR。

  3. AUC 值为 ROC 曲线下面积:ROC 曲线图的横坐标为 FPR,纵坐标为 TPR,根据不同阈值下的 [FPR, TPR] 点对 ROC 曲线进行绘制。

  • 计算AUC
  1. 将outputs通过Softmax先转换成概率分布(参考我们的另一篇文章),得到 [[0.4955, 0.5045], [0.4977, 0.5023]]。

  2. 将 outputs 看成 one-hot 格式,得到预测样本为正类(1)对应的的概率是:[0.5045, 0.5023]。

  3. 将 [0.5045, 0.5023] 作为两个阈值,讨论当阈值分别为 ∞、0.5045 和 0.5023 时,正负样本的预测情况。

    1. 阈值的作用
      在二分类问题中,模型输出的分数通常表示样本属于正类的概率或相关性。我们可以通过设置不同的阈值来决定样本是被预测为正类还是负类:如果预测分数高于/等于阈值(sklearn.metrics.roc_curve),我们将样本分类为正类;如果预测分数低于阈值,我们将样本分类为负类。

    2. 具体过程如下
      1> 阈值为 ∞ 时,两个样本均为负类。
      2> 阈值为 0.5045 时,第一个样本:分数为 0.5045,等于阈值,所以预测为正类;第二个样本:分数为 0.5023,低于阈值,所以预测为负类。
      3> 阈值为 0.5023 时,第一个样本:分数为 0.5045,高于阈值,所以预测为正类;第二个样本:分数为 0.5023,等于阈值,所以预测为正类。

  4. 计算不同阈值下的 TPR、FPR 分别是多少(真实标签为 [0, 1])
    1> 阈值为 ∞ 时,预测标签为 [0, 0],TPR=0,FPR=0。
    2> 阈值为 0.5045 时,预测标签为 [1, 0],TPR=0,FPR=1。
    2> 阈值为 0.5023 时,预测标签为 [1, 1],TPR=1,FPR=1。

  5. 根据上面的三个点绘制 ROC 曲线(横坐标:FPR,纵坐标:TPR),根据阈值从大到小,三个点分别为(0, 0)、(1, 0)、(1, 1)。

  6. 绘制出的 ROC 曲线的曲线下面积为 0, 所以 AUC=0。

⭐只有在多分类问题下面,讨论 macro / micro / weighted AUC 的区别才有意义。因为如果是二分类问题,只会有一组正类和负类、一条ROC曲线。计算普通的 average/macro AUC 即可。多分类问题下,每个正类都画一条 ROC 曲线,然后选择不同的方法(macro / micro / weighted),得到最终多分类的 ROC 曲线,从而计算 AUC。

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

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

相关文章

PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”

未检测到您服务器环境中的 sqlite3 数据库扩展,在此温馨提示您,请认真检查 php.ini 配置文件中是否已经成功开启该扩展! 另外,值得注意的是,已经检测到您的服务器支持 pdo_sqlite 扩展,在此情况下,您也可以考虑修改数据库配置的连接驱动为 pdo_sqlite 来尝试解决问题!扫…

场景题:如何提升Kafka效率?

Kafka 以其高吞吐量、低延迟和可扩展性而备受青睐。无论是在实时数据分析、日志收集还是事件驱动架构中,Kafka 都扮演着关键角色。 但是,如果 Kafka 使用不当,也可能会面临性能瓶颈,影响系统的整体效率。所以,了解如何提升 Kafka 的运行效率?对于生产环境的使用和面试都是…

redis-缓存崩溃

缓存崩溃 作者:w08eredis实战之各种崩溃 雪崩 击穿 穿透 以及预热缓存雪崩 回答话术 缓存雪崩是应用系统指在某个时间点上,缓存中的大部分数据同时失效,导致大量的请求直接访问底层数据库或后端服务,从而造成数据库负载剧增,甚至导致数据库崩溃的情况。通常情况下,缓存中…

Guava工具总结

Table双键Map public class OTest {public static void main(String[] args) {Map<String, Map<String, Integer>> map = new HashMap<>();//存放元素Map<String, Integer> workMap = new HashMap<>();workMap.put("Jan", 20);workMap…

发那科机器人程序备份

备份机器人程序选择到U盘目录新建文件夹进行备份加载备份的程序进入U盘目录 同备份手法 加载备份程序

B 端产品未来几年的发展趋势XG

在当今数字化高速发展的时代,B 端产品经理作为企业数字化转型的关键推动者,肩负着重大的责任。不仅要深入了解企业的业务需求,还要紧跟技术发展的步伐,为企业提供高效、创新的解决方案。那么,未来几年,B 端产品领域将会呈现出哪些发展趋势呢?一、人工智能与机器学习的深…

Clobotics 计算机视觉场景存储实践:多云架构、 POSIX 全兼容、低运维的统一存储HB

Clobotics 是一家将计算机视觉和机器学习技术应用于风电以及零售行业的企业。在风电行业,Clobotics 利用无人机对风力发电机叶片进行检查,显著降低了对人工作业的依赖。在零售领域,公司通过分析捕获的包装商品图像来提供基于实时数据的洞察,以增加销售额并减少运营成本。 存…

uni-app之camera组件-人脸拍摄i6

小程序录制视频;10-30秒;需要拍摄人脸,大声朗读数字(123456)这种。 1.camera组件 camera页面内嵌的区域相机组件。注意这不是点击后全屏打开的相机 camera只支持小程序使用;官网链接1.2 效果图1.3 页面布局 camera 设置宽100%,高度通过uni.getSystemInfo获取,全屏展示。…

怎样打开windows自动更新,打开电脑更新的步骤及方法

清理C盘是维护电脑性能的重要步骤,但需要注意方法以避免对电脑造成不良影响。以下是一份详细的C盘清理教程及方法,旨在帮助您安全有效地释放C盘空间: 一、备份重要数据 步骤:在开始清理前,请确保您已备份C盘上的重要个人文件和系统设置,以防误删或意外情况导致数据丢失。…

GPU虚拟化技术简介:实现高性能图形处理的灵活部署

GPU虚拟化技术是一项重要的创新,通过将物理GPU划分为多个虚拟GPU,实现多用户共享和独立运行图形处理任务的能力。本文介绍了GPU虚拟化技术的基本原理、应用场景和优势。该技术在云计算、虚拟桌面基础设施和科学研究等领域具有广泛应用。GPU虚拟化技术提高了资源利用率、性能和…

二. Spring Boot 中的 “依赖管理和自动配置” 详解透彻到底(附+详细代码流程)sh

二. Spring Boot 中的 “依赖管理和自动配置” 详解透彻到底(附+详细代码流程) @ 目录* 二. Spring Boot 中的 “依赖管理和自动配置” 详解透彻到底(附+详细代码流程)1. 如何理解 “ 约定优于配置 ” 2. Spring Boot 依赖管理 和 自动配置2.1 Spring Boot 的依赖管理2.1.1…

从代码到产品,我的IT职业成长之路yW

每个人的职业生涯都是一段充满转折和挑战的旅程,当然每一次职业转型都是一次重新定义自己的机会,从2015年开始,当时我刚踏入IT行业,成为一名Java开发者,后来随着时间的推移,我的职业方向逐渐转向了前端开发者,埋头于代码的世界。最终在2018年找到了属于自己的职业定位—…