Skip to content

LightGBM

核心思想

LightGBM 是微软开发的高效梯度提升框架,在 XGBoost 基础上通过两大创新显著降低训练复杂度:GOSS (单边梯度采样)EFB (互斥特征捆绑)

与 XGBoost 的对比

维度XGBoostLightGBM
树生长策略Level-wise(逐层)Leaf-wise(逐叶)
分割点发现预排序 / 近似直方图算法
样本采样均匀随机GOSS 梯度采样
特征处理EFB 特征捆绑

直方图算法 (Histogram-Based)

将连续特征离散化为 k 个 bin(通常 k=256),通过直方图统计梯度之和与样本数,搜索最优分割点。

  • 时间复杂度从 O(Nd) 降至 O(kd)
  • 内存消耗大幅减少

直方图做差技巧:父节点直方图 = 左子 + 右子,因此只需计算较小子节点的直方图。

GOSS:单边梯度采样

动机

梯度大的样本对信息增益贡献更大。GOSS 保留所有梯度大的样本(前 a%),对梯度小的样本随机采样 b%

算法

  1. 按梯度绝对值排序
  2. 选取前 a×N 个大梯度样本(集合 A
  3. 从剩余样本中随机选取 b×(1a)×N 个(集合 B
  4. B 中样本的梯度乘以放大系数 1ab,以修正采样偏差

近似增益

V~j(d)=1n((xiAlgi+1abxiBlgi)2nlj+(xiArgi+1abxiBrgi)2nrj)

EFB:互斥特征捆绑

动机

高维稀疏数据中(例如 one-hot 编码),许多特征几乎互斥(不同时非零)。可以将它们捆绑成一个复合特征,降低维度。

方法

  1. 构建特征冲突图(两个特征同时非零的样本越多,冲突越大)
  2. 使用贪心图着色算法将低冲突特征分为同色组
  3. 通过偏移方式将同组特征合并为一个数值特征

Leaf-wise 生长

与 XGBoost 的 Level-wise 不同,LightGBM 每次选择增益最大的叶子节点进行分裂:

  • 优点:相同 leaf 数下模型精度更高
  • 缺点:容易过拟合(需要配合 max_depth 限制)

代码对应

bash
python -m pipelines.ensemble.lightgbm