LightGBM(Light Gradient Boosting Machine,轻量级梯度提升机)梳理总结

LGB微软团队在 2017 年提出的梯度提升树模型,核心定位是 “更高效的 XGBoost”—— 它在保持精度接近 XGBoost 的同时,通过“数据采样优化”“特征压缩”“树生长策略改进”三大创新,将训练速度提升 10-100 倍,内存消耗降低数倍,尤其适合大数据、高维特征场景(如千万级样本、百万级特征)。

总结一下:LightGBM是以梯度提升框架为基础,通过 “直方图优化” 对特征分箱减少计算量、“单边梯度采样” 筛选关键样本、“互斥特征捆绑” 压缩特征维度,迭代训练决策树(每次拟合前序模型的残差梯度),最终将所有树的预测结果加权求和得到最终输出。(通过梯度采样(GOSS)减少样本、特征捆绑(EFB)压缩维度、叶子 - wise 生长提升精度的高效梯度提升树;实现了 “速度提升 10 倍 + 精度不减 + 内存降低”)

一、LightGBM 与 GBDT、XGBoost 的关系

同属 “梯度提升树” ,核心逻辑都是 “串行训练弱学习器,用新树纠正旧树错误”,但优化方向不同:

  • GBDT:基础版,仅用一阶导数,无工程优化,速度慢;
  • XGBoost:优化版,用一阶 + 二阶导数,加入正则化,支持并行计算分裂点,速度比 GBDT 快;
  • LightGBM:高效版,在 XGBoost 基础上,通过 “梯度采样”“特征捆绑”“叶子优先生长” 进一步提升效率,速度远超 XGBoost,同时内存更省。

二、LightGBM 的核心原理:“用更少的计算,达到近似的效果”

LightGBM 的效率提升不是 “牺牲精度换速度”,而是通过 “精准减少无效计算”实现的。核心创新是两大技术:GOSS(梯度 - based 单边采样) 和EFB(互斥特征捆绑),再加上叶子 - wise 树生长策略 ,共同构成其核心原理。

1. GOSS(梯度 - based 单边采样):减少样本量,保留关键信息

传统梯度提升树(如 XGBoost)训练每棵树时需遍历全量样本计算分裂增益,当样本量达千万级时,耗时极长。GOSS 的核心思想是:梯度绝对值大的样本对模型优化更重要,可优先保留;梯度小的样本可部分丢弃,同时补偿分布偏差

具体操作(以训练第 m 棵树为例):
  • 步骤 1:按样本的梯度绝对值降序排序,保留前a×100%的大梯度样本(如 a=0.2,保留 Top20%),记为集合 A;
  • 步骤 2:从剩余(1-a)×100%的小梯度样本中,随机采样b×100%(如 b=0.1,采样 10%),记为集合 B;
  • 步骤 3:计算分裂增益时,对集合 B 的样本权重乘以(1-a)/b(补偿因丢弃部分小梯度样本导致的分布偏移);
  • 步骤 4:仅用A\bigcup B(总采样率 a+b,通常 20%-30%)计算分裂增益,替代全量样本。
为什么有效?

梯度绝对值大的样本(如预测错误大的样本)是模型需要重点纠正的,保留它们可保证分裂增益计算的准确性;梯度小的样本(预测较准)对优化贡献小,适当丢弃可大幅减少计算量(如样本量从 1000 万降至 300 万,计算量减少 70%)。

2. EFB(互斥特征捆绑):压缩特征数,适配高维稀疏场景

现实数据中,大量特征是 “互斥的”—— 即不同时取非零值(如 “性别 = 男” 和 “性别 = 女” 不会同时为 1,“职业 = 学生” 和 “职业 = 教师” 也不会同时为 1)。这些互斥特征可被 “捆绑” 成一个 “特征束”,减少特征总数,降低计算成本。

具体操作:
  • 步骤 1:识别互斥特征:构建 “特征冲突图”,若两个特征的非零值有重叠(不互斥),则标记为 “冲突”;
  • 步骤 2:贪心捆绑:优先将冲突少的特征加入同一束(控制冲突率,如允许≤5% 的冲突),冲突多的特征单独成束;
  • 步骤 3:特征值映射:对同一束内的特征,按其取值范围分配 “偏移量”(如特征 A 的取值范围是 [0,10),特征 B 是 [0,20),则 B 的取值加 10,变为 [10,30)),确保捆绑后仍能区分原始特征值。
效果:

高维稀疏场景(如 One-Hot 编码后的特征)中,特征数可从百万级压缩至数千级(如 5400 万特征→1 万束),直方图构建时间从O(样本数×5400万)降至O(样本数×1万),直接带来 10 倍以上速度提升。

3. 叶子 - wise 树生长:用更少的树达到更高精度

