分位数损失和分位数回归

news2024/10/13 2:16:46

分位数损失和分位数回归

了解如何调整回归算法来预测数据的任何分位数

维亚切斯拉夫·埃菲莫夫

走向数据科学

维亚切斯拉夫·埃菲莫夫

·

跟随

出版于

走向数据科学

·
6 分钟阅读
·
1月29日

65

1

一、说明

        右退出是一项机器学习任务,其目标是根据一组特征向量预测真实值。存在多种回归算法:线性回归、逻辑回归、梯度提升或神经网络。在训练期间,这些算法中的每一个都会根据用于优化的损失函数来调整模型的权重。

        损失函数的选择取决于特定任务和需要实现的特定指标值。许多损失函数(如 MSE、MAE、RMSLE 等)专注于预测给定特征向量的变量的期望值。

        在本文中,我们将了解一种称为分位数损失的特殊损失函数,用于预测特定变量分位数。在深入研究分位数损失的细节之前,让我们简要回顾一下分位数这一术语。

二、分位数概念

分位数qₐ 是一个以 α * 100%的数字小于该值且(1 — α ) * 100%的数字大于该值的方式划分给定数字集的值。

α = 0.25α = 0.5α = 0.75的分位数qₐ经常在统计中使用,称为四分位数。这些四分位数分别表示为Q1Q2Q3。三个四分位数将数据分成 4 个相等的部分。

类似地,也存在将一组给定数字除以 100 个等份的百分位数p。百分位数表示为 pₐ,其中 α 是小于相应值的数字的百分比。

四分位数 Q1、Q2 和 Q3 分别对应于百分位数 p25、p50 和 p75。

        在下面的示例中,对于给定的一组数字,找到了所有三个四分位数。

        显示给定数字集的所有三个四分位数的示例。第一个四分位数 Q1 等于 10,因为 25% 的值小于 10,75% 的值大于 10。以此类推到其他四分位数。

三、分位数损失函数

        旨在预测特定变量分位数的机器学习算法使用分位数损失作为损失函数。在讨论公式之前,让我们考虑一个简单的例子。

        想象一个问题,目标是预测变量的第 75 个百分位数。事实上,这一说法相当于预测误差在 75% 的情况下必须为负,而在另外 25% 的情况下必须为正。这就是分位数损失背后的实际直觉。

3.1 公式

分位数损失公式如下所示。α参数是指需要预测的分位数。

分位数损失公式

分位数损失的值取决于预测是小于还是大于真实值。为了更好地理解其背后的逻辑,我们假设我们的目标是预测第 80 个分位数,因此将α = 0.8的值代入方程中。结果,公式如下所示:

基本上,在这种情况下,分位数损失对低估预测的惩罚是高估预测的 4 倍。这样,模型对于低估的错误将更加关键,并且会更频繁地预测更高的值。因此,拟合模型平均在大约 80% 的情况下会高估结果,在 20% 的情况下会产生低估结果。

现在假设获得了对同一目标的两个预测。目标值为 40,而预测值为 30 和 50。让我们计算这两种情况下的分位数损失。尽管两种情况下的绝对误差 10 相同,但损失值不同:

  • 对于 30,损失值为l = 0.8 * 10 = 8
  • 对于 50,损失值为l = 0.2 * 10 = 2

该损失函数如下图所示,显示了当真实值为 40 时α的不同参数的损失值。

相反,如果α的值为 0.2,那么高估的预测将受到比低估的预测多 4 倍的惩罚。

预测某个变量分位数的问题称为分位数回归

3.2 分位数损失例子

        让我们创建一个包含 10 000 个样本的综合数据集,其中视频游戏玩家的评分将根据玩游戏的小时数进行估计。

数据集生成

预测变量(小时)和目标(评级)之间的散点图

让我们按 80:20 的比例分割训练和测试的数据:

按 80:20 的比例分割数据集

        为了进行比较,我们建立 3 个具有不同α值的回归模型:0.2、0.5 和 0.8。每个回归模型都将由 LightGBM 创建,这是一个有效实现梯度提升的库。

        根据官方文档中的信息,LightGBM 允许通过将目标参数指定为'quantile'并传递相应的alpha值来解决分位数回归问题。

        训练 3 个模型后,它们可用于获得预测(第 6 行)。

        使用目标 = '分位数' 训练 LGBM 模型

        让我们通过下面的代码片段可视化预测:

预测变量(小时)与真实/预测目标值之间的散点图

        从上面的散点图可以清楚地看出,α值越大,模型往往会生成更多高估的结果。此外,让我们将每个模型的预测与所有目标值进行比较。

不同模型的预测比较

        这将导致以下输出:

        输出的模式清晰可见:对于任何α ,在大约α * 100%的情况下,预测值都大于真实值。因此,我们可以通过实验得出结论,我们的预测模型工作正常。

分位数回归模型的预测误差在 α * 100%的情况下大约为负,在(1 — α ) * 100%的情况下为正。

四、结论

        我们发现了分位数损失——一种灵活的损失函数,可以合并到任何回归模型中来预测某个变量分位数。基于LightGBM的例子,我们看到了如何调整模型,从而解决分位数回归问题。事实上,许多其他流行的机器学习库允许将分位数损失设置为损失函数。

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

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

相关文章

(2023|AAAI,MS-VQGAN,分层扩散,PyU-Net,粗到细调制)Frido:用于复杂场景图像合成的特征金字塔扩散

Frido: Feature Pyramid Diffusion for Complex Scene Image Synthesis 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. 基础 3. 方法 3.1 学习多尺度感知潜在 …

