西瓜书机器学习AUC与ℓ-rank(loss)的联系理解以及证明(通俗易懂)

前言

在学习到这部分时,对 ℓ-rank 以及AUC的关系难以理解透彻,在网上看到其他博主也并未弄明白,大家大多写自己的理解,我希望您在看完这篇文章时能够深刻理解这二者的关系,如果我的理解有误,希望您在评论区指正,给出您的见解。

首先理解什么是AUC?

首先理解什么是ROC曲线,ROC曲线如何绘制?

ROC曲线,即接收者操作特征曲线(Receiver Operating Characteristic Curve),反映了在不同分类阈值下真正类率(TPR)和假正类率(FPR)的变化情况。

绘制ROC曲线的过程如下:

  1. 给定m+个正例和m-个反例,首先将分类的阈值设置到最大,此时所有的例子预测结果都是反例,此时真正例率和假正例率均为0,在坐标原点(0,0)处标记一个点。
  2. 然后,逐步降低阈值,每次降低都将导致更多的样例被划分为正例。对于每个降低的阈值,计算当前的真正例率和假正例率,并在ROC图上标记相应的点。
  3. 最后,用线段连接这些点,即得ROC曲线。

通俗地说,分类阈值就像一个“门槛”,数据样本需要通过这个“门槛”才能被归类到某个类别中。在二分类问题中,模型通常会为每个样本输出一个概率值,表示该样本属于正例(比如:某种疾病的患者)的概率。这时,我们就需要选择一个阈值,来决定当这个概率达到多少时,我们就认为这个样本是正例。

例如,如果我们设定阈值为0.5,那么当模型输出的概率(概率就是模型对一个例子的判断,比如说10%可能是正例,90%是反例)大于或等于0.5时,我们就认为这个样本是正例(那么刚才认为10%为正例就不被认为是正例);如果小于0.5,则认为是负例(比如:非疾病患者)。

我们所做的就是逐渐把开始设定的正例阈值从100%逐渐降低到0。然后看模型的结果被划分为真正例与假正例的结果。(比如,有个正例,机器给的判断是50%概率是正例,那么他就会在之后我们把阈值降到50%时被纳入正例,此时,这是一个正例,模型判断也为正例,那么就被纳入真正例,如果是这是一个反例,模型给出50%概率的正例,那么此时应该别纳入假正例)。

在绘制ROC曲线时,我们会使用多个不同的阈值来计算真正例率(True Positive Rate,TPR)和假正例率(False Positive Rate,FPR)。TPR表示实际为正例的样本中被预测为正例的比例,而FPR表示实际为负例的样本中被错误地预测为正例的比例。通过改变阈值,我们可以得到不同的TPR和FPR组合,从而绘制出ROC曲线。

具体来说,从(0,0)开始,对于给定的m1个正例和m2个反例,根据预测结果进行排序,依次将这些样例划分为正例。若为**真正例,则y值增加1/m1,否则x值增加1/m2。**最后,将这些点连线,所得到的面积就是AUC。
在这里插入图片描述

什么是AUC

AUC(Area Under the Curve)曲线则是基于ROC曲线计算得到的。AUC值表示ROC曲线下的面积,用于量化评估模型的性能。AUC值越接近1,表示模型的性能越好。

ℓ-rank

在这里插入图片描述
先看这个表达式,我们需要理解一些东西

m+与m -, D +与D-,II

m +与m -分别对应正例与反例的个数。
D+与D-分别对应正例集与反例集。
II(罗马数字2),如果在II后括号中的为正确表达式,那么返回1,否则返回0。

f函数

