机器学习笔记 LightGBM:理解算法背后的数学原理

news2024/10/5 15:27:50

一、简述

        在一次数据科学的比赛中,我有机会使用 LightGBM,这是一种最先进的机器学习算法,它极大地改变了我们处理预测建模任务的方式。我对它在数千个数据点上进行训练的速度感到着迷,同时保持了其他算法难以达到的准确性。LightGBM 是Light Gradient Boosting Machine的缩写,是 Microsoft 开发的开源、分布式、高性能梯度提升框架。

        在数据科学和机器学习领域,准确执行预测是一项关键任务,可以显著影响业务运营和决策。传统方法通常难以应对现代数据的复杂性和数量,导致性能和可扩展性问题不理想。LightGBM 的优势就在于此,它提供了兼具速度、准确性和灵活性的强大解决方案。

二、什么是LightGBM?

        LightGBM是微软开发的开源、分布式、高性能梯度提升框架。它旨在实现高效、可扩展和准确。该框架利用决策树来提高模型效率并最大限度地减少内存使用量。 LightGBM 的开发是为了克服传统梯度提升机 (GBM) 的计算效率低下问题,因为传统梯度提升机需要处理所有特征上的所有数据实例,从而产生大量计算。为了解决这个问题,LightGBM 引入了两项关键技术:基于梯度的单侧采样 (GOSS) 和独占特征捆绑 (EFB)。

1、基于梯度的单侧采样(GOSS)

         基于梯度的单侧采样 (GOSS) 是一种通过选择性保留具有较大梯度的数据实例来提高 LightGBM 效率的技术。其背后的原理是梯度较大的实例对优化过程的贡献更大,而梯度较小的实例影响较小。
         GOSS 利用梯度来获取有关每个实例的信息增益,从而解决计算问题。
  • 梯度较小:表示算法在这个实例上已经训练得很好,所以误差较小。

  • 大梯度:表示误差较大,也就是说,如果集中注意力,这个实例将提供更多的信息增益。

         它会忽略梯度较小的实例,而集中精力处理梯度较大的实例。然而,这样做会改变数据分布,从而对模型的准确性产生负面影响。
         GOSS 提供了一种基于梯度对数据进行采样同时保留数据分布的方法。
        运行机制
  • 排序:数据实例根据其梯度的绝对值进行排序。

  • 选择:选择具有最大梯度的顶部 a \times 100\% 实例。

  • 随机抽样:从剩余实例中,选择大小为 b \times 100\% 的随机样本。

  • 重新加权:在信息增益计算过程中,对小梯度的随机样本进行重新加权,其权重等于(1-a)/b

        数学解释:

        GOSS 最终确保模型在保持整体数据分布的同时,更加关注导致损失较大的实例(即训练不足的实例),从而不会显著影响学习到的模型的准确性。

2、独占特征捆绑 (EFB)

        具有许多特征的数据集通常具有稀疏特征,这意味着有很多零值。这些稀疏特征通常是互斥的,这意味着它们不会同时具有非零值。

        例如,在独热编码的文本数据中,只有表示特定单词的一列是非零的,而特定行中的所有其他列都是零。 独占特征捆绑 (EFB) 是一种将这些互斥特征组合成单个特征的技术,可降低维数。EFB 使用贪婪算法将这些特征捆绑在一起。这种维数降低加快了梯度提升决策树 (GBDT) 的训练时间,而不会显著影响准确性,因为创建特征直方图的复杂性取决于捆绑的数量而不是特征的数量(并且捆绑的数量远少于特征的数量)。

        EFB 面临的一个挑战是找到最佳捆绑包。微软的研究人员通过将捆绑问题转换为图形着色问题来解决此问题。在此问题中,特征表示为顶点,并在非互斥特征之间添加边。然后使用贪婪算法来创建捆绑包。该算法还允许捆绑很少同时具有非零值的特征,称为几乎互斥的特征。 另一个挑战是以一种允许从捆绑特征中提取原始特征值的方式合并特征。例如,在三个特征的捆绑中,我们需要使用捆绑特征的值来识别这三个特征的值。

        LightGBM 中基于直方图的算法为连续值创建了离散的箱体。为了有效地合并特征,将捆绑包中特征的独有值放置在不同的箱体中。这是通过向原始特征值添加偏移量来实现的,确保每个特征的值在捆绑包中仍然可以区分。

        数学解释:

        通过结合这两种技术,LightGBM 在效率和可扩展性方面都实现了显著的提升:

  • GOSS 确保在训练期间优先考虑最具信息量的实例,从而加快收敛速度​​并减少内存使用量。

  • EFB 通过捆绑互斥的特征来减少特征的数量,从而降低维数和计算成本。

