Ch04 机器学习
集成学习 (Ensemble Learning)
概述
集成学习(Ensemble Learning)是一种通过组合多个基学习器(Base Learner)来获得更优预测性能的机器学习范式。其核心思想是”三个臭皮匠,顶个诸葛亮”——多个弱学习器通过适当的组合策略,可以形成一个强学习器。集成学习是 Kaggle 竞赛和工业应用中的常胜将军,XGBoost、LightGBM、Random Forest 等集成方法长期统治结构化数据任务。
为什么集成学习有效
从偏差-方差分解的角度看:
- Bagging:主要降低方差(Variance),通过并行训练和平均/投票平滑预测
- Boosting:主要降低偏差(Bias),通过序贯训练逐步纠正错误
- Stacking:通过元学习器学习各基学习器的最优组合权重
三大集成范式
1. Bagging (Bootstrap Aggregating)
并行训练多个同质基学习器,通过 Bootstrap 抽样产生不同的训练子集。
代表算法:Random Forest(Bagging + 决策树 + 特征随机采样)
关键特性:
- 基学习器之间相互独立
- 可并行训练
- 主要降低方差
- 对异常值和不完整数据鲁棒
2. Boosting
序贯训练基学习器,每个新学习器重点关注前一个学习器犯错的样本。
代表算法:AdaBoost, GBM, XGBoost, LightGBM, CatBoost
关键特性:
- 基学习器相互依赖(串行)
- 每个学习器修正前一个的残差
- 主要降低偏差
- 对异常值敏感
3. Stacking (Stacked Generalization)
训练多个异构基学习器,用元学习器(Meta-Learner)学习如何组合它们的输出。
关键特性:
- 基学习器可以是不同类型(如 RF + XGBoost + LR)
- 元学习器学习最优组合
- 灵活性最高
- 训练代价高,可能过拟合
Bagging vs Boosting 详细对比
| 维度 | Bagging | Boosting |
|---|---|---|
| 训练方式 | 并行 | 串行(序贯) |
| 样本权重 | 相等(Bootstrap 均匀抽样) | 自适应(错误样本权重增加) |
| 基学习器关系 | 独立 | 依赖(当前学习器依赖前一个) |
| 主要降低 | 方差 | 偏差 |
| 目标 | 减少过拟合 | 减少欠拟合 |
| 对噪声敏感度 | 低 | 高 |
| 并行化 | 容易 | 困难(但 XGBoost/LightGBM 做了优化) |
| 训练速度 | 快(并行) | 慢(串行,但高效实现可接近) |
| 代表算法 | Random Forest | XGBoost, LightGBM, CatBoost |
| 典型场景 | 高方差模型(深树) | 高偏差模型(浅树) |
主要集成算法对比
| 算法 | 范式 | 基学习器 | 核心创新 | 年份 | 2026 使用率 |
|---|---|---|---|---|---|
| Random Forest | Bagging | 决策树 | 特征随机采样 + Bootstrap | 2001 | 极高 |
| AdaBoost | Boosting | 任意(通常浅树) | 自适应样本权重 | 1995 | 中 |
| GBM | Boosting | 决策树 | 梯度提升 + 残差拟合 | 1999 | 中 |
| XGBoost | Boosting | 决策树 | 正则化 + 二阶导数 + 系统优化 | 2014 | 极高 |
| LightGBM | Boosting | 决策树 | GOSS + EFB + 直方图算法 | 2017 | 极高 |
| CatBoost | Boosting | 决策树 | 排序提升 + 类别特征原生支持 | 2017 | 高 |
| Stacking | Stacking | 异构 | 元学习器组合 | 1992 | 中 |
| Voting | 投票 | 异构 | 硬投票/软投票 | - | 高 |
| Blending | Stacking 变体 | 异构 | 简单 Hold-out 验证 | - | 中 |
集成策略
组合方式
| 策略 | 说明 | 适用任务 |
|---|---|---|
| 多数投票 (Majority Voting) | 每个基学习器一票,得票多者胜 | 分类 |
| 加权投票 (Weighted Voting) | 性能好的学习器权重更高 | 分类 |
| 简单平均 (Averaging) | 所有基学习器输出取平均 | 回归 |
| 加权平均 (Weighted Averaging) | 按权重系数加权平均 | 回归 |
| 元学习器 (Meta-Learner) | 用另一个模型学习组合方式 | 分类/回归 |
多样性保障
集成学习有效的前提是基学习器之间具有多样性(Diversity):
| 多样性来源 | 方法 | 示例 |
|---|---|---|
| 数据多样性 | 不同训练子集 | Bootstrap 抽样(Bagging) |
| 特征多样性 | 不同特征子集 | Random Subspace, Random Forest |
| 参数多样性 | 不同超参数 | 不同深度的决策树 |
| 算法多样性 | 不同学习算法 | Stacking(RF + XGBoost + LR) |
| 输出多样性 | 不同训练目标 | 多任务学习 |
2026 年趋势
- 大模型集成:LLM 的集成(多个 LLM 投票或融合)成为新范式
- 自动集成:AutoML 自动搜索最优集成策略
- 集成蒸馏:将集成模型的知识蒸馏到单一模型中,兼顾性能和效率
- 深度集成:深度神经网络与集成学习的结合(如 Deep Ensemble, MC Dropout)
相关笔记
- Bagging (Bootstrap Aggregating) - Bagging 并行集成详解
- Boosting (提升法) - Boosting 序贯集成详解
- 决策树 (Decision Tree) - 基学习器:决策树
- 偏差与方差 (Bias-Variance Tradeoff) - 集成学习的理论基础
来源
- Breiman (1996) - “Bagging Predictors”: https://link.springer.com/article/10.1007/BF00058655
- Freund & Schapire (1997) - “A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting”: https://www.sciencedirect.com/science/article/pii/S002200009791504X
- Chen & Guestrin (2016) - “XGBoost: A Scalable Tree Boosting System”: https://arxiv.org/abs/1603.02754
- Ke et al. (2017) - “LightGBM: A Highly Efficient Gradient Boosting Decision Tree”: https://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree