← 返回题目列表

为什么 Bagging 主要降方差、Boosting 主要降偏差?

高频 困难 第 10 / 25 题 更新于 2026/07/28
集成学习偏差方差BaggingBoosting

简化版

Bagging 降方差:它把很多个相互近似独立的高方差模型(如深树)平均起来。多个独立随机变量取平均,均值的方差会随模型数下降(约降到 1/n),而每个模型的偏差差不多,平均后偏差基本不变——所以 Bagging 主要压方差,配低偏差高方差的强模型(深树)Boosting 降偏差:它串行训练,每个新模型专门拟合前面模型没学好的部分(残差/错误),一步步把训练误差压下去,等于不断减小整体的偏差——所以配高偏差低方差的弱模型(浅树)。记忆锚点:Bagging 靠「独立平均」削方差,Boosting 靠「串行纠错」削偏差。

详细版

泛化误差 = 偏差² + 方差 + 噪声,两种集成各攻一头:

Bagging 降方差的数学直觉:

n 个模型平均后的方差 ≈ ρσ² + (1-ρ)·σ²/n
   σ² = 单模型方差,  ρ = 模型间相关系数
  • n↑ → 第二项↓;ρ↓(模型越独立)→ 第一项↓。
  • 独立(ρ→0)时方差约降到 σ²/n;偏差不变。
  • 所以 Bagging 削方差、不削偏差 → 配强模型(深树,低偏差高方差)

Boosting 降偏差的直觉:

  • 每轮拟合残差/负梯度 → 训练误差(偏差)持续下降,把欠拟合的弱模型逐步叠成强模型。
  • 主要削偏差,方差控制得不好反而可能升 → 配弱模型(浅树,高偏差低方差),靠学习率/早停控方差。

完整版教学

一、先回顾:泛化误差 = 偏差² + 方差 + 噪声

模型的期望泛化误差可分解为三部分:

  • 偏差:模型系统性地学不准(太简单/欠拟合)。
  • 方差:模型对训练数据太敏感、不稳定(太复杂/过拟合)。
  • 噪声:数据本身的随机性,不可消除。

我们能优化的是偏差和方差。集成学习的两大流派,恰好一个专攻方差、一个专攻偏差——理解这点,就理解了为什么 Bagging 配深树、Boosting 配浅树。

二、Bagging 为什么降方差——独立平均的威力

Bagging 的做法是训练 n 个用不同数据子集(自助采样) 的模型,预测时取平均。关键在于「多个随机变量取平均,方差会变小」这个统计事实。

理想情况(完全独立):设每个模型的预测方差都是 σ²,且相互独立。它们的平均值的方差是:

Var(平均) = Var( (X₁+X₂+...+Xₙ)/n ) = σ²/n

方差降到了 1/n! 而平均并不改变偏差(每个模型偏差相近,平均后偏差≈单模型偏差)。所以 Bagging 专削方差、不动偏差

现实情况(不完全独立):模型之间有相关性 ρ(因为用的是同一份数据的子集,难免相似)。更真实的方差公式是:

Var(平均) ≈ ρσ² + (1-ρ)·σ²/n
  • 第二项 (1-ρ)σ²/n 随 n 增大趋于 0。
  • 第一项 ρσ²方差下降的天花板——只要模型不独立(ρ>0),方差就降不到 0。
  • 要突破天花板,必须降低 ρ(让模型更独立)——这正是随机森林在 Bagging 基础上加「特征随机」的原因:进一步去相关、把 ρ 压小、方差降得更多。

结论:Bagging 通过「多个近似独立模型平均」削方差。因此它要搭配方差大但偏差小的强模型——充分生长的深树(单树过拟合、高方差,但平均后方差被压下去,偏差还保持低)。这就是随机森林用深树、可不剪枝的道理。

三、Boosting 为什么降偏差——串行纠错的累积

Boosting 完全不同:它串行训练,每个新模型专门去修正前面模型犯的错(AdaBoost 加大错分样本权重,GBDT 拟合残差/负梯度)。

想象初始模型很弱、欠拟合(高偏差)。Boosting 每加一个模型,就把「当前整体还没拟合好的部分」再学一点:

F₀ 欠拟合(偏差大)
F₁ = F₀ + 拟合F₀的残差  → 偏差减小
F₂ = F₁ + 拟合F₁的残差  → 偏差再减小
...  训练误差单调下降,整体从欠拟合走向拟合

每一轮都在削减训练误差(偏差),把一堆高偏差的弱模型逐步叠加成一个低偏差的强模型。所以 Boosting 专削偏差