三、节省分割样本的时间

        在 LightGBM 中,最佳分割是根据最大化增益来定义的,增益可以衡量分割后损失函数的减少量。LightGBM 采用基于直方图的方法来有效地找到最佳分割。以下是 LightGBM 中如何定义和计算最佳分割的详细说明:

        基于直方图的方法

         1.分箱:将连续特征值离散化为固定数量的箱(直方图)。此步骤减少了可能的分割次数并加快了计算速度。

        2.直方图构建:对于每个特征,构建一个直方图,其中每个箱包含落入该箱的样本的梯度与 Hessian 的总和。

        3.分割查找:使用直方图而不是原始数据来评估潜在的分割。

         增益计算
         增益衡量了分割带来的损失函数的改善。其计算方法如下:

        图示
直方图算法是将每列特征值转换成直方图,按照整数区间生成k个bin,然后将特征值放在对应区间的bin中,使得bins<<特征,从而减少内存占用和计算复杂度

        确定最佳分割的步骤

         1. 初始化 计算当前节点的总梯度和(G)以及 Hessian 和(H)。

        2. 对于每个特征:将特征值离散化到各个箱体中。构建梯度和 Hessian 直方图。对于每个可能的分割(箱),使用上述公式计算增益。

         3. 选择最佳分割: 确定所有特征和箱体中增益最高的分割。 此分割被选为当前节点的最佳分割。

四、如何形成树?

        LightGBM 使用一种称为逐叶(或最佳优先)生长的独特方法来生长树,这与许多其他梯度提升框架使用的传统逐级(或广度优先)方法不同。

         以下是 LightGBM 如何生长树的概述:
         在逐叶增长策略中,LightGBM 始终会拆分损失减少(增益)最高的叶子。这种方法可以生成更深的树,但叶子更少,但通常可以提高准确率。与 XGBoost 不同,LightGBM 是逐级增长的。

        叶子生长的步骤:

        1.从单个根节点开始 从单个根节点中的所有数据点开始。

        2.计算潜在分割对于每个特征,计算潜在的分割并评估其收益。增益被计算为分割时损失函数(例如均方误差)的减少。

         3.选择最佳分割 选择提供最高增益的分割。 这涉及评估所有特征的所有潜在分割并选择具有最大增益的分割。

        4.通过分裂最好的叶子来种植树分裂产生最高增益的叶子,从而产生两片新叶子。相应地更新树结构。

         5.重复该过程 继续选择并分裂增益最高的叶子,直到满足停止标准(例如最大深度、叶子中的最小数据点数或指定数量的叶子)。
         停止标准: 最大树深度、 叶子中的最小数据点、 最大叶子数量、 最小分割增益

五、梯度提升方法

        LightGBM 提供两种主要的增强技术:梯度增强决策树 (GBDT) 和 Dropouts 满足多元加性回归树 (DART)。

1、梯度提升决策树(GBDT)

         GBDT 是 LightGBM 中使用的标准增强技术。它按顺序构建决策树集合,其中每棵树都经过训练以纠正先前树的错误。

        主要特征:

         顺序训练:一棵树接一棵树地建立,每棵新树的目的都是为了减少先前所有树的组合残差误差。

        •基于梯度的优化:该模型使用损失函数的梯度来识别最显著的错误并在后续树中纠正它们。

        •加法模型:所有树的预测相加形成最终预测。

         过程:
        1.初始化:从初始预测开始(例如,回归的平均值)。

        2.计算残差:对于每个数据点,计算残差(实际值与当前预测值之间的差值)。

         3.训练一棵树:拟合一棵新的决策树来预测残差。

        4.更新模型:通过添加新树的预测(按学习率缩放)来更新模型。

         5.重复:继续添加树,直到达到指定的迭代次数或满足另一个停止标准。
         数学解释:

