Skip to content

LightGBM 梯度提升机

本章目标

  1. 明确本分册对应的 LightGBM 源码入口与运行方式。
  2. 理解当前 LightGBM 文档各章节分别负责解释什么内容。
  3. 建立从数据、模型、训练到分类评估的整体阅读路线。

对应代码速览

组件路径说明
数据生成data_generation/ensemble.pyEnsembleData.lightgbm() 生成高维多类别分类数据
数据导出data_generation/__init__.py导出 lightgbm_data
训练封装model_training/ensemble/lightgbm.pytrain_model(...) 封装 lightgbm.LGBMClassifier 训练——含可选依赖检查
端到端流水线pipelines/ensemble/lightgbm.py完成数据拆分、标准化、LightGBM 训练、预测和分类评估
混淆矩阵可视化result_visualization/confusion_matrix.py绘制测试集混淆矩阵(4×4 多分类热力图)
ROC 曲线可视化result_visualization/roc_curve.py绘制 ROC 曲线(多分类 one-vs-rest)
特征重要性可视化result_visualization/feature_importance.py绘制特征重要性柱状图(20 个特征排序)

默认配置速览(来自源码)

项目当前实现
训练模型LGBMClassifier(n_estimators=300, learning_rate=0.05, num_leaves=31, max_depth=-1, subsample=0.9, colsample_bytree=0.9, random_state=42, n_jobs=-1)
数据来源make_classification(n_samples=1000, n_features=20, n_informative=8, n_redundant=5, n_classes=4, class_sep=0.6)——高维四分类
特征预处理StandardScaler().fit_transform(X_train)transform(X_test)——训练/测试分离标准化
数据拆分train_test_split(test_size=0.2, stratify=y, random_state=42)——分层抽样
评估呈现混淆矩阵 + ROC 曲线 + 特征重要性 + 训练耗时日志

LightGBM vs GBDT 默认配置对比

配置项GBDT (sklearn)LightGBM
数据维度8 特征 × 3 类20 特征 × 4 类
树数量200300
学习率0.10.05
复杂度控制max_depth=3num_leaves=31 + max_depth=-1
行采样subsample=1.0subsample=0.9(GOSS)
列采样colsample_bytree=0.9
依赖sklearn 内置pip install lightgbm
训练方式Level-wise 生长Leaf-wise 生长 + 直方图加速

阅读路线

  1. 数学原理
  2. 数据构成
  3. 思路与直觉
  4. 模型构建
  5. 训练与预测
  6. 评估与诊断
  7. 工程实现
  8. 练习与参考文献

如何运行

示例代码

bash
# 前置:安装 lightgbm
pip install lightgbm

# 运行流水线
python -m pipelines.ensemble.lightgbm

理解重点

  • lightgbm 是可选依赖——首次运行前需手动安装。当前训练源码有 try/except ImportError 保护。
  • 这个命令会串起当前 LightGBM 分册中最核心的工程流程——以 Leaf-wise 浅层回归树为基学习器,训练一个含 300 个基学习器的 GBDT 集成。
  • 当前流程是有监督分类——包含训练/测试切分、标准化(训练集拟合/测试集变换)、预测和概率输出。
  • 与 Bagging 和 GBDT 不同,LightGBM 使用直方图算法加速训练——在处理大规模数据时速度优势显著。

先修

小结

  • 本分册严格对应当前仓库中的 LightGBM 源码实现。
  • LightGBM 的核心特点:Leaf-wise 生长 + 直方图加速 + GOSS 采样 + EFB 特征捆绑——在 GBDT 的数学框架上进行了激进的工程优化。
  • 当前使用高维四分类数据(20 特征 × 4 类)+ 浅层直方图树 num_leaves=31 + LGBMClassifier(n_estimators=300),是展示 LightGBM 处理高维数据速度优势的经典教学配置。