XGBoost 等模型采用 “层 - wise” 生长策略(按层分裂所有叶子节点),会生成许多对精度提升无关的叶子;而 LightGBM 采用 “叶子 - wise” 策略:每次从当前所有叶子中,选择分裂增益最大的叶子进行分裂,直到达到树深限制。

优势:
  • 用更少的叶子节点(更少的树)达到与 XGBoost 相当的精度(如 XGBoost 需要 1000 棵树,LightGBM 可能只需 500 棵);
  • 避免 “层 - wise” 中对低增益叶子的无效分裂,减少计算量。

4. 直方图优化:进一步加速分裂计算

XGBoost 已采用 “直方图” 代替原始特征值(将连续特征分桶,用桶统计量替代逐个样本计算),LightGBM 在此基础上做了两点优化:

  • 直方图差加速:右子节点的直方图 = 父节点直方图 - 左子节点直方图,无需单独计算右子节点,节省 50% 时间;
  • 内存优化:用 “离散化的 bin 值” 存储特征,而非原始浮点值,内存消耗降低约 70%。

三、LightGBM 的训练流程

LightGBM 的流程与 XGBoost 类似,但每一步都融入了上述优化,具体步骤如下:

步骤 1:初始化模型

与 GBDT、XGBoost 一致,初始模型为常数(如样本均值),最小化初始损失。

步骤 2:迭代训练 M 棵树(核心步骤)

对每轮m=1,2,...,M,执行:

2.1 计算梯度(一阶导数)和二阶导数

与 XGBoost 相同,计算每个样本的一阶导数g_i(梯度)和二阶导数h_i(Hessian),作为后续计算的基础。

2.2 GOSS 采样:减少样本量

按梯度绝对值排序,保留大梯度样本(A)和部分小梯度样本(B),得到采样后的样本集(A∪B),并对 B 的权重进行补偿。

2.3 EFB 特征捆绑:压缩特征数

对高维稀疏特征,通过互斥性检测,将特征捆绑成特征束,减少特征总数(如从 100 万→1 万)。

2.4 构建直方图

基于采样后的样本集和捆绑后的特征束,为每个特征束构建直方图(统计每个 bin 的g_{i}h_{i}之和),并利用 “直方图差加速” 计算左右子节点的直方图。

2.5 叶子 - wise 分裂:生成第 m 棵树
  • 从当前所有叶子中,选择分裂增益最大的叶子(用g_{i}h_{i}计算增益,同 XGBoost 的增益公式);
  • 对该叶子进行分裂(按最优特征和阈值),生成左右子节点;
  • 重复分裂,直到达到树深限制(max_depth)或叶子数限制(num_leaves),或增益小于阈值(min_gain_to_split)。
2.6 计算叶子权重并更新模型

用与 XGBoost 相同的公式计算叶子节点权重,并以学习率\eta缩放后,累加到当前模型中:

步骤 3:得到最终模型

四、LightGBM的应用场景与优势

1. 应用场景

  • 超大规模样本:百万至亿级样本(如电商用户行为数据、搜索引擎日志);
  • 高维稀疏特征:One-Hot 编码后的类别特征(如用户标签、物品属性)、文本特征(如词袋模型);
  • 实时性要求高的任务:在线推荐、实时风控(需快速训练和预测);
  • 各类机器学习任务:分类(二分类 / 多分类)、回归、排序(如 CTR 预估、推荐排序)。

2. 优势

优势具体说明对比 XGBoost
训练速度极快GOSS 减少样本量(20%-30%)、EFB 压缩特征数(10-100 倍)、直方图差加速,三者结合使速度提升 10-100 倍XGBoost 无样本采样和特征捆绑,速度较慢
内存消耗低EFB 压缩特征、直方图存储 bin 值(而非原始值),内存消耗降低 50%-70%XGBoost 需存储全量特征的直方图,内存占用高
精度接近最优叶子 - wise 生长策略 + GOSS/EFB 的理论误差保证,精度与 XGBoost 基本持平(多数场景差距 < 1%)精度略高,但差距在可接受范围内
原生支持类别特征无需手动 One-Hot 编码(内置优化的类别特征处理,通过直方图映射实现)需手动编码(One-Hot 或标签编码),高基数类别特征处理繁琐

五、其他

1. 与 XGBoost 的区别

维度XGBoostLightGBM
树生长方式层 - wise(按层分裂所有叶子)叶子 - wise(优先分裂高增益叶子)
样本处理全量样本计算GOSS 采样(保留关键样本)
特征处理全量特征计算EFB 捆绑(压缩特征数)
类别特征需手动编码原生支持(自动处理)
过拟合风险较低(层 - wise 生长较稳健)较高(叶子 - wise 易过拟合,需严格控制树深)

2. 关键超参数

LightGBM 的参数与 XGBoost 类似,但有几个独特参数需重点关注(调参优先级从高到低):