因此它要搭配偏差大但方差小的弱模型——很浅的树(弱学习器)。为什么不用强模型?因为 Boosting 本来就会把偏差降下去,如果基学习器太强(本身方差就大),串行叠加会迅速过拟合、方差失控。用弱模型才能让 Boosting 稳稳地一步步降偏差。

四、副作用:Boosting 的方差怎么办

Boosting 主要降偏差,但如果不加控制,串行拟合残差会不断增加模型复杂度、方差可能上升甚至过拟合(把残差里的噪声也学了)。所以 Boosting 需要额外手段控方差:

  • 学习率(shrinkage):每棵树只走一小步,减缓过拟合。
  • 早停:验证误差不再下降就停,防止树太多。
  • 子采样、列采样、正则:借鉴 Bagging 思想增加多样性、抑制方差。

Bagging 的平均机制通常缓解高方差;固定基学习器分布下增加模型数会让平均趋于稳定,但树间相关、系统偏差、数据泄漏和计算成本仍需检查。

五、一张表把逻辑串起来

BaggingBoosting
手段独立模型平均串行拟合残差
主削方差偏差
配什么基学习器强模型(深树,低偏差高方差)弱模型(浅树,高偏差低方差)
为什么这样配方差交给平均消,偏差保持低偏差交给串行叠加消,方差要小免得过拟合
过拟合天生抗(加模型更稳)需学习率/早停控制

六、常见追问

  • Bagging 能降偏差吗? 基本不能——平均不改变偏差,偏差≈单个基学习器。所以基学习器偏差要小(用强模型)。
  • Boosting 能降方差吗? 主要降偏差;方差靠学习率、早停、子采样等间接控制,控不好会过拟合。
  • 为什么随机森林用深树、GBDT 用浅树? 就是这题的结论:Bagging 削方差配低偏差深树,Boosting 削偏差配弱的浅树。
  • 随机森林的特征随机为什么重要? 降低树间相关 ρ,突破 ρσ² 的方差下降天花板。
  • 能不能既降偏差又降方差? 集成组合、加正则、子采样等能同时缓解两者,但两大流派各有主攻方向。

七、把相关系数代入方差公式

100 个基模型单个方差 σ²=4。若误差独立,平均方差为 4/100=0.04;若两两相关 ρ=0.3,则方差约为 0.3×4+0.7×4/100=1.228。数量从 100 再加到 1000 时只能降到约 1.203,说明降低相关性往往比无止境加树更重要。

E[(y - f_hat(x))^2] = Bias^2 + Variance + irreducible_noise
Var(mean) = rho*sigma^2 + (1-rho)*sigma^2/B
Boosting changes both bias and variance; 'mainly' is an empirical tendency
对象/方案核心机制选择或风险
深单树偏差较低、方差较高适合用 Bagging 平均
浅弱树偏差较高、单棵方差较低适合逐轮 Boosting
相关树平均方差下限约 ρσ²特征随机用于降低 ρ
诊断学习曲线 → 大训练/验证间隙:高方差
              → 双方都差:高偏差
              → 选择去相关平均或逐步加法拟合

记忆钩子:“Bagging 降方差、Boosting 降偏差”是主要机制,不是说另一项永远不变。

八、常见误区与追问

  • 误区:只要增加 Bagging 模型数,方差最终一定到 0。 相关误差留下约 ρσ² 的下限。
  • 误区:Boosting 只降偏差不会增大方差。 轮数、树复杂度和噪声都可能让方差上升。
  • 追问:为什么随机森林要做特征随机? 它牺牲部分单树强度来降低树间相关性。
  • 追问:不可约噪声能靠集成消除吗? 不能,它来自观测机制或遗漏信息。
  • 追问:如何实证判断偏差还是方差? 结合训练与验证误差、学习曲线和重复交叉验证判断。

九、加强记忆

泛化误差 = 偏差² + 方差 + 噪声,两大集成各攻一头。Bagging 降方差:多个近似独立的高方差模型平均,方差 ≈ρσ²+(1-ρ)σ²/n 随 n 下降、偏差不变(独立时降到 σ²/n);ρσ² 是天花板,故随机森林加特征随机降 ρ——所以 Bagging 配低偏差高方差的深树、可不剪枝Boosting 降偏差串行每轮拟合前面残差/负梯度,训练误差单调下降,把欠拟合弱模型叠成强模型——所以配高偏差低方差的浅树(弱学习器),且方差要靠学习率、早停、子采样控制以防过拟合。记忆锚点:Bagging 独立平均削方差(配深树),Boosting 串行纠错削偏差(配浅树)。