← 返回题目列表

Bagging 和 Boosting 有什么区别?

高频 中等 第 5 / 25 题 更新于 2026/07/28
集成学习BaggingBoosting偏差方差

简化版

BaggingBoosting 是集成学习的两大流派。Bagging(如随机森林)并行训练多个条件上可独立拟合、但统计误差通常相关的基学习器,每个用自助采样的不同数据子集,预测时平等地投票/平均;它主要降低方差(多个高方差模型平均后方差骤降),常搭配低偏差、高方差且不稳定的模型(如较深树)。Boosting(如 AdaBoost、GBDT)串行训练,每个新模型专门纠正前面模型的错误(加大错分样本权重 / 拟合残差),预测时加权组合;它主要降低偏差(把弱模型逐步叠加成强模型),常用受限浅树控制每轮步幅,但容量仍需验证。记忆锚点:Bagging 并行降方差、Boosting 串行降偏差。

详细版

核心对比:

维度BaggingBoosting
训练方式并行(可同时训练)串行(依赖前一个)
基学习器关系可并行拟合,误差通常相关后者依赖当前整体模型
数据自助采样(bootstrap)不同子集全量,调整样本权重/拟合残差
样本权重相等动态调整(错分样本加权)
基学习器权重相等(平权投票)不等(表现好的权重大)
主要降低方差偏差
基学习器倾向强(低偏差高方差,如深树)弱(高偏差低方差,如浅树)
过拟合风险低(平均抗过拟合)较高(过度纠错会过拟合噪声)
代表随机森林AdaBoost、GBDT、XGBoost

为什么 Bagging 降方差、Boosting 降偏差(核心):

  • Bagging:若误差方差为 σ²、两两相关为 ρ,B 个模型平均的方差约为 ρσ²+(1-ρ)σ²/B;只有理想独立时才是 σ²/B,偏差也并非数学上永远不变。
  • Boosting:每轮拟合前面的残差/错误,不断减小训练误差(偏差) → 治高偏差(欠拟合)。

完整版教学

一、两条不同的集成路线

集成学习要让多个基学习器「好而不同」,但制造多样性和组合的方式有两种截然不同的路线:

  • Bagging:让基学习器各自独立地在不同数据子集上学,然后平权综合——靠「独立 + 平均」降方差。
  • Boosting:让基学习器接力式地一个纠正一个的错误,然后加权综合——靠「逐步纠错」降偏差。

理解它们的区别,关键抓住训练方式(并行/串行)主攻目标(方差/偏差) 两条。

二者不能只按“并行/串行”背诵,还要说明统计目标:对高方差基学习器取平均,方差下降幅度受模型间相关系数限制;Boosting 每轮沿当前组合模型的错误或损失梯度新增学习器,主要改善偏差。实际模型也会交叉使用技巧,例如随机梯度提升同时做行采样,因此分类依据是训练依赖和组合机制,而不是是否出现采样。

二、Bagging:并行 + 自助采样 + 平权平均

Bagging = Bootstrap Aggregating(自助采样聚合),流程:

  1. 从训练集有放回地随机抽样(bootstrap),得到多个大小相同但内容不同的子集。
  2. 每个子集独立训练一个基学习器(互不影响,可并行)。
  3. 预测时平权组合:分类多数投票、回归取平均。

关键特征:

  • 基学习器可在给定重采样数据后并行拟合、聚合时地位平等;因为共享原始训练集,它们的误差通常并不独立。
  • 每个只看到部分(约 63%)样本(自助采样的性质),制造了数据层面的多样性。
  • 随机森林在此基础上再加「每次分裂随机选特征子集」,进一步增加多样性。

三、Boosting:串行 + 逐步纠错 + 加权组合

Boosting 流程完全不同:

  1. 先训练一个基学习器。
  2. 看它在哪些样本上错了,让下一个基学习器重点关注这些错样本(AdaBoost 提高错分样本权重;GBDT 让下一棵树拟合当前的残差/负梯度)。
  3. 串行训练一串这样「后者补前者短板」的模型。
  4. 预测时加权组合:表现好的基学习器权重更大。

关键特征:

  • 基学习器串行、有依赖(后一个依赖前一个的结果,不能并行)。
  • 每轮聚焦难样本,逐步把整体误差压下来。

四、核心区别:为什么 Bagging 降方差、Boosting 降偏差

这是本题的重点,也是面试必答。

Bagging 降方差

  • 假设有 n 个近似独立、方差都是 σ² 的模型,把它们平均,平均值的方差约为 σ²/n——方差随模型数下降,而偏差(各模型的平均偏离)基本不变。
  • 所以 Bagging 特别适合驯服高方差、低偏差的模型(如充分生长、不剪枝的深决策树):单棵深树方差大、易过拟合,一平均方差就压下去了。基学习器越强(越低偏差)越好,方差交给平均去消。

