Skip to content

XGBoost 极限梯度提升

本章目标

  1. 明确本分册对应的 XGBoost 源码入口与运行方式——注意这是回归任务,与 Bagging/GBDT/LightGBM 的分类任务不同。
  2. 理解当前 XGBoost 文档各章节分别负责解释什么内容。
  3. 建立从数据、模型、训练到回归评估的整体阅读路线。

对应代码速览

组件路径说明
数据生成data_generation/ensemble.pyEnsembleData.xgboost() 返回加州房价真实数据集
数据导出data_generation/__init__.py导出 xgboost_data
训练封装model_training/ensemble/xgboost.pytrain_model(...) 封装 xgboost.XGBRegressor 训练——含可选依赖检查
端到端流水线pipelines/ensemble/xgboost.py完成数据拆分、XGBoost 训练、预测和回归评估
残差分析可视化result_visualization/residual_plot.py绘制预测残差散点图和分布图
特征重要性可视化result_visualization/feature_importance.py绘制特征重要性柱状图(8 个特征排序)

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

项目当前实现
训练模型XGBRegressor(n_estimators=300, learning_rate=0.05, max_depth=6, min_child_weight=1, subsample=0.9, colsample_bytree=0.9, gamma=0.0, reg_alpha=0.0, reg_lambda=1.0, random_state=42, n_jobs=-1)
数据来源fetch_california_housing(as_frame=True)——加州房价真实数据集,20640 样本 × 8 特征
特征预处理无标准化——树模型天然对特征缩放不敏感
数据拆分train_test_split(test_size=0.2, random_state=42)——无 stratify(回归无类别)
评估呈现残差分析图 + 特征重要性 + 训练耗时日志

XGBoost 与本仓库其他集成模型的对比

配置项BaggingGBDTLightGBMXGBoost
任务类型分类分类分类回归
数据双月牙(合成)8 维合成20 维合成加州房价(真实)
样本数500500100020640
基学习器DecisionTreeGradientBoostingLGBMClassifierXGBRegressor
树数量80200300300
学习率0.10.050.05
树深度max_depth=Nonemax_depth=3num_leaves=31max_depth=6
标准化
分层抽样
依赖sklearn 内置sklearn 内置pip install lightgbmpip install xgboost
评估混淆矩阵 + ROC混淆矩阵 + ROC + 特征重要性 + 学习曲线混淆矩阵 + ROC + 特征重要性残差图 + 特征重要性

阅读路线

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

如何运行

示例代码

bash
# 前置:安装 xgboost
pip install xgboost

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

理解重点

  • xgboost 是可选依赖——首次运行前需手动安装。当前训练源码有 try/except ImportError 保护。
  • 这是本仓库集成学习分册中唯一的回归任务——输出是连续的房价预测值,而非离散类别。
  • XGBoost 使用真实数据集(非合成数据)——20640 条加州房价记录,充分体现 XGBoost 在工业级表格数据上的工程实力。

先修

小结

  • 本分册严格对应当前仓库中的 XGBoost 源码实现。
  • XGBoost 的核心特点:二阶泰勒展开(Hessian)+ 显式 L1/L2 正则化 + 加权分位数草图 + 稀疏感知——在 GBDT 数学框架上引入了更精确的目标函数近似和更强的正则化手段。
  • 当前使用加州房价真实数据 + XGBRegressor(n_estimators=300, max_depth=6),是展示 XGBoost 在工业回归任务上综合实力的经典教学配置。