Blizzard Battle 上使用代理

要在 Blizzard Battle 上使用代理设置,首先需要确保您已经安装了 Blizzard 游戏客户端。下面是一个详细的教程,将带您完成代理设置: 打开 Blizzard 游戏客户端。 在顶部菜单栏中,点击“设置”(即齿轮图标)…

远程开户身份证识别OCR技术:革新传统流程,实现高效身份验证

远程开户是指通过互联网或其他远程通信方式,不需要亲自前往银行、证券公司或其他金融机构的实体营业网点,即可完成开立账户和办理相关服务的过程。 相比传统柜台开户方式,远程开户具有更高的便利性和灵活性。它使得用户可以随时随地通过网络…

Linux权限基础知识

前言:作者也是初学Linux,可能总结的还不是很到位 Linux修炼功法:初阶功法 ♈️今日夜电波:修炼爱情 —林俊杰 0:30━━━━━━️💟──────── 4:47 …

CUDA编程入门系列(二) GPU硬件架构综述

一、Fermi GPU Fermi GPU如下图所示,由16个SM(stream multiprocessor)组成,不同的SM之间通过L2 Cache和全局内存进行相连。整个架构大致分为两个层次,①总体架构由多个SM组成 ②每个SM由多个SP core(stream…

从零开始的C语言学习第二十课:数据在内存中的存储

目录 1. 整数在内存中的存储 2. 大小端字节序和字节序判断 2.1 什么是大小端? 2.2 为什么有大小端? 3. 浮点数在内存中的存储 3.1 浮点数存的过程 3.2 浮点数取的过程 1. 整数在内存中的存储 在讲解操作符的时候,我们就讲过了下⾯的内容&#x…

Day3力扣打卡

打卡记录 改变一个整数能得到的最大差值(贪心) 链接 得到最大的整数,找到一个高位将它修改为 9。同理,想要得到最小的整数,找到一个高位将它修改为 0。 class Solution { public:int maxDiff(int num) {auto replace …

国内首家,极越展示纯视觉城市NOA,正面对决特斯拉FSD

作者 | 德新 编辑 | 王博 10月17日,极越宣布其基于纯视觉的高阶智驾方案,已在上海核心城区跑通城市领航辅助功能,同时官方还首次公布了与百度联合开发的Occupancy占用格栅网络技术。 基于对极越一贯的判断,我们认为,…

一些经典的神经网络(第17天)

1. 经典神经网络LeNet LeNet是早期成功的神经网络; 先使用卷积层来学习图片空间信息 然后使用全连接层来转到到类别空间 【通过在卷积层后加入激活函数,可以引入非线性、增加模型的表达能力、增强稀疏性和解决梯度消失等问题,从而提高卷积…

集成学习方法(随机森林和AdaBoost)

释义 集成学习很好的避免了单一学习模型带来的过拟合问题 根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类: Bagging(个体学习器间不存在强依赖关系、可同时生成的并行化方法) 流行版本:随机森林(random forest)Boosting(个体…

8.strtok函数

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h>int main() {/*----------------------函数解析----------------------*//*函数原型&#xff1a;char* strtok(char* str, char const* sep)*//*函数入参&#xff1a;第一个参数是要分割的…

Layui 主窗口调用 iframe 弹出框模块,获取控件的相应值

var iframeWindow window[layui-layer-iframe index]; iframeWindow.layui.tree............(这里就可以操作tree里面的内容了)。var chrild layero.find(iframe).contents(); chrild.layui.tree (这样是调用不到的)。var child layer.getChildFrame(); child.layui.tree(这…

Linux常见指令及热键

文章目录 1. ls 指令语法实例 2. pwd 指令语法实例 3. cd 指令语法实例 4. touch 指令语法实例 5. mkdir语法实例 6. rmdir 指令语法实例 7. rm 指令语法实例 8. man 指令语法实例 9. cp 指令语法实例 10. mv 指令语法实例 11. cat 指令使用权限语法格式参数说明&#xff1a;实…

【Java系列】Java 简介

目录 Java 简介主要特性发展历史Java 开发工具系列文章版本记录 Java 简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发&#xff0c;并在 1995 年正式推出。 后来 Sun 公司被 Ora…

Android apkanalyzer简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、用法3.1 使用 Android Studio3.1.1…

Arduino Nano 引脚复用分析

近期开发的项目为气体传感器采集仪&#xff0c;综合需求&#xff0c;选取NANO作为主控&#xff0c;附属设备有 oled、旋转编码器、H桥板、蠕动泵、开关、航插等&#xff0c;主要是用现有接口怎么合理配置实现功能。 不管stm32 还是 Arduino 都要看清引脚图 D2 D3 引脚是两个外…

abap中程序跳转(全)

1.常用 1.CALL TRANSACTION 1.CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK [AND SKIP FIRST SCREEN]. 其中ta为事务码tcode使用时要打单引号() 2. CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK USING bdc_tab { {[MODE mode] [UPDATE u…

【JavaEE】浅谈死锁

1、什么是死锁&#xff1f; 死锁是这样一种情形&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 2、关于死锁的情况 2.1 一个线程一把锁&#xff0c;可重入锁没事。不…

Jmeter压测入门教程

目录 1.Jmeter安装与启动 2.Jmeter使用步骤 3.结果分析 1.Jmeter安装与启动 安装 1. 首先进入官网Apache JMeter - Download Apache JMeter 2. 选择操作系统所对应的版本进行下载。 3.将下载成功的压缩包解压到指定目录当中&#xff0c;即安装成功。 4. 右键“我的电脑”…