一文理解机器学习中二分类任务的评价指标 AUPRC 和 AUROC

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


在机器学习的二分类任务中,评估模型性能是至关重要的一步。两种常用的评价指标是 Precision-Recall Curve 下的面积 (AUPRC)Receiver Operating Characteristic Curve 下的面积 (AUROC)。本博客将深入分析这两种评价指标,包括它们的定义、计算方法、优缺点,以及在实际应用中的适用场景。

在这里插入图片描述

一、基本定义

1.1 Receiver Operating Characteristic Curve 和 AUROC

ROC 曲线是一种通过绘制真正例率(True Positive Rate, TPR)与假正例率(False Positive Rate, FPR)来评估分类模型性能的图形工具。AUROC 则是 ROC 曲线下的面积,取值范围为 0 到 1,值越大表示模型性能越好

  • 真正例率 (TPR):也称为召回率,计算公式为:

    TPR = TP TP + FN \text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}} TPR=TP+FNTP

  • 假正例率 (FPR):计算公式为:

    FPR = FP FP + TN \text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}} FPR=FP+TNFP

1.2 Precision-Recall Curve 和 AUPRC

Precision-Recall Curve 通过绘制查准率(Precision)与召回率(Recall)来评估模型性能。AUPRC 是查准率 - 召回率曲线下的面积,同样取值范围为 0 到 1,值越大表示模型性能越好。

  • 查准率 (Precision):计算公式为:

    Precision = TP TP + FP \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} Precision=TP+FPTP

  • 召回率 (Recall)

    TPR = TP TP + FN \text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}} TPR=TP+FNTP

二、计算方法

2.1 ROC 曲线和 AUROC 的计算

  1. 阈值选择:模型输出通常为概率或评分,通过设定不同的阈值,将概率转化为二分类结果。
  2. 计算 TPR 和 FPR:对于每一个阈值,计算对应的TPR 和 FPR
  3. 绘制曲线:以 FPR 为横轴,TPR 为纵轴,绘制不同阈值下的点,连接成 ROC 曲线。
  4. 计算面积:AUROC 通过数值积分等方法计算 ROC 曲线下的面积。

2.2 Precision-Recall 曲线和 AUPRC 的计算

  1. 阈值选择:与 ROC 曲线相同。
  2. 计算 Precision 和 Recall:对于每一个阈值,计算对应的查准率和召回率
  3. 绘制曲线:以 Recall 为横轴,Precision 为纵轴,绘制不同阈值下的点,连接成 PR 曲线。
  4. 计算面积:AUPRC 通过数值积分等方法计算 PR 曲线下的面积。

三、比较与对比

3.1 适用场景

  • AUROC:适用于类别分布较为平衡的场景,能够全面反映模型在各个阈值下的表现。
  • AUPRC:在类别不平衡(即正负样本比例悬殊)的情况下更为有效,因为它更关注正类的表现。

3.2 对类别不平衡的敏感性

  • AUROC:在类别高度不平衡时,AUROC 可能会高估模型的性能,因为假正例率容易受到大量负类样本的影响。
  • AUPRC:由于查准率直接反映了正类的预测准确性,AUPRC 在处理不平衡数据时更能真实反映模型的效果。

3.3 信息利用

  • AUROC:考虑了所有可能的阈值,全面反映模型的区分能力。
  • AUPRC:更关注正类的预测表现,对于实际需要高查准率或高召回率的应用场景更具指导意义。

3.4 数值解释

  • AUROC:等同于随机选取一个正例和一个负例,模型将正例评分高于负例的概率。
  • AUPRC:无法直接与概率解释关联,但更直观地反映了模型在预测正类时的准确性和全面性

四、优缺点分析

4.1 AUROC

优点

  • 综合考虑所有阈值下的性能,全面评估模型的区分能力。

  • 对类别平衡和不平衡数据均适用。

缺点

  • 在类别极度不平衡时,可能会掩盖模型在少数类上的不足。

  • 对假正例率较为敏感,可能导致对实际关注的正类性能评价不足。

4.2 AUPRC

优点

  • 在类别不平衡时表现更好,能够更准确反映正类的预测性能。

  • 对查准率和召回率的变化更敏感,适用于需要高查准率或高召回率的任务。

缺点

  • 只关注正类,忽略了负类的预测情况,可能不全面。

  • 难以进行概率解释,不如 AUROC 直观。

