第8章:集成学习 — 西瓜书学习笔记
本文是周志华《机器学习》(西瓜书)第8章 集成学习(Ensemble Learning)的学习笔记,涵盖本章所有核心知识点,配有通俗类比与公式推导。
1个体与集成
集成学习通过投票法(分类)或平均法(回归)将多个”基学习器”组合起来。
集成有效的必要条件
- 个体学习器要有一定的**”准确性”**(至少比随机猜测好)
- 个体学习器之间要**”多样性”**(犯不同的错误)
误差-分歧分解(直观版本):
📐 公式
其中 是集成泛化误差, 是个体泛化误差的加权平均, 是分歧(个体之间有多不一致)。分歧越大,集成效果越好。
🍉 通俗类比
三个独立考官各自有 75% 准确率,但他们犯错的时候不一样。当一个人判断错误,另外两个很可能判断正确,多数投票后错误就被纠正了。这就是”好而不同”的力量。
两大范式
| 范式 | 个体关系 | 代表算法 | 能否并行 |
|---|---|---|---|
| Boosting | 串行、强依赖 | AdaBoost, GBDT, XGBoost | 否 |
| Bagging | 并行、独立 | 随机森林 | 是 |
2Boosting
Boosting 的核心思想:串行训练,每个新学习器致力于修正前一个学习器的错误。代表算法是 AdaBoost。
算法:AdaBoost
输入:训练集 D,基学习算法 L,迭代次数 T
- 初始化样本权重:w_i = 1/m
- for t = 1..T:
(a) 用分布 D_t 训练基学习器 h_t
(b) 计算 h_t 的误差:ε_t = Σ_i w_i · I(h_t(x_i)≠y_i)
(c) 若 ε_t > 0.5,停止(太差,放弃)
(d) 计算 h_t 的权重:α_t = (1/2)·ln((1-ε_t)/ε_t)
(e) 更新样本权重:w_i ← w_i · exp(-α_t·y_i·h_t(x_i)),再归一化 - 输出:H(x) = sign(Σ_t α_t · h_t(x))
关键公式解读
- :误差越小,该学习器的**投票权重越大**
- 权重更新:错分的样本权重乘 放大,正确的乘 缩小
- 时 ,学习器反向投票——说明比随机猜还差,不如取反
🍉 通俗类比
Boosting 像开车教练的迭代训练。第一圈全部学员一起开,教练把每个人犯的错记下来。第二圈时增加了出错学员的练车时间(提升错分样本的权重),第三圈再针对性地练,直到每个学员都能把握好重点路段。
📌 核心定义
AdaBoost 的指数损失函数:。可以证明 AdaBoost 正是该损失函数下的前向分步加法模型。
3Bagging 与随机森林
Bagging(Bootstrap Aggregating)
并行训练 个学习器,每个用自助采样法(有放回随机采样)从原始数据中抽取一个训练集(约含 63.2% 的样本),最终用投票法或平均法结合。
算法:Bagging
for t = 1..T:
从 D 中自助采样得到 D_t(每个 D_t 与 D 同大小)
用 D_t 训练基学习器 h_t
输出:H(x) = arg max_y Σ_t I(h_t(x)=y) // 投票
随机森林(Random Forest)
在 Bagging 基础上引入属性扰动:每个节点划分时,先从 个属性中随机选 个,再在这 个中选最优划分属性。一般 。
| Bagging | 随机森林 | |
|---|---|---|
| 样本扰动 | ✓ 自助采样 | ✓ 自助采样 |
| 属性扰动 | ✗ | ✓ 随机选 k 个属性 |
| 多样性来源 | 仅样本 | 样本 + 属性 |
🍉 通俗类比
随机森林就像一群互相不沟通的专家,每人只随机看一部分信息就做出判断。虽然每个专家信息不全,但正因为看的信息不一样,他们不会犯同样的错误,最终投票结果反而比一个全量信息的专家更稳健。
💡 技巧提示
OOB 估计:每个基学习器只用约 63.2% 的数据训练,剩下约 36.8% 是”袋外样本”(out-of-bag)。用这些袋外样本评估该学习器的性能,汇总后可以作为集成泛化误差的无偏估计——不需要额外划分验证集!
4结合策略
平均法(回归任务)
| 简单平均 | |
|---|---|
| 加权平均 |
投票法(分类任务)
| 绝对多数投票 | 得票过半才输出,否则拒绝预测 |
|---|---|
| 相对多数投票 | 得票最多就输出(必有结果) |
| 加权投票 | 每个学习器有不同的投票权重 |
学习法(Stacking)
把个体学习器的输出作为新特征,训练一个次级学习器(元学习器)来做最终决策。
⚠️ 注意事项
Stacking 的初级训练要用交叉验证/留出法产生次级训练集,不能直接用初级训练集的预测结果,否则容易过拟合。
5多样性
多样性增强方法
| 策略 | 具体做法 |
|---|---|
| 数据样本扰动 | 自助采样(Bagging)、序列采样(Boosting) |
| 输入属性扰动 | 随机子空间(随机森林中的属性随机选择) |
| 输出表示扰动 | 翻转部分样本标记、输出调制(ECOC 编码) |
| 算法参数扰动 | 不同超参数的同种算法、不同初始化的神经网络 |
多样性度量
对于两个分类器 ,定义:
然后可以计算不合度量、相关系数、Q-统计量等。如相关系数 。 表示独立,增加多样性。
6本章总结
📝 考试高频考点
- 集成有效的两个条件:准确性 + 多样性
- AdaBoost 的权重更新公式:错分样本权重放大,正确样本权重缩小
- Bagging vs Boosting:并行/串行、独立/依赖、方差/偏差
- 随机森林 vs Bagging:多了属性随机扰动
- OOB 估计的优点(无偏估计,不需要验证集)
- Stacking 中交叉验证的必要性
- 偏差-方差角度:Bagging 主要降方差,Boosting 主要降偏差
📌 核心定义
一句话总结:集成学习 = 集合多个”好用且不犯同样错误”的学习器。Boosting 串行修正错误(降偏差),Bagging 并行取平均/投票(降方差)。工业界的 XGBoost/LightGBM 本质都是这章思想的工程化实现。
| 范式 | 核心手法 | 降低什么 | 代表 |
|---|---|---|---|
| Boosting | 重赋权(关注难样本) | 偏差 | AdaBoost, GBDT |
| Bagging | 自助采样 + 投票 | 方差 | 随机森林 |
| Stacking | 学习如何组合 | 兼有 | — |