2、Dropouts + 多元加性回归树 (DART)

         DART是 GBDT 的扩展,旨在通过结合类似于神经网络中使用的 dropout 技术来缓解过度拟合。它在训练期间随机从集成中删除树,这有助于规范化模型。

        主要特征:

        随机丢弃:在每次迭代期间,会随机丢弃一部分树,并根据剩余的树来训练新树。

        减少过度拟合:通过删除树,DART 可防止模型过度依赖任何特定的树,从而实现更好的泛化。

        加法和 Dropout:结合加法建模(如 GBDT)和 Dropout 正则化(来自神经网络)的原理。

        过程:

        1.初始化:从初始预测开始。 2.计算残差:计算每个数据点的残差。 3.随机丢弃(Random Dropout):从当前集合中随机丢弃一组树。 4.训练一棵树:用剩余集合的残差拟合一棵新的决策树。 5.更新模型:将新树的预测添加到当前模型中。 6.重复:继续该过程,在每次迭代中随机删除树,直到达到指定的迭代次数或满足另一个停止标准。

        数学解释:

 六、LightGBM 核心参数

        LightGBM 核心参数是影响 LightGBM 模型在训练期间的行为和性能的重要设置。这些参数控制模型的各个方面,例如其结构、优化过程和目标函数。微调这些核心参数对于使模型适应特定的机器学习任务并实现最佳性能至关重要。关键参数包括学习率、叶子数、最大深度、正则化项和优化策略。

        核心参数说明:

         1. objective:指定训练期间要优化的损失函数。LightGBM 支持各种目标,例如回归、二元分类和多类分类。

        2. task:定义要执行的任务,可以是“train”或“prediction”。默认值为“train”,但可以设置为“prediction”以进行模型推理。

        3. num_leaves:确定每棵树中叶子的最大数量。较高的值允许模型捕获更复杂的模式,但可能会导致过度拟合。

        4. learning_rate:控制梯度下降过程中每次迭代的步长。值越低,学习速度越慢,但可以提高泛化能力。

        5. max_depth:设置每棵树的最大深度。较高的值使模型能够捕获更复杂的交互,但可能会导致过度拟合。

        6. min_data_in_leaf:指定形成叶节点所需的最小数据点数。较高的值有助于防止过度拟合,但可能导致欠拟合。

        7.num_iterations :指定要执行的迭代次数(树)。默认值为 100 。

        8. feature_fraction:控制构建每棵树时要考虑的特征比例。随机选择特征子集有助于提高模型多样性并减少过度拟合。

        9. bagging_fraction:指定训练期间用于 bagging(有放回地采样数据点)的数据比例。它有助于提高模型的鲁棒性并减少方差。

        10. lambda_l1 和lambda_l2:分别控制 L1 和 L2 正则化的正则化参数。这些参数会惩罚较大的系数以防止过度拟合。

        11. min_split_gain:定义进一步分裂节点所需的最小增益。它有助于控制树的增长并防止不必要的分裂。

        12. categorical_feature:指定用于训练模型的分类特征。

七、小结

        LightGBM 在机器学习领域取得了显著的进步,特别是对于涉及大型数据集和复杂模型的任务。其创新的梯度提升方法利用基于梯度的单侧采样 (GOSS) 和独占特征捆绑 (EFB) 等技术,通过显著提高效率和可扩展性使其有别于传统算法。

        LightGBM 的数学基础揭示了其稳健性和适应性。通过专注于逐叶树的生长、利用直方图进行分割查找以及采用高效的采样方法,LightGBM 实现了卓越的性能,同时降低了过度拟合的风险。这些数学技术确保 LightGBM 能够处理高维数据和复杂的模式,使其成为各个领域从业者的首选。 了解 LightGBM 背后的数学原理不仅可以洞悉其内部工作原理,还可以帮助数据科学家和机器学习工程师微调模型以获得最佳性能。随着我们不断突破预测建模和数据分析的界限,LightGBM 等工具仍将成为我们工具包中不可或缺的一部分,推动创新并增强我们从数据中获取有意义见解的能力。

八、相关链接

        一个简单示例

机器学习笔记 - AutoML框架LightGBM初体验_autolgbm-CSDN博客文章浏览阅读1.8k次。LightGBM是一个梯度提升框架,它使用基于树的学习算法。具有以下优点:1、更快的训练速度和更高的效率。2、降低内存使用率。3、更好的准确性。4、支持并行、分布式和 GPU 学习。5、能够处理大规模数据。在公共数据集上的比较实验表明,LightGBM 在效率和准确性上都优于现有的 boosting 框架,并且显着降低了内存消耗。更重要的是,分布式学习实验表明,LightGBM 可以通过_autolgbmhttps://skydance.blog.csdn.net/article/details/123554288

LightGBM (Light Gradient Boosting Machine) - GeeksforGeeks

https://towardsdatascience.com/understanding-the-lightgbm-772ca08aabfa

https://proceedings.mlr.press/v38/korlakaivinayak15.pdf

Welcome to LightGBM’s documentation! — LightGBM 4.4.0.99 documentation

https://medium.com/@soyoungluna/simple-explanation-of-lightgbm-without-complicated-mathematics-973998ec848f

https://proceedings.neurips.cc/paper_files/paper/2017/file/6449f44a102fde848669bdd9eb6b76fa-Paper.pdf

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

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

相关文章

EasyExcel4导入导出数据(基于MyBatisPlus)

一、POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><m…

OK527N-C开发板-简单的性能测试

OK527N-C CoreMark 获取CoreMark源码 首先使用Git克隆仓库&#xff1a; git clone https://github.com/eembc/coremark.git cd coremark修改Makefile 首先复制文件夹 cp -rf posix ok527之后修改ok527文件夹下的core_portme.mak文件&#xff0c;将CC修改如下 CC aarch6…

uniapp地图点击获取位置

主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…

模块电源(九):DC-DC工作模式和调制方法

DC-DC 需要在一定的开关频率下工作&#xff0c;并需要一个控制电路配合来稳定 DCDC 的输出电压。因此&#xff0c;针对不同的控制方案&#xff0c;需要设计不同的 DC-DC 工作模式和调制方法来使其稳定工作。 一、工作模式 一个 DC-DC 电路中&#xff0c;开关管导通阶段的电感电…

【前端】HTML+CSS复习记录【5】

文章目录 前言一、padding、margin、border&#xff08;边框边距&#xff09;二、样式优先级三、var&#xff08;使用 CSS 变量更改多个元素样式&#xff09;四、media quary&#xff08;媒体查询&#xff09;系列文章目录 前言 长时间未使用HTML编程&#xff0c;前端知识感觉…

【高中数学/基本不等式】已知a,b皆为正实数,且a+b=2 求:1/a+4/b的最小值?(2011年重庆理科卷第七题)

【题目】 已知a,b皆为正实数&#xff0c;且ab2 求&#xff1a;1/a4/b的最小值&#xff1f; 【解答】 解法一&#xff1a;基本不等式法 由ab2可推知a/2b/21 1/a4/b(a/2b/2)/a(2a2b)/b1/2b/2a2a/b22.5b/2a2a/b >2.52倍根号下&#xff08;b/2a*2a/b&#xff09;2.52*14.…

力扣双指针算法题目:双数之和,三数之和,四数之和

目录 一&#xff1a;双数之和 1.题目&#xff1a; 2.思路解析 3.代码 二&#xff1a;三数之和 1.题目 2.思路解析 3&#xff0c;代码 三&#xff1a;四数字之和 1.题目 2.思路解析 3.代码 一&#xff1a;双数之和 1.题目&#xff1a; 输入一个递增排序的数组和一…

基于Java的家政预约系统设计与实现

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

提高候选人的招聘感受:成功的策略

大约78%的候选人表示&#xff0c;他们的整体应聘体验表明企业对员工的关注。然而&#xff0c;超过一半的候选人透露&#xff0c;他们在招聘过程中有过负面的候选人经历&#xff0c;80%的候选人在经历了令人失望的招聘过程后会公开与他人分享他们的不良经历。 但也有一线希望&am…

Swift 中强大的 Key Paths(键路径)机制趣谈(上)

概览 小伙伴们可能不知道&#xff1a;在 Swift 语言中隐藏着大量看似“其貌不扬”实则却让秃头码农们“高世骇俗”&#xff0c;堪称卧虎藏龙的各种秘技。 其中&#xff0c;有一枚“不起眼”的小家伙称之为键路径&#xff08;Key Paths&#xff09;。如若将其善加利用&#xff…