五、实际应用中的选择

在选择使用 AUROC 还是 AUPRC 时,应根据具体问题的需求和数据分布特点进行权衡:

  • 类别平衡:如果数据集中的正负类比例较为均衡,AUROC 和 AUPRC 都可以使用,但 AUROC 更为常见
  • 类别不平衡:当正类样本远少于负类样本时,AUPRC 更能准确反映模型的实际性能,推荐使用。
  • 应用需求:如果任务对正类预测的准确性(查准率)和全面性(召回率)有明确要求,AUPRC 更为合适;若需要综合评估模型的整体区分能力,AUROC 则更适用。

六、实例分析

假设我们有一个疾病预测模型,用于预测罕见疾病(正类样本较少)。在这种情况下:

  • 使用 AUROC 可能会得到较高的分数,即使模型在正类预测上表现不佳,因为负类样本众多,假正例率低。
  • 使用 AUPRC 能够更真实地反映模型在检测疾病患者(正类)时的效果,避免被大量负类样本掩盖。

因此,在这种医疗诊断的场景下,AUPRC 是更合适的评价指标

七、总结

Area Under the Precision-Recall Curve (AUPRC) 和 Area Under the Receiver Operating Characteristic Curve (AUROC) 是评估二分类模型性能的两个重要指标。AUROC 适用于全面评估模型的区分能力,尤其在类别分布较为平衡时很适合;AUPRC 在处理类别不平衡问题时更具优势,能够更准确地反映模型在少数类上的预测性能。选择合适的评价指标应结合具体应用场景和数据特性,确保模型评估的准确性和有效性。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio Code(VS Code)配置C/C++环境

一、Visual Studio Code安装 Visual Studio Code,下文中简称为VS Code的详细安装方法请参考VSCode安装教程(超详细)-CSDN博客 二、MinGW编译器下载与配置 1、MinGW介绍 MinGW(Minimalist GNU for Windows)是一款用于Windows 平台的轻…

少儿编程在线培训系统:客户服务与学习支持

2.1 VUE技术 VUE它是由HTML代码,配上嵌入在HTML代码里面的Java代码组成的应用于服务器端的语言,使用VUE进行开发能够更加容易区分网页逻辑以及网页设计内容,让程序员开发思路更加清晰化,VUE在设计组件时,它是可以重用的…

uniapp Native.js原生arr插件服务发送广播到uniapp页面中

前言 最近搞了个设备,需求是读取m1卡,厂家给了个安卓原生demo,接入arr插件如下,接入后发现还是少了一部分代码,设备服务调起后触发刷卡无法发送到uniapp里。 中间是一些踩坑记录,最后面是解决办法&#xf…

C项目 天天酷跑(下篇)

上篇再博客里面有&#xff0c;接下来我们实现我们剩下要实现的功能 文章目录 碰撞检测 血条的实现 积分计数器 前言 我们现在要继续优化我们的程序才可以使这个程序更加的全面 碰撞的检测 定义全局变量 实现全局变量 void checkHit() {for (int i 0; i < OBSTACLE_C…

HarmonyOS NEXT 实战之元服务:静态案例效果--航空出行

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; import { authentication } …

福特汽车物流仓储系统WMS:开源了,可直接下载

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家到本文底部评论区留言。 近日&#xff0c;福特汽车公司推出了其广受好评的仓库管理系统GreaterWMS&#xff08;更大仓库管理系统&#xff09;的开源版本&#xff0c;意味着各行…

STM32完全学习——FLASH上FATFS文件管理系统

一、需要移植的接口 我们通过看官网的手册&#xff0c;可以看到我们只要完成下面函数的实现&#xff0c;就可以完成移植。我们这里只移植前5个函数&#xff0c;获取时间的函数我们不在这里移植。 二、移植接口函数 DSTATUS disk_status (BYTE pdrv /* Physical drive nmuber…

pyqt5冻结+分页表

逻辑代码 # -*- coding: utf-8 -*- import sys,time,copy from PyQt5.QtWidgets import QWidget,QApplication, QDesktopWidget,QTableWidgetItem from QhTableWidgetQGN import Ui_QhTableWidgetQGN from PyQt5.QtCore import Qt from PyQt5 import QtCore, QtGui, QtWidgets…

Windows 使用 非安装版MySQL 8

