【机器学习】集成方法 Boosting、Bagging 和 Stacking 详解
【精选优质专栏推荐】
- 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用
- 《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看
- 《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解
- 《网安渗透工具使用教程(全)》 —— 一站式工具手册
- 《CTF 新手入门实战教程》 —— 从题目讲解到实战技巧
- 《前后端项目开发(新手必知必会)》 —— 实战驱动快速上手
每个专栏均配有案例与图文讲解,循序渐进,适合新手与进阶学习者,欢迎订阅。

前言
团结就是力量。这句众所周知的格言恰如其分地概括了集成方法(ensemble methods)的精髓:这是机器学习(ML)中最强大的方法之一——仅次于深度神经网络——通过组合多个模型来解决同一预测任务,从而有效应对复杂数据驱动的复杂问题。本文将介绍构建集成模型的三种常见方式:提升(boosting)、装袋(bagging)和堆叠(stacking)。
集成方法适用于数据量中等到大、特征维度多且数据模式复杂的场景,比如金融风控、推荐系统、文本分类或图像识别。
装袋(Bagging)
装袋方法涉及独立且并行地训练多个模型。通常,这些模型属于同一类型,例如一组决策树或多项式回归器。每个模型的差异在于,它们各自都在整体训练数据的随机子集上进行训练。每个模型返回预测结果后,所有预测结果会被聚合为最终的整体预测。具体聚合方式取决于预测任务类型:
- 对于回归模型的装袋集成,数值预测结果会取平均值。
- 对于分类模型的装袋集成,类别预测结果通过多数投票的方式进行合并。
在这两种情况下,相比单独的机器学习模型,聚合多个模型的预测结果可以降低方差,并提升整体性能。
数据随机性
装袋中的随机数据选择可以基于实例(instance-based)或特征(attribute-based):
- 基于实例的装袋:模型在随机抽取的数据实例子集上训练,通常通过称为自助采样(bootstrapping)的过程进行有放回采样。有放回采样意味着数据集中某个特定实例可能在某个模型的训练中未被选择、被选择一次,甚至被选择多次,而这些模型最终会成为集成的一部分。
- 基于特征的装袋:集成中的每个模型使用训练数据中不同的随机特征子集,从而在模型之间引入多样性。这种方法有助于缓解所谓的维度灾难问题:当在特征数量非常多的数据集上训练机器学习模型时,可能导致效率下降、过拟合(模型过度学习数据并记忆数据,丧失对未来数据的泛化能力)等问题。
上述两种随机选择过程引入的多样性,使集成方法能够更全面地学习数据的不同“区域”,同时避免过拟合,从而最终增强系统的鲁棒性。

随机森林示例
随机森林(Random Forest)是装袋方法的一个广泛使用的典型示例,它结合了基于实例和基于特征的随机性。顾名思义,随机森林会构建多棵决策树,每棵树都在经过自助采样(bootstrapped sample)的数据子集上训练,同时每棵树使用训练数据的随机特征子集。这种双重采样机制增强了树之间的多样性,并降低了模型之间的相关性。
实践建议:
- 树的数量(n_estimators)通常越多,模型方差越小,但训练时间增加;
- 每棵树的最大深度(max_depth)可以控制过拟合;
- 特征子集大小(max_features)可调节多样性,常用“sqrt”或“log2”。
提升(Boosting)
与装袋集成中多个模型并行训练、各自预测结果再进行聚合不同,提升方法采用顺序训练的策略。在提升集成中,多个同类型模型依次训练,每个模型都会针对前一个模型产生的显著错误进行纠正。随着一系列模型逐步修正错误,最终的集成模型能够生成更强的整体解决方案,对数据中的复杂模式具有更高的准确性和鲁棒性。

XGBoost 示例
XGBoost(Extreme Gradient Boosting)是基于提升(boosting)的集成方法中非常流行的示例。XGBoost 采用顺序训练模型的方式,每一步都重点修正前一步的错误,以提高整体预测性能。它以高效、快速和在竞争性机器学习任务中表现优异而著称。虽然 XGBoost 并不限于决策树,但它与随机森林类似,因为它特别适用于决策树集成模型的操作。
技术深度:
- 学习率(learning_rate)控制每棵树对最终模型的贡献,过大会导致过拟合;
- 每棵树的深度影响模型捕捉复杂模式的能力;
- 正则化参数(lambda、alpha)用于抑制过拟合,提高泛化能力。
堆叠(Stacking)
堆叠是一种稍微复杂的集成方法,通常会结合不同类型的模型(如决策树分类器、逻辑回归分类器和神经网络等),这些模型分别在相同数据上进行训练。关键点在于:不同类型的模型通常对数据中的模式捕捉方式不同。此外,堆叠并不仅仅是简单聚合各模型的预测结果,而是进一步使用各模型的预测作为最终阶段模型(meta-model)的输入。这个 meta-model 会学习如何权衡并组合各基模型的预测结果,就好像它们是新的数据实例一样。

堆叠泛化(Stacked Generalization)是堆叠方法中常用的一种策略,其中的 meta-model(最终阶段模型)通常是一个简单的线性回归或逻辑回归模型。
实践建议:
- 选择不同类型的基模型可以提高多样性;
- 采用交叉验证生成 meta-model 训练集,防止过拟合;
- 对于大规模数据,可以只使用部分基模型预测结果训练 meta-model,平衡效率与准确性。
三种集成方法对比
| 方法 | 模型训练方式 | 聚合策略 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| Bagging | 并行 | 平均/多数投票 | 降低方差,易并行 | 不一定降低偏差 | 决策树集成、随机森林 |
| Boosting | 顺序 | 逐步修正错误 | 降低偏差,提高精度 | 易过拟合,训练慢 | 分类/回归、XGBoost、LightGBM |
| Stacking | 并行 + meta-model | meta-model 权重组合 | 利用多模型优势,提升精度 | 实现复杂,需要调参 | 竞赛、复杂任务、混合模型 |
总结
像提升(Boosting)、装袋(Bagging)和堆叠(Stacking)这样的集成方法,通过组合多个机器学习模型的优势来提高预测的准确性和鲁棒性。每种方法独特的特性可以帮助你更成功地应对复杂的数据挑战,将单个模型可能存在的弱点转化为集体的优势。
- 在小数据集上优先使用 Bagging,避免过拟合;
- 对于特征复杂、模式多变的数据集,可优先选择 Boosting;
- 需要综合多种模型能力或参加竞赛时,Stacking 是最优选择。
更多推荐


所有评论(0)