Boosting 降偏差

  • 每一轮都在拟合前面模型没学好的部分(残差/错误),相当于不断给整体模型「打补丁」,训练误差(偏差)持续下降——把一堆欠拟合的弱模型叠加成一个强模型。
  • 所以 Boosting 适合提升高偏差、低方差的弱模型(如很浅的树、决策树桩):单个弱、欠拟合,Boosting 把它们串起来逐步降偏差。基学习器要弱,太强会一上来就过拟合。

对照锚点:Bagging 用「独立平均」压方差(配强模型),Boosting 用「串行纠错」压偏差(配弱模型)。

五、其他重要差异

  • 过拟合风险:Bagging 的平均天然抗过拟合,固定随机森林生成机制下增加树数通常使预测趋于稳定,但有限验证指标仍会波动,且不能修复有偏数据或错误设定;Boosting 会不断降训练误差,如果轮数太多、学习率不当,可能过度拟合噪声(把错样本里的噪声也硬学),需要早停、学习率、正则控制。
  • 对噪声/离群点:Boosting 因为聚焦错样本,对噪声更敏感(噪声样本一直被加权关注);Bagging 相对鲁棒。
  • 并行性:Bagging 天然可并行(训练快);Boosting 串行(较慢,但 XGBoost/LightGBM 在单棵树内部做了并行优化)。
  • 权重:Bagging 基学习器平权;Boosting 按表现加权。

六、常见追问

  • 随机森林和 GBDT 哪个好? 看场景:随机森林更稳、易调、抗过拟合、可并行;GBDT/XGBoost 精度通常更高但更需调参、对噪声更敏感(详见 GBDT vs 随机森林专题)。
  • Boosting 为什么用弱学习器? 弱(浅树)偏差高、方差低,正好让 Boosting 去降偏差;用强学习器会过拟合、失去多样性。
  • Bagging 能降偏差吗? 基本不能——它主要降方差,偏差约等于单个基学习器的偏差。
  • 两者能结合吗? 可以,如对 GBDT 做行/列采样(借鉴 Bagging 思想增加多样性、防过拟合),XGBoost 就用了子采样。

七、用相关方差与串行残差做数值对照

若 10 棵树单棵预测方差都是 1、两两相关系数 ρ=0.2,平均后的方差约为 0.2+0.8/10=0.28,并不是 0.1;这解释了随机森林还要随机选特征来降低相关性。Boosting 的另一侧是串行修正:初始预测 6、真实值 10,下一棵树若学到残差 3,再乘学习率 0.2,只把整体更新到 6.6。

Var(mean) = rho*sigma^2 + (1-rho)*sigma^2 / B
Bagging: F(x) = average_b f_b(x)
Boosting: F_t(x) = F_{t-1}(x) + eta * h_t(x)
对象/方案核心机制选择或风险
训练依赖Bagging 各模型条件独立训练Boosting 后一轮依赖当前整体
随机化Bootstrap/特征采样可用行列采样但核心是串行优化
主要作用常用于压高方差常用于降偏差,也会影响方差
Bagging: 数据重采样 → 多模型并行 → 平均/投票
Boosting: 当前模型 → 计算错误方向 → 新弱模型 → 加权累加

记忆钩子:Bagging 模型并非统计独立;真正决定平均收益的是误差相关性 ρ,而不只是树的数量 B。

八、常见误区与追问

  • 误区:Bagging 的基学习器彼此严格独立。 它们来自同一有限训练集,只能通过采样与特征随机尽量去相关。
  • 误区:Boosting 只能调整错分样本权重。 AdaBoost 这样做,梯度提升则拟合损失的负梯度。
  • 追问:Bagging 会降低偏差吗? 主要效果通常是降方差,但非线性聚合和训练变化也可能改变偏差。
  • 追问:Boosting 一定比 Bagging 准吗? 没有跨数据集保证,噪声、调参和指标都会改变结果。
  • 追问:两者能结合吗? 可在每轮训练多棵并行树或对子模型再做平均,但需明确优化目标与成本。

九、加强记忆

Bagging并行训练多个独立基学习器(各用自助采样子集)、平权投票/平均,主要降方差——n 个近似独立模型平均后方差约降到 1/n,所以配强模型(深树)抗过拟合,代表随机森林Boosting串行训练、每个新模型纠正前面的错误(AdaBoost 加权错样本 / GBDT 拟合残差)、加权组合,主要降偏差——逐步把欠拟合弱模型叠成强模型,所以配弱模型(浅树)对噪声更敏感、轮数多易过拟合,代表 AdaBoost/GBDT/XGBoost。记忆锚点:Bagging 并行、独立平均、降方差、用强模型;Boosting 串行、接力纠错、降偏差、用弱模型。