1.下载MySQL 8 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.40-winx64.zip 2.创建my.ini 下载解压后&#xff0c;发现根目录没有my.ini文件&#xff0c;需手动创建 my.ini # For advice on how to change settings please see # http://dev.mysql.com/doc/refma…

海外招聘丨 苏黎世联邦理工学院—机器学习在社会和政治科学中的应用博士后

雇主简介 苏黎世联邦理工学院是世界领先的科技大学之一。我们以优质的教育、尖端的基础研究和将新知识直接转化为社会而闻名。来自 120 多个国家的 30,000 多名学生认为我们的大学是一个鼓励独立思考和激励卓越的环境的地方。 我们位于欧洲中心&#xff0c;但与世界各地建立联…

微信小程序中遇到过的问题

记录微信小程序中遇到的问题&#xff08;持续更新ing&#xff09; 问题描述&#xff1a;1. WXML中无法直接调用JavaScript方法。2. css中无法直接引用背景图片。3. 关于右上角胶囊按钮。4. 数据绑定问题。5. 事件处理问题。 问题描述&#xff1a; 1. WXML中无法直接调用JavaSc…

idea 8年使用整理

文章目录 前言idea 8年使用整理1. 覆盖application配置2. 启动的时候设置编辑空间大小&#xff0c;并忽略最大空间3. 查询类的关系4. 查看这个方法的引用关系5. 查看方法的调用关系5.1. 查看被调用关系5.2. 查看调用关系 6. 方法分隔线7. 选择快捷键类型8. 代码预览插件9. JReb…

RAGFLOW使用笔记【更新ing】

0.引言 本文记录使用RAGFLOW的一些问题以及解决办法&#xff0c;它以笔记的形式存在&#xff0c;方便我以后回顾自己的学习工作。 1.RAGFLOW上传文件大小默认是128M,如何修改上传文件大小&#xff1f; 更新ragflow/docker/.env中的MAX_CONTENT_LENGTH 环境变量 然后同步更新…

ubuntu22.04安装PaddleX3

PaddleOCR 安装过程可以参考PaddleX本地安装教程 我的电脑环境配置&#xff1a; ubuntu22.04 cuda11.8&#xff08;之前安装的是12.4没有匹配的paddle-gpu;这里改成11.8&#xff09; 一、安装基础环境 1、 conda create -n ppx1 python3.10 2、 conda activate ppx1 3、…

Android 之 Activity 的启动模式(launchMode)

一、Activity 启动模式 在实际项目中&#xff0c;应该根据项目的实际需要来为每个 Activity 指定恰当的启动模式 launchMode。启动模式一共有四种&#xff0c;分别是 standard、singleTop、singleTask 和 singleInstance。可以在 AndroidManifest.xml 中通过给 <activity&g…

软件老化分析

软件老化 课程&#xff1a;软件质量分析 作业 解答 Python代码如下&#xff1a; n int(input("类别数&#xff1a;")) theta list(map(float, input("各个类别的权重&#xff1a;").split())) m list(map(int, input("各个类别的度量元数量&…

Jenkins 构建流水线

在 Linux 系统上安装 Jenkins 服务&#xff0c;以及配置自动化构建项目 前置准备环境&#xff1a;docker、docker-compose、jdk、maven 一、环境搭建 1. Jenkins 安装 &#xff08;1&#xff09;拉取镜像 # 安装镜像包&#xff0c;默认安装最新版本 docker pull jenkins/jen…

5G学习笔记之Non-Public Network

目录 0. NPN系列 1. 概述 2. SNPN 2.1 SNPN概述 2.2 SNPN架构 2.3 SNPN部署 2.3.1 完全独立 2.3.2 共享PLMN基站 2.3.3 共享PLMN基站和PLMN频谱 3. PNI-NPN 3.1 PNI-NPN概述 3.2 PNI-NPN部署 3.2.1 UPF独立 3.2.2 完全共享 0. NPN系列 1. NPN概述 2. NPN R18 3. 【SNPN系列】S…

若依plus apifox导入接口显示为空

项目已经正常启动 访问接口有些没问题&#xff0c;有些有问题 其他模块都可以正常导入 解决&#xff1a;

elementPlus消息组件多按钮案例

let customClass zsl-el-message-box efb.messageBox({title: 操作提示,showConfirmButton: false,customClass,message: efb.VNode(div, null, [efb.VNode(style, null, .${customClass} .el-message-box__message {width: 100%;}),efb.VNode(div, null, hello world),efb.VN…