【机器学习300问】47、如何计算AUC?

一、AUC是什么?

(1)文绉绉的定义

        AUC=Area Under the Curve中文直译叫“曲线下面积”,AUC名字里面的Curve曲线指的就是ROC曲线,关于ROC曲线的相关知识我已经在之前的文章中详细说过了,有需要的友友可以点击下面的链接先去补充知识:【机器学习300问】46、什么是ROC曲线?

        AUC就相当于这条ROC曲线下面的阴影面积,它提供了整体性能的一个量化指标。AUC值为1表示完美的分类器,而AUC值为0.5则表示分类效果跟随机猜测一样。AUC是一种不受具体分类阈值影响的模型评估指标。

(2)有趣的比喻

        假如你是一个守门员,在你面前有许多足球,其中一些足球的轨迹是要射向门(正类),而其他的球不会射向球门(负类)。现在你要猜出哪些球射向球门并做出扑救。

        AUC就是衡量在不同情况下你识别出射向球门球的能力,同时避免对不会射向球门的球做出反应。如果你每次都能正确判断哪些球会来射门并成功防守,而忽略那些不会射门的球,你就有了完美的防守记录(AUC = 1)。但如果你像是随机猜测一样捕捉球(就像瞎子守门员),你的平均记录就和掷硬币一样(AUC = 0.5),防守成功的几率和失败的几率是一样的。

二、AUC怎么算?

(1)对于离散的ROC曲线(非常少见)

        通过将ROC曲线分割成一系列的小矩形或者梯形近似估算其面积,使用几何公式来直接计算多边形下的面积。在现实中,这种情形比较少见。

(2)对于连续的ROC曲线(实际大多如此)

        使用数值积分方法如梯形法则等进行计算。具体来说,在ROC曲线上以FPR为横坐标,以TPR为纵坐标,沿着FPR由0到1定积分,积分函数本身是TPR以FPR为自变量的函数。通过这个积分过程我们实际上得到的是曲线与横轴围成的面积。

  • 定积分公式:

\int_{a}^{b} f(x) \, dx

  • 定积分用于计算AUC,通常采用数值方法来求解,如梯形法则,这个方法适用于计算离散数据点下面积的情形,公式如下:

AUC = \sum_{i=1}^{n-1} \frac{(x_{i+1} - x_i) \cdot (y_i + y_{i+1})}{2}

x_{i}x_{i+1}相邻两个点的 FPR 值
y_{i}y_{i+1}相邻两个点的 TPR 值
n数据点的数量
  • 哪用得着这么麻烦,直接利用已有的库就行。比如sklearn库的roc_auc_score函数。

三、AUC计算完成后该做些什么?

        当然是评估模型和比较不同模型的性能啦!由于ROC曲线一般都处于y=x的上方,如果在下方,可以把分类器预测的概率变成1-p就可以得到新的分类器,这个分类器的效果肯定更好。所以AUC取值一般在0.5到1之间,AUC越接近1说明模型分类的性能越好!

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

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

相关文章

CI/CI实战-jenkis结合gitlab 4

实时触发 安装gitlab插件 配置项目触发器 生成令牌并保存 配置gitlab 测试推送 gitlab的实时触发 添加jenkins节点 在jenkins节点上安装docker-ce 新建节点server3 安装git和jdx 在jenkins配置管理中添加节点并配置从节点 关闭master节点的构建任务数

[Java安全入门]六.CC3

一.前言 前几天学了一下cc1和cc6,对于我来说有点小困难,不过经过几天沉淀,现在也是如拨开云雾见青天,经过一上午的复习对cc1和cc6又有深入的了解。所以,今天想多学一下cc3。cc3执行命令的方式与cc1和cc6不一样&#x…

C#基础-标识符命名规则

目录 1、标识符定义 2、遵循规则 3、标识符的例子 4、MSDN中英文解释 英文

Debezium日常分享系列之:Debezium2.5稳定版本之Monitoring

Debezium日常分享系列之:Debezium2.5稳定版本之Monitoring 一、Snapshot metrics二、Streaming metrics三、Schema history metrics Debezium系列之:安装jmx导出器监控debezium指标 除了 Zookeeper、Kafka 和 Kafka Connect 提供的对 JMX 指标的内置支持…

革新水库大坝监测:传统软件与云平台之比较

在水库大坝的监测管理领域,传统监测软件虽然曾发挥了重要作用,但在多方面显示出了其局限性。传统解决方案通常伴随着高昂的运维成本,需要大量的硬件支持和人员维护,且软件整合和升级困难,限制了其灵活性和扩展性。 点击…

Neo4j桌面版导入CVS文件

