Appearance
第8章 集成学习
🎯 学习目标
- 理解"三个臭皮匠顶个诸葛亮"的集成学习思想
- 掌握Boosting和Bagging两大集成策略的区别
- 理解随机森林的随机性来源和优势
- 掌握多种结合策略:平均法、投票法、学习法
- 理解多样性对集成学习性能的重要影响
8.1 个体与集成
💡 集成学习的动机
集成学习(Ensemble Learning)通过构建并结合多个学习器来完成学习任务。俗话说"三个臭皮匠顶个诸葛亮",这正是集成学习的核心思想。
单个学习器 vs 集成学习器
| 方面 | 单个学习器 🧠 | 集成学习器 🧠🧠🧠 |
|---|---|---|
| 偏差/方差 | 偏差或方差较大 | 降低方差(Bagging)或偏差(Boosting) |
| 泛化能力 | 有限 | 更好的泛化性能 |
| 拟合风险 | 容易过拟合或欠拟合 | 平衡拟合 |
关键条件
个体学习器要"好而不同"——既要有一定的准确性,又要有多样性。
集成学习的类型
| 类型 | 说明 | 示例 |
|---|---|---|
| 同质集成 | 个体学习器属于同一类型(基学习器) | 都是决策树、都是神经网络 |
| 异质集成 | 个体学习器包含不同类型(组件学习器) | 决策树+SVM+神经网络,多样性更好 |
8.2 Boosting
🚀 Boosting策略
Boosting是一族可将弱学习器提升为强学习器的算法。其工作机制:先训练一个基学习器,再根据其表现调整训练样本分布,使后续学习器更关注之前分错的样本。
Boosting工作流程
- ⚖️ 初始化:所有样本权重相同
- 🎓 训练:根据当前权重训练学习器
- 📊 评估:计算学习器的错误率
- ⬆️ 更新:增加分错样本的权重
- 🔄 重复步骤2-4,直到达到预设数量
- 🤝 组合:加权组合所有学习器
核心思想
通过序列化训练,让后面的学习器专注于前面学习器的"短板"。
AdaBoost算法
AdaBoost(Adaptive Boosting)是最著名的Boosting算法之一。
学习器权重:
错误率
样本权重更新:
分类错误的样本权重增加,正确的减少。
✓ AdaBoost优势
- 泛化性能强
- 不易过拟合
- 可用于各种基学习器
- 不需要知道弱学习器的性能下界
⚠️ 注意
- 对噪声敏感
- 训练时间较长(串行)
- 基学习器不能太复杂
8.3 Bagging与随机森林
📦 Bagging策略
Bagging(Bootstrap AGGregatING)基于自助采样法(Bootstrap Sampling),通过并行训练多个学习器并进行结合来降低方差。
Bagging工作流程
1. 自助采样:
- 从数据集D中有放回采样
- 每次采样m个样本
- 生成T个训练集
- 约36.8%样本未被采到(OOB)
2. 并行训练:
- 在每个采样集上独立训练
- 训练T个基学习器
- 可并行化,训练快
- 学习器之间相互独立
3. 结合预测:
- 分类任务:简单投票法
- 回归任务:简单平均法
为什么有效?
通过训练集的扰动,个体学习器之间产生差异,降低整体方差。
随机森林 (Random Forest)
随机森林是Bagging的一个扩展变体,以决策树为基学习器,在Bagging的基础上进一步引入了随机属性选择。
两层随机性
| 随机性 | 方法 | 说明 |
|---|---|---|
| 样本随机 | Bootstrap采样 | 每棵树训练不同的样本子集,有放回采样 |
| 特征随机 | 随机选择k个属性 | 每次划分只考虑k个特征,推荐 |
随机森林的三大优势:
- ⚡ 训练快速:可并行,决策树简单
- 🎯 性能优秀:泛化能力强,准确度高
- 🛡️ 鲁棒性好:对噪声和过拟合抗性强
随机森林交互演示
观察多棵决策树如何通过投票机制得到最终预测,理解特征随机和样本随机的作用。
特征空间
类别 0
类别 1
测试点
集成预测
点击"训练森林"开始预测
310
01
01
💡 随机森林原理
样本随机(Bagging)
每棵树使用自助采样(Bootstrap)从训练集中有放回地抽取样本,约63.2%的样本会被选中
特征随机
每次分裂时,从所有特征中随机选择k个特征,通常k = log₂d,增强树的多样性
投票机制
分类任务:多数投票(Majority Voting)
回归任务:平均预测值(Averaging)
为什么随机森林有效?
- 降低方差:多个弱学习器的平均降低了过拟合风险
- 增强鲁棒性:单棵树的错误可被其他树纠正
- 特征重要性:可以评估每个特征的贡献度
8.4 结合策略
🤝 如何结合多个学习器?
学习器结合可能从三个方面带来好处:统计、计算、表示。
| 策略 | 适用场景 | 方法 |
|---|---|---|
| 平均法 | 回归任务 | 简单平均、加权平均 |
| 投票法 | 分类任务 | 绝对多数投票、相对多数投票、加权投票 |
| 学习法 | Stacking | 训练元学习器学习如何组合 |
Stacking
- 初级学习器:在原始数据集上训练多个不同的学习器
- 次级学习器:将初级学习器的输出作为新特征,训练元学习器
- 优势:理论上可以学习到最优的结合方式
8.5 多样性
🎨 为什么需要多样性?
集成学习要取得好的性能,个体学习器应"好而不同"。多样性(Diversity)是集成学习成功的关键。
增强多样性的方法
| 方法 | 具体手段 |
|---|---|
| 数据样本扰动 | Bootstrap采样、不同样本权重、不同样本子集 |
| 输入属性扰动 | 随机子空间、随机特征选择、特征变换 |
| 输出表示扰动 | 翻转输出、ECOC编码、类别重标记 |
| 算法参数扰动 | 不同参数设置、不同随机初始化、不同学习算法 |
权衡
多样性和准确性之间存在冲突。理想的集成应在两者间取得最佳平衡。
📝 本章小结
总结
- ✅ 集成学习通过构建并结合多个学习器,往往能获得比单一学习器更好的泛化性能
- ✅ Boosting串行训练,关注难分样本,主要降低偏差;Bagging并行训练,降低方差
- ✅ 随机森林在Bagging基础上引入随机特征选择,是最成功的集成学习方法之一
- ✅ 结合策略包括平均法、投票法和学习法(Stacking),应根据任务选择合适的策略
- ✅ 多样性是集成学习的关键,可通过数据、属性、输出、参数等多种方式增强
- ✅ 实践中随机森林和GBDT(梯度提升决策树)是最常用和效果最好的集成方法