参数作用推荐范围注意事项
num_leaves叶子节点最大数量(控制树复杂度)31-255(默认 31)过大易过拟合(通常设为2^max_depth附近)
learning_rate学习率0.01-0.1n_estimators配合(小学习率需多树)
max_depth树的最大深度(限制叶子 - wise 生长)3-8防止树过深导致过拟合(比 XGBoost 更重要)
subsample & colsample_bytree样本 / 特征采样比例0.7-0.9增加随机性,抗过拟合
bagging_freq采样频率(每 k 轮采样一次)0-5(0 表示不采样)配合subsample使用,进一步减少过拟合
min_data_in_leaf叶子节点最小样本数10-100过小易过拟合(尤其叶子 - wise 生长时)
boosting_type提升类型gbdt(默认)、dart( dropout 提升)dart可进一步抗过拟合,但速度稍慢

3. 常见误区

  • ❌ 误区 1:LightGBM 的叶子 - wise 生长 “一定更好”。
    ✅ 正确:叶子 - wise 生长精度高,但过拟合风险大,需严格控制num_leavesmax_depth(如num_leaves不超过2^max_depth);数据量小时,层 - wise 可能更稳健。

  • ❌ 误区 2:LightGBM 处理类别特征 “无需任何操作”。
    ✅ 正确:需手动指定categorical_feature参数(标记哪些是类别特征);高基数类别特征(如用户 ID,百万级类别)仍需预处理(如哈希分桶),否则会导致直方图构建缓慢。

  • ❌ 误区 3:参数调优 “越复杂越好”。
    ✅ 正确:LightGBM 对参数的敏感度低于 XGBoost,优先调num_leavesmax_depthlearning_rate三个核心参数,其他参数用默认值即可。

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

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

相关文章

毕业项目推荐:29-基于yolov8/yolov5/yolo11的光伏板检测识别系统(Python+卷积神经网络)

文章目录 项目介绍大全&#xff08;可点击查看&#xff0c;不定时更新中&#xff09;概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式…

【实时Linux实战系列】实时数据可视化技术实现

在当今数据驱动的世界中&#xff0c;实时数据可视化已成为理解和利用实时信息的关键工具。无论是在金融交易监控、工业生产监控、智能交通管理还是物联网设备监控中&#xff0c;能够将复杂的数据以直观的图表形式展示出来&#xff0c;对于快速决策和问题解决至关重要。实时数据…

【LeetCode每日一题】21. 合并两个有序链表 2. 两数相加

每日一题21. 合并两个有序链表题目总体思路算法步骤时间复杂度与空间复杂度代码2. 两数相加题目总体思路算法步骤时间复杂度与空间复杂度代码知识感悟2025.8.3021. 合并两个有序链表 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所…

DVWA靶场通关笔记-文件包含(Impossible级别)

目录 一、源码分析 二、文件包含防范分析 1、明确指定允许包含的文件 2、拒绝所有未在白名单中的输入 3、总结 &#xff08;1&#xff09;白名单 (Allow List) &#xff08;2&#xff09;硬编码/映射 (Hardcoding/Mapping) &#xff08;3&#xff09;输入过滤 (Input F…

构建坚不可摧的数据堡垒:深入解析 Oracle 高可用与容灾技术体系

在当今数字化时代&#xff0c;数据是企业的核心资产&#xff0c;而承载这些数据的数据库系统的连续性与稳定性直接关系到企业的生死存亡。一次计划外的停机或灾难性的数据丢失&#xff0c;带来的不仅是经济上的巨大损失&#xff0c;更是对品牌信誉和客户信任的致命打击。因此&a…

【3D算法技术入门】如何基于建筑图片重建三维数字资产?

要基于建筑图片重建三维数字资产是一个复杂的计算机视觉任务&#xff0c;涉及图像采集、特征提取、相机姿态估计、稠密重建和三维模型优化等多个步骤。下面我将提供一个基于Python的解决方案框架&#xff0c;使用开源库实现从图片到三维模型的基本流程。 首先需要安装必要的库&…

⭐CVPR2025 自动驾驶半监督 LiDAR 分割新范式:HiLoTs 框架深度解析

&#x1f4c4;论文题目&#xff1a;HiLoTs: High-Low Temporal Sensitive Representation Learning for Semi-Supervised LiDAR Segmentation in Autonomous Driving ✍️作者及机构&#xff1a; R.D. Lin、Pengcheng Weng、Yinqiao Wang、Fei Wang&#xff08;西安交通大学软件…

【 MYSQL | 基础篇 函数与约束 】

摘要&#xff1a;本文介绍数据库中的函数与约束&#xff0c;函数含字符串、数值、日期、流程四类&#xff0c;可实现字符串处理、数值计算等需求。约束分六类&#xff0c;重点讲外键约束的语法、删除更新行为&#xff0c;保证数据正确完整。思维导图1. 函数函数是指一段可以直接…

