LightGBM
核心思想
LightGBM 是微软开发的高效梯度提升框架,在 XGBoost 基础上通过两大创新显著降低训练复杂度:GOSS (单边梯度采样) 和 EFB (互斥特征捆绑)。
与 XGBoost 的对比
| 维度 | XGBoost | LightGBM |
|---|---|---|
| 树生长策略 | Level-wise(逐层) | Leaf-wise(逐叶) |
| 分割点发现 | 预排序 / 近似 | 直方图算法 |
| 样本采样 | 均匀随机 | GOSS 梯度采样 |
| 特征处理 | — | EFB 特征捆绑 |
直方图算法 (Histogram-Based)
将连续特征离散化为
- 时间复杂度从
降至 - 内存消耗大幅减少
直方图做差技巧:父节点直方图 = 左子 + 右子,因此只需计算较小子节点的直方图。
GOSS:单边梯度采样
动机
梯度大的样本对信息增益贡献更大。GOSS 保留所有梯度大的样本(前
算法
- 按梯度绝对值排序
- 选取前
个大梯度样本(集合 ) - 从剩余样本中随机选取
个(集合 ) - 对
中样本的梯度乘以放大系数 ,以修正采样偏差
近似增益
EFB:互斥特征捆绑
动机
高维稀疏数据中(例如 one-hot 编码),许多特征几乎互斥(不同时非零)。可以将它们捆绑成一个复合特征,降低维度。
方法
- 构建特征冲突图(两个特征同时非零的样本越多,冲突越大)
- 使用贪心图着色算法将低冲突特征分为同色组
- 通过偏移方式将同组特征合并为一个数值特征
Leaf-wise 生长
与 XGBoost 的 Level-wise 不同,LightGBM 每次选择增益最大的叶子节点进行分裂:
- 优点:相同 leaf 数下模型精度更高
- 缺点:容易过拟合(需要配合
max_depth限制)
代码对应
bash
python -m pipelines.ensemble.lightgbm