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

2024-03-15 07:52

本文主要是介绍西瓜书机器学习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的等于项。

证明请添加图片描述

这篇关于西瓜书机器学习AUC与ℓ-rank(loss)的联系理解以及证明(通俗易懂)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811282

相关文章

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]