Ch04 机器学习修订于 二〇二六年七月六日

概念-XGBoost

一句话理解

XGBoost(eXtreme Gradient Boosting)是 2014 年由陈天奇提出的梯度提升树算法,2026 年仍是结构化/表格数据的王者,在 Kaggle 竞赛和工业界中统治地位未被深度学习撼动。

核心创新

1. 正则化目标函数

XGBoost 在传统 GBDT(Gradient Boosting Decision Tree)的损失函数基础上加入了正则化项:

Obj = Σ L(y_i, ŷ_i) + Σ Ω(f_k)

其中 Ω(f) = γT + 1/2 λ||w||²
  • T:叶子节点数量(γ 控制复杂度)
  • ||w||²:叶子权重的 L2 正则化(λ 控制平滑度)
  • 防止过拟合,提升泛化能力

这与传统 GBDT 只优化损失函数有本质区别,是 XGBoost 名字中”eXtreme”的来源之一。

2. 近似分裂算法(Approximate Algorithm)

传统 GBDT 对每个特征的每个可能分裂点都计算增益,在数据量大时非常慢。

XGBoost 的近似分裂算法:

  • 按特征值的分位数(quantile)提出候选分裂点
  • 对候选点计算分裂增益,选择最优
  • 全局变体(proposal once at beginning)和局部变体(proposal per split)
  • 速度提升 10-100 倍,精度损失可忽略

3. 列采样(Column Subsampling)

借鉴随机森林的思想,XGBoost 支持两种采样:

  • 按树采样:每棵树随机选择部分特征
  • 按层采样:树的每一层随机选择部分特征
  • 进一步降低过拟合,减少计算量

4. 加权分位数草图(Weighted Quantile Sketch)

对于大规模数据,XGBoost 使用加权分位数草图来高效估计特征分位点,支持合并操作,适合分布式计算。

5. 系统级优化

  • 列块(Column Block):按列存储数据,利用缓存局部性
  • 缓存感知访问:预取梯度统计量到 CPU 缓存
  • 稀疏感知:自动处理缺失值,学习最优缺省方向
  • 并行化:特征维度并行计算分裂增益
  • 核外计算:数据超出内存时,利用磁盘

XGBoost vs LightGBM vs CatBoost 对比

维度XGBoostLightGBMCatBoost
开发者陈天奇 (DMLC)微软Yandex
发布时间201420172017
树生长方式Level-wise(按层生长)Leaf-wise(按叶生长)Symmetric Tree
训练速度快最快中等
内存占用中等低高
类别特征需手动编码需手动编码原生支持
缺失值处理自动学习方向自动处理自动处理
GPU 支持好好好
小数据表现好容易过拟合最好
大数据表现好最好好
超参数敏感度中等高低(默认参数好用)
2026年社区极活跃活跃活跃
最佳场景通用、竞赛大规模数据、追求速度类别特征多、不想调参

为什么深度学习打不过 XGBoost

对于表格数据(tabular data),XGBoost 在 2026 年仍能击败深度学习,原因如下:

1. 数据特性决定

  • 表格数据特征独立:图像/文本有空间/语义结构,CNN/Transformer 利用这些结构;表格数据的列之间没有天然的局部结构
  • 特征尺度差异大:表格数据中混合了数值、类别、序数特征,尺度差异巨大,深度学习需要大量归一化
  • 缺失值普遍:表格数据中缺失值常见,树的稀疏感知天然处理这一点

2. 数据规模

  • 中小规模数据:工业界大多数表格数据在 1K-100K 样本量级,深度学习需要更多数据
  • XGBoost 在 10K 样本以下表现更好:深度学习需要大量数据才能发挥优势
  • 小样本泛化:树的归纳偏置更简单,小样本时不容易过拟合到噪声

3. 训练效率

  • 训练速度:XGBoost 秒级到分钟级;深度学习需要分钟级到小时级
  • 超参数:XGBoost 只有几个关键超参数(max_depth, learning_rate, n_estimators),深度学习超参数空间大得多
  • 可重现性:XGBoost 确定性训练;深度学习受随机种子影响大

2026 年地位

XGBoost 在 2026 年保持着以下核心地位:

  1. Kaggle 表格数据任务首选:大部分获奖方案仍以 XGBoost 为主要模型
  2. 工业界基石:金融风控、推荐系统、医疗诊断、工业预测的核心算法
  3. 基线模型:任何表格数据任务的第一件事就是跑 XGBoost
  4. 深度学习基准:新的表格数据深度学习模型(TabNet、FT-Transformer、TabPFN)都以 XGBoost 为对比基准

关键超参数

参数含义典型范围说明
max_depth树最大深度3-10越大越复杂,越容易过拟合
learning_rate学习率0.01-0.3常用 0.1,越小需要更多树
n_estimators树数量100-1000配合 early_stopping 使用
subsample行采样比例0.5-1.0每棵树使用多少样本
colsample_bytree列采样比例0.5-1.0每棵树使用多少特征
reg_alphaL1 正则化0-10特征选择,稀疏模型
reg_lambdaL2 正则化0-10防止过拟合
gamma分裂最小增益0-5越大越保守

适用场景

最适合的场景

  1. 结构化/表格数据:金融、医疗、电商、工业数据
  2. 中小规模数据:1K-1M 样本,XGBoost 表现优异
  3. 需要特征重要性解释:树模型天然提供特征重要性
  4. 快速迭代:训练快,适合快速实验
  5. 竞赛和科研基线:几乎总是第一个尝试的模型

不太适合的场景

  1. 图像、文本、语音:深度学习的主场
  2. 超大规模数据:1B+ 样本,LightGBM 可能更快
  3. 在线学习:XGBoost 主要支持批量训练,虽然也有增量训练

相关笔记

来源

关联6

知识图谱

局部图谱 · 点节点跳转