定义
LightGBM 是一个开源的梯度提升框架,使用基于决策树的学习算法[3]。它属于梯度提升决策树(GBDT)这一类集成学习方法的实现,也可被归入 GBRT、GBM 或 MART 等同类名称之下,被用于排序、分类等机器学习任务[2][1]。
GBDT 由若干棵决策树按顺序训练而成,每一轮迭代都拟合当前模型损失函数的负梯度,也就是残差[5]。LightGBM 在这一框架基础上做了算法与工程层面的改造,针对传统 GBDT 在海量数据上训练效率低、内存占用高的问题,使 GBDT 更适合工业实践[6][7]。
该框架是微软 DMTK 项目的组成部分之一[2]。其核心论文《LightGBM: A Highly Efficient Gradient Boosting Decision Tree》发表在 2017 年的神经信息处理系统大会(NIPS/NeurIPS)上,作者包括柯国霖、孟奇、Thomas Finley、王太峰、陈巍、马伟东、叶启威、刘铁岩等人[8][9]。
原理
LightGBM 的基学习器是决策树,训练时按顺序逐棵加入新的树,每棵新树去拟合当前模型损失函数的负梯度[5]。与使用预排序算法逐一遍历特征取值寻找分裂点的做法不同,它先把连续特征值离散化成固定数量的分桶(bin),再依据分桶构建特征直方图,从而在直方图上寻找最优分裂点[7][10]。预排序算法的时间复杂度与特征取值数量相关,而直方图构建完成后,分裂点查找的复杂度只与分桶数有关,分桶数通常远小于数据量[7]。
直方图算法还可以用做差进一步加速:二叉树中一个叶子的直方图,可由其父节点直方图减去兄弟节点直方图得到,因此只需为数据量较小的那个叶子构建直方图[7]。以增益计算为例,设左右子节点梯度之和分别为 $S_L$、$S_R$,样本数分别为 $n_L$、$n_R$,父节点梯度之和与样本数分别为 $S_P$、$n_P$,则分裂带来的增益可写作:$\Delta loss = \frac{S_L^2}{n_L} + \frac{S_R^2}{n_R} - \frac{S_P^2}{n_P}$,取得最大增益所对应的特征与分桶值即作为分裂点[7]。直方图构建是主要开销,复杂度约为 $O(\#data\times\#feature)$,因此减少样本数或特征数都能明显加快训练[5]。
针对样本维度,LightGBM 采用基于梯度的单边采样(GOSS):先按梯度绝对值降序排列样本,保留梯度较大的前 $a\times 100\%$,再从剩余样本中随机抽取 $b\times 100\%$,并给小梯度样本集乘上系数 $(1-a)/b$ 以校正分布,随后用这部分样本计算信息增益[4][10]。梯度大的样本对增益贡献更大,按此方式采样可以在减少计算量的同时尽量不改变数据分布[4]。
针对特征维度,LightGBM 采用互斥特征捆绑(EFB)。稀疏空间中许多特征几乎不会同时取非零值,即相互互斥,这类特征可以捆绑为一个特征而基本不损失信息[5]。该问题被转化为图着色问题求解,以特征为顶点、若两个特征不互斥则在二者之间连边,再用贪心算法得到近似解;典型例子是文本挖掘中的独热编码特征[5]。
在树的生长方式上,多数决策树算法按层生长,而 LightGBM 按叶子生长,每次选取分裂增益最大的叶子进行分裂[7]。在叶子数固定时,逐叶生长通常能得到比按层生长更低的损失;其代价是可能生成较深的树,因此框架提供了最大深度等参数进行限制[7][6]。
发展历程
LightGBM 由微软团队开发,2016 年对外发布,相关代码随后在 GitHub 上开源[1][8]。它是微软 DMTK 项目收录的开源项目之一,定位为快速、分布式、高性能的梯度提升框架[1][8]。
2017 年,其核心论文在神经信息处理系统大会上发表,系统介绍了 GOSS 与 EFB 两项技术[8][9]。论文报告,在多个公开数据集上,该方法可将训练过程加速至原有水平的 20 倍以上,而精度几乎不变[5]。
在发展过程中,LightGBM 陆续扩展了对并行、分布式与 GPU 学习的支持,并提供 Python、R 等语言的接口以及可集成的 Spark 组件[3][2]。
应用
LightGBM 可用于分类、回归和排序三类基本任务。在 Spark 环境中,它以 LightGBMClassifier、LightGBMRegressor 和 LightGBMRanker 等形式提供,例如构建判断企业是否破产的二分类模型、预测房价的回归模型,以及判断搜索结果相关性的排序模型[2]。框架还提供多种可调参数和自定义优化目标、评价标准的能力,便于按具体问题调整[2][11]。
在学术与工程研究中,LightGBM 被用于多种数据场景,例如医疗数据分类、室内定位、软件缺陷预测、网络入侵检测与航空异常事件识别等[12][10][13]。这类研究常将其与随机森林、XGBoost、CatBoost 等模型在同一数据集上对比,观察精度、训练时间等指标的差异[13]。由于其可直接使用整数编码的类别特征、自动处理缺失值,使用时通常不需要复杂的特征工程[14][11]。
局限
按叶子生长的策略在数据量较小或噪声较大时容易过拟合,可能产生深度很大的树,需要通过正则化、深度限制和超参数调节加以约束[7][15]。有研究指出,当样本量低于约 1 万条时,GOSS 的采样方式可能不足以反映数据分布,逐叶生长又会生成复杂度较高的树,从而削弱泛化能力[16]。
模型表现对参数较为敏感。学习率、叶子数、最大深度等需要调优,设置不当可能导致欠拟合或过拟合;在噪声大、类别不平衡的短文本数据上,不同次训练的结果也可能出现波动[15][17]。
在处理类别特征方面,LightGBM 通过将类别划分为两个子集来寻找最优分裂,官方文档建议对高基数的类别特征按数值特征处理,或将其映射到低维数值空间。它并不擅长与独热编码配合,在这类情形下表现可能不如其他算法;与逻辑回归或单棵决策树相比,这类提升模型的可解释性也较弱[15]。
作为一种近似分桶方法,直方图算法在分裂点精度上与逐个枚举特征取值的预排序算法并不完全一致,其精度取决于分桶数量等设置[6]。此外,EFB 降低特征维度依赖于特征之间存在互斥性这一前提,特征本身贡献独特时按此合并可能带来影响[5]。
参见
参考资料
- DMTK-Microsoft-Distributed-Machine-Learning-Toolkit [引用日期2026-10-14]
- SynapseML 中的 LightGBM 概觀 - Microsoft Fabric [引用日期2026-10-14]
- Welcome to LightGBM’s documentation! [引用日期2026-10-14]
- metrics [引用日期2026-10-14]
- LightGBM: A Highly Efficient Gradient Boosting Decision Tree [引用日期2026-10-14]
- google.com 上的网页 [引用日期2026-10-14]
- 特性 — LightGBM 4.6.0 文档 [引用日期2026-10-14]
- LightGBM [引用日期2026-10-14]
- LIPIcs-SAT-2022-7_(PDF) [引用日期2026-10-14]
- s41598-025-90832-4(PDF) [引用日期2026-10-14]
- google.com 上的网页 [引用日期2026-10-14]
- s41598-025-03599-z(PDF) [引用日期2026-10-14]
- citations [引用日期2026-10-14]
- similar [引用日期2026-10-14]
- Stavropoulos_mpked2238(PDF) [引用日期2026-10-14]
- 조기에 종료하여 모델의 과적합을 막는 기법이다 [引用日期2026-10-14]
- edu.ng 上的文件 [引用日期2026-10-14]