STM32 中断编程入门

目录 一、中断系统 1、中断的原理 2、中断类型 外部中断 定时器中断 DMA中断 3、中断处理函数 中断标志位清除 中断服务程序退出 二、实际应用 中断控制LED 任务要求 代码示例 中断控制串口通信 任务要求1 代码示例 任务要求2 代码示例 总结 学习目标&…

什么是文档透明加密|好用的文档透明加密软件有哪些?

在当今日益数字化和信息化的时代&#xff0c;数据安全问题愈发受到企业和个人的关注。文档作为信息的重要载体&#xff0c;其安全性不言而喻。为了保障文档的机密性和完整性&#xff0c;文档透明加密技术应运而生。本文将对文档透明加密进行详细介绍&#xff0c;并探讨一些好用…

6月份上海二手房卖疯了,暴涨四成,反价房东被抛弃

6月份刚刚结束&#xff0c;北京、上海两大城市的房市成交情况纷纷出炉&#xff0c;从成交量来看上海房市明显比北京火热许多&#xff0c;同时与其他城市类似&#xff0c;消费者偏向于二手房。 6月份上海二手房往前高达2.6万套&#xff0c;环比增加超四成&#xff0c;创下2021年…

粤港联动,北斗高质量国际化发展的重要机遇

今年是香港回归27周年&#xff0c;也是《粤港澳大湾区发展规划纲要》公布5周年&#xff0c;5年来各项政策、平台不断为粤港联动增添新动能。“十四五”时期的粤港澳大湾区&#xff0c;被国家赋予了更重大的使命&#xff0c;国家“十四五”《规划纲要》提出&#xff0c;以京津冀…

用MySQL+node+vue做一个学生信息管理系统(二):创建MySQL数据表、创建HTML用户列表页面

MySQL代码 CREATE DATABASE students;USE students;CREATE TABLE student( id INT COMMENT 学号, name VARCHAR(32) COMMENT 姓名, sex VARCHAR(8) COMMENT 性别, class VARCHAR(64) COMMENT 班级 )SHOW TABLES;下面介绍一下Vue框架的element-ui的使用方法&#xff0c;这里就不…

【哈尔滨二级等保测评需要测哪些指标】

为了保证系统的安全性、稳定性和遵从性&#xff0c;哈尔滨二级等保评估要求对评估指标进行全面的评估。下面就是对哈尔滨等保二级考核所需要的考核指标的具体说明&#xff0c;并按各个维度分点表达与总结&#xff1a; 一、物理安全要求 物理安全是信息系统的根本&#xff0c;…

go-zero微服务教程(一、基本介绍与安装)

系列文章目录 第一章 go-zero基本介绍与安装 文章目录 一、基本介绍1.1 参考1.2 什么是微服务1.3 什么是go-zero1.4 为什么选择go-zero1.5 go-zero的整体架构1.6 go-zero的特点 二、安装2.1 go-zero需要安装的组件2.2 安装 protoc 及代码生成插件2.3 安装用于生成 go 和 grpc 相…

工业触摸一体机优化MES应用开发流程

工业触摸一体机在现代工业生产中扮演着至关重要的角色&#xff0c;它集成了智能触摸屏和工业计算机的功能&#xff0c;广泛应用于各种生产场景中。而制造执行系统&#xff08;MES&#xff09;作为工业生产管理的重要工具&#xff0c;对于提高生产效率、降低成本、优化资源利用具…

XTDrone-固定翼无人机编队跟踪无人车-配置教程

配置使用ROS版本为Neotic 1 配置 1.1 加载固定翼无人机编队跟踪控制工程文件 cp -r ~/XTDrone/coordination/fixed_wing_formation_control ~/catkin_ws/src 1.2 加载一些用到的功能包 sudo apt-get install ros-noetic-serial #根据自己的ROS版本修改 sudo apt-get insta…

[图解]SysML和EA建模住宅安全系统-07-to be块定义图

1 00:00:00,180 --> 00:00:06,820 我们来看&#xff0c;这是之前的那张图&#xff0c;现有的 2 00:00:08,290 --> 00:00:09,160 我们怎么做 3 00:00:09,170 --> 00:00:11,280 你看&#xff0c;我们之前 4 00:00:11,290 --> 00:00:15,600 在现状&#xff0c;as i…