之后会出来一个提示框,而且会跳出相关文件夹: 然后我们将CSV文件放在此目录下: 我们的relation.csv是这样的 参见: NEO4J的基本使用以及桌面版NEO4J Desktop导入CSV文件_neo4j desktop使用-CSDN博客

C++11:左值与右值|移动构造|移动赋值

​ 🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:マイノリティ脈絡—ずっと真夜中でいいのに。 0:24━━━━━━️💟──────── 4:02 🔄 …

MySQL表内容的增删查改

在前面几章的内容中我们学习了数据库的增删查改,表的增删查改,这一篇我们来学习一下对表中的内容做增删查改。 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 1.创建Create 我们先创建…

Zabbix Web界面中文汉化

要想达到上图的效果,第一步先查看 /usr/share/zabbix/assets/fonts/ [rootservice yum.repos.d]# ll /usr/share/zabbix/assets/fonts/ 总用量 0 lrwxrwxrwx. 1 root root 33 3月 23 16:58 graphfont.ttf -> /etc/alternatives/zabbix-web-font 继续查看graph…

基于霍夫检测(hough变换)的人眼瞳孔定位,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

es 集群开机自动启动

前面搭建了 es 集群,但是每次机器重启 都需要手动启动,很麻烦,所以这里介绍一下开机自动启动 首先使用 root 用户 es : 执行以下命令 vim /etc/init.d/elasticsearch 将以下内容 cv 进去 #!/bin/bash #chkconfig: 345 63 …

vue实现饼图渲染的步骤

1) 创建一个DOM对象,有自定义的高和宽. 2) 引入Echarts软件包并导入到对应文件内 npm i Echarts import 文件.js script src.../文件 3) 初始化一个对象 4) 对象的方法实现饼图渲染 data内的数据,且当一个对象已经渲染一遍,再执行这个,会对setOption的参数进行更新,其…

Linux的学习之路:2、基础指令(1)

一、ls指令 上篇文章已经说了一点点的ls指令,不过那还是不够的,这篇文章会介绍更多的指令,最起码能使用命令行进行一些简单的操作,下面开始介绍了 ls常用选项 -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -d…

02课程发布模块之部署Nginx

部署Nginx 部署网关 通过Nginx访问后台网关,然后由网关再将请求转发到具体的微服务,网关会把请求转发到具体的服务 upstream gatewayserver{server 127.0.0.1:63010 weight10; } # 网站首页对应的虚拟机 server {listen 80;server_name www.51xuecheng.cn…

Yoast插件:您的WordPress网站SEO优化利器

在之前的文章中我们介绍了如何低成本使用WordPress来搭建个人网站,相信很多朋友都希望自己的网站能够被搜索引擎所收录,并获得更高的排名,从而吸引更多的流量和用户。如果是的话,您需要了解SEO(搜索引擎优化&#xff0…

使用git+ssh访问github,避免下载资源失败

一、创建github账户之后,记住注册邮箱和账户名 我的邮箱:yuanyan23mails.ucas.ac.cn 账户名:thekingofjumpshoot 下边的相关位置需要用自己的邮箱和用户名替代 二、输入本地生成秘钥和公钥命令,并且生成公私钥对 ssh-keygen …

初识进程的地址空间、页表

一、&#x1f31f;问题引入 &#x1f6a9;代码一&#xff1a; #include<stdio.h>#include<unistd.h>int g_val100;int main(){pid_t idfork();if(id0){//子进程while(1){printf("I am a child pid:%d ppid:%d g_val:%d\n",getpid(),getppid(),g_val);…

单元测试框架 Junit

目录 什么是Junit&#xff1f; Junit的基础注解有哪些&#xff1f; 什么是参数化&#xff1f;参数化通过哪几种方式传输数据&#xff1f; 单参数 多参数 CSV文件获取参数 方法获取参数 测试用例执行顺序如何控制&#xff1f; 什么是断言assert&#xff1f;Assertions类…

18、【qlib】【其他组件/特性/主题】序列化

序列化 简介 Qlib支持将DataHandler、DataSet、Processor、Model等组件的状态保存至磁盘并重新加载。 可序列化类 Qlib提供了一个基础类qlib.utils.serial.Serializable,其状态可以以pickle格式保存到磁盘或从磁盘加载。当用户将一个Serializable实例的状态dump至磁盘时,…

JVM面试专题

文章目录 JVM 内存模型及分区1. 堆区&#xff08;Heap&#xff09;2. 栈区&#xff08;Stack&#xff09;3. 方法区&#xff08;Method Area&#xff09;4. 本地方法栈&#xff08;Native Method Stack&#xff09;5. 程序计数器&#xff08;Program Counter&#xff09; 堆内存…