f函数可以认为是被判断出来的先后,如果例子被先判断出来,那么函数的值大,反之就小
ℓ-rank被称为排序损失,为什么要叫排序损失呢?
我们不妨看看刚才的ROC曲线
如果是正例,那点就在上边,如果是反例,就在上一个点的右边,所以咱们最好的情况就是上来把所有的正例全部找出来,就是ROC曲线一直向上,最后才开始向右走。在这里插入图片描述
AUC表明的其实是一种顺序关系,即是在增大分类阈值(也就是让模型判断出来多少正例)时,正例会比反例被早判断出来的概率,也就是对正例的辨别能力,那这是如何在ROC曲线上体现出来的呢?我们以这个图的第二个点 为例子(假设它的坐标为(0.1)),我们可以发现在这个点的右侧,每一格(m,1)在ROC图线上都有对应的点,每个对应的点都是反例,这些反例就是在之后被发现的,因为从左下到右上,是分类阈值逐渐变大的过程,也就是相对偏后,那么,以我们这张图为例,在点(0,1)的右边的(20 - 0)* 1的矩阵(总共有20格)就是在指定阈值下正例比反例早被发现的概率(概率 需要归一化)。欸,那把所有的点的右侧部分的面积加起来归一化,不就是AOC,不就是正例比反例早发现的概率?在这里插入图片描述
同理可得,在上边我们可以知道,一个点垂直向上形成的单位宽度的矩阵就是对于一个反例来说,它比部分正例早发现的概率(需要归一化)。
于是,AUC曲线的另一种表示形式应为在这里插入图片描述

AUC = 1 - ℓ-rank

那么我们可以很轻易发现AUC与ℓ-rank的关系了,对于我们画的图AUC是右下侧,ℓ-rank是左上侧。
但是书上的还写了一个1/2 的等于项,这是为什么呢?

1/2项的来历

我们说到,ROC图线是不断增加阈值画点连线做成的图,那么他不一定是一个个例子来的,有可能阈值从1% -> 2%增加了两个例子,这两个例子得到的结果是,一个真正例,一个假正例,这导致真正例,假正例都增加了,这就形成了一个斜着的线,在左上,右下就形成了一个三角形,这就是1/2项的来历,此时,AUC也要加一个1/2的等于项。

证明请添加图片描述

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

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

相关文章

论文翻译 - HotFlip: White-Box Adversarial Examples for Text Classification

论文链接:https://aclanthology.org/P18-2006.pdf 项目代码:https://github.com/AnyiRao/WordAdver HotFlip: White-Box Adversarial Examples for Text Classification Abstract1 Introduction2 Related Work3 HotFlip3.1 Definitions3.2 Derivatives o…

JAVA实战开源项目:无代码动态表单系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 动态类型模块2.2 动态文件模块2.3 动态字段模块2.4 动态值模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 动态类型表3.2.2 动态文件表3.2.3 动态字段表3.2.4 动态值表 四、系统展示五、核心代码5.1 查询档案类型5.…

21.python——模块引用

一、语法 *import import <模块名> as <别名> *from...import... from <模块名> import <对象、函数...> 用在不同文件中引用函数 from <模块名> import * #引用该模块中所有函数

MySQL面试题之基础夯实

一、mysql当中的基本数据类型有哪些 MySQL中的基本数据类型包括但不限于以下几大类&#xff1a; 数值类型&#xff1a; 整数类型&#xff1a;TINYINT、SMALLINT、MEDIUMINT、INT&#xff08;INTEGER&#xff09;、BIGINT浮点数类型&#xff1a;FLOAT、DOUBLE、DECIMAL&#xf…

实现接口自动化测试

最近接到一个接口自动化测试的case&#xff0c;并展开了一些调研工作&#xff0c;最后发现&#xff0c;使用pytest测试框架并以数据驱动的方式执行测试用例&#xff0c;可以很好的实现自动化测试。这种方式最大的优点在于后续进行用例维护的时候对已有的测试脚本影响很小。当然…

【NC16589】机器翻译

题目 机器翻译 先进先出 ( F I F O ) (FIFO) (FIFO) 的内存置换算法、队列、哈希表 思路 题目很直观&#xff0c;有一个大小受限的内存&#xff0c;如果内存没装满就装&#xff0c;装满了则将最先装入的那一块换掉&#xff0c;再装新的。 这是一种先进先出 ( F I F O ) (FI…

基于SWAT-MODFLOW地表水与地下水耦合实践技术教程

原文链接&#xff1a;基于SWAT-MODFLOW地表水与地下水耦合实践技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598169&idx3&sn16d726694ca77f9cda3aa95716a18cc1&chksmfa8201becdf588a846bc1d461b8c985536e6191e7288df035e5bef6fc85b933030f…

【二分查找】算法例题