Oracle 数据库性能调优:从瓶颈诊断到精准优化之道

引言&#xff1a;性能优化的本质在当今数据驱动的时代&#xff0c;数据库性能直接关系到企业的运营效率和用户体验。Oracle 作为全球领先的关系型数据库管理系统&#xff0c;承载着众多企业的核心业务。然而&#xff0c;随着数据量的增长和业务复杂度的提升&#xff0c;数据库性…

杨校老师竞赛课堂之C++语言GESP一级笔记

考试大纲 GESP一级考试大纲 计算机基础与编程环境 计算机历史 变量的定义与使用 基本数据类型&#xff08;整型、浮点型、字符型、布尔型&#xff09; 输入与输出&#xff08;cin与cout、scanf与printf&#xff09; 基本运算&#xff08;算术运算、关系运算、逻辑运算&am…

操作系统-管程

1. 为什么需要管程&#xff1f;—— 信号量 (Semaphore) 的困境在理解管程之前&#xff0c;你必须先知道它要解决什么问题。之前&#xff0c;我们使用信号量 (Semaphore) 来实现进程/线程间的同步与互斥。虽然信号量功能强大&#xff0c;但它存在两个主要问题&#xff1a;编程复…

日志的实现

目录 日志与策略模式 Log.hpp class LogStrategy基类 class ConsoleLogStrategy派生类 classFileLogStrategy派生类 日志等级 获得时间戳 localtime_r函数详解 函数原型 struct tm结构的指针 Logger类(重点) class LogMessage 日志信息类 std::stringstream 用法 重…

【论文阅读】Sparse4D v2:Recurrent Temporal Fusion with Sparse Model

标题&#xff1a; Sparse4D v2&#xff1a;Recurrent Temporal Fusion with Sparse Model 作者&#xff1a; Xuewu Lin, Tianwei Lin, Zixiang Pei, Lichao Huang, Zhizhong Su motivation 在v1的基础上&#xff0c;作者发现长时序有更好的效果&#xff0c;但v1的计算量太大&am…

构建免费的音视频转文字工具:支持多语言的语音识别项目

在当今数字时代&#xff0c;音视频内容越来越多&#xff0c;但如何快速将其转换为文字一直是一个挑战。本项目提供了一个免费的解决方案&#xff0c;支持将视频和音频文件转换为文字&#xff0c;并且支持多语言识别。 一个支持中英文的音视频转文字工具&#xff0c;集成了 Vos…

【开题答辩全过程】以 基于SpringBootVue的智能敬老院管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

Linux 830 shell:expect,ss -ant ,while IFS=read -r line,

[rootsamba caozx26]# scp /home/caozx26/pub root192.168.235.3:~/ root192.168.235.3s password: /home/caozx26/pub: not a regular file [rootsamba caozx26]# ls app km nntp.sh ntp.sh until1.sh 公共 图片 音乐 find.sh l2 ntp1.sh pub u…

​​​​​​​GPT-5发布引爆争议,奥特曼连夜回应!付费充值的Plus用户成最大赢家?

摘要&#xff1a; GPT-5发布后&#xff0c;社区口碑两极分化&#xff0c;从“强无敌”到“还我4o”的呼声并存。面对技术故障和用户质疑&#xff0c;OpenAI CEO萨姆奥尔特曼及团队火速回应&#xff0c;公布了一系列补救措施和未来计划。本文将带你速览这场风波始末&#xff0c;…

Python 操作 Redis 的客户端 - Redis Stream

Python 操作 Redis 的客户端 - Redis Stream1. Redis Stream2. Redis Commands2.1. CoreCommands.xadd() (生产端)2.2. CoreCommands.xlen() (生产端)2.3. CoreCommands.xdel() (生产端)2.4. CoreCommands.xrange() (生产端)2.5. RedisClusterCommands.delete()3. Redis Stream…

【Qt开发】按钮类控件(一)-> QPushButton

目录 1 -> 什么是 PushButton&#xff1f; 2 -> 相关属性 3 -> 代码示例 3.1 -> 带有图标的按钮 3.2 -> 带有快捷键的按钮 4 -> 总结 1 -> 什么是 PushButton&#xff1f; 在 Qt 框架中&#xff0c;QPushButton 是最基础且最常用的按钮控件之一&am…

Citrix 零日漏洞自五月起遭积极利用

安全研究员 Kevin Beaumont 披露了有关 CVE-2025-6543 的惊人细节&#xff0c;这是一个严重的 Citrix NetScaler 漏洞&#xff0c;在该公司发布补丁之前的几个月里&#xff0c;该漏洞被积极利用作为零日攻击。 Citrix 最初将其轻描淡写为简单的“拒绝服务”漏洞&#xff0c;但…