目录 十八、二分查找 114. 搜索插入位置 ① √- 115. 搜索二维矩阵 ② 116. 寻找峰值 ② √- 117. 搜索旋转排序数组 ② 118. 在排序数组中查找元素的第一个和最后一个位置 ② √ 119. 寻找寻钻排序数组中的最小值 ② 120. 寻找两个正序数组的中位数 ③ 136. 直线上最多…

顺序表的动态分配基本操作

#include <stdio.h> #include <stdlib.h>// 顺序表存储空间动态分配 #define InitSize 10 // 顺序表初始长度 typedef int ElemType; // int类型重命名为ElemType&#xff0c;方便后续调整typedef struct { // 定义结构体ElemType *data; // 用静…

Rust Rocket简单入门

简介 Rust中最知名的两个web框架要数Rocket和Actix了&#xff0c;Rocket更注重易用性&#xff0c;Actix则更注重性能。这里只是了解一下Rust下的WebAPI开发流程&#xff0c;就学一下最简单的 Rocket。 Rocket 是一个用于 Rust 的异步 Web 框架&#xff0c;专注于可用性、安全性…

找工作的经验总结一——渠道与简历

关于简历与面试的经验总结&#xff0c;也可以说是关于找工作的方法论。 这里我们用第一性原理的方法论来分析找工作这件事。 首先&#xff0c;我们的目的是什么&#xff1f; 当然是找工作&#xff0c;不论你是大学刚毕业&#xff0c;还是创业失败&#xff0c;或者是在家闲着…

python网络爬虫实战教学——urllib的使用(1)

文章目录 专栏导读1、前言2、urllib的使用3、发送请求3.1 urlopen3.2 request 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对…

113 链接集10--ctrl+左键单击多选

1.ctrl+左键单击多选,单击单选 精简代码 <div class="model-list"><div@mousedown.prevent="handleClick(item, $event)"class="model-list-item"v-for="item in modelList":key="item.id":class="{ model-a…

[leetcode] 45. 跳跃游戏 II

文章目录 题目描述解题方法贪心java代码复杂度分析 题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0…

C语言例3-28:位逻辑运算的例子

一、计算机中数值的表示 1. 二进制位与字节 计算机的内存是由许多称为字节的单元组成的。1字节由8个二进制位&#xff08;bit&#xff09;组成。每个二进制位的值为0或1。最右端的一位称为“最低位”&#xff0c;编号为0&#xff1b;最左端的一位称为“最高位”&#xff0c;编…

重装系统后鼠标识别不了咋办

不知道大家在重装系统时,有没有遇到过系统重装完成后,鼠标不能使用的情况。在这种情况下,我们要怎么操作电脑解决这个问题呢?今天就跟大家分享重装系统后鼠标识别不了咋办。 一、主板没有设置兼容usb 在重装系统时,如果主板没有设置兼容usb,就会出现鼠标使用不了的现象。…

模拟计算机和数字计算机

抽象符号只是对现实世界的描述而非模拟&#xff0c;这种描述的还原依赖于人脑对自然世界的物理共识&#xff0c;当你说 “这是山” 这三个简单的字时&#xff0c;听者会还原出一座大山的具象… 人们早在 70 多年前就习惯了以二进制 0 和 1 为基础的数字逻辑&#xff0c;开启了数…

【Docker】-- 如何安装docker

一、安装docker 首先要安装一个yum工具 yum install -y yum-utils 安装成功后&#xff0c;执行命令&#xff0c;配置Docker的yum源&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 最后&#xff0c;执行命令&#x…

XJLS-84/620静态双位置继电器 DC220V 带柜内板前接线底座 JOSEF约瑟

XJLS-84系列静态双位置继电器 系列型号&#xff1a; XJLS-84/023A静态双位置继电器; XJLS-84/132A静态双位置继电器; XJLS-84/203静态双位置继电器; XJLS-84/222A静态双位置继电器; XJLS-84/312A静态双位置继电器; XJLS-84/502静态双位置继电器; XJLS-84/440静态双位置继电器; …

vue3 elementPlus 设置树形报错时 setCheckedKeys of undefined

第一种解决方法 nextTick(async ()>{ treeRef.value!.setCheckedKeys(rows.permissionIds, false) }) 第一种解决方法 onMounted(async () > { treeRef.value!.setCheckedKeys([3], false) }&#xff09;