为什么 Bagging 主要降方差、Boosting 主要降偏差?
简化版
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 的平均机制通常缓解高方差;固定基学习器分布下增加模型数会让平均趋于稳定,但树间相关、系统偏差、数据泄漏和计算成本仍需检查。
五、一张表把逻辑串起来
| Bagging | Boosting | |
|---|---|---|
| 手段 | 独立模型平均 | 串行拟合残差 |
| 主削 | 方差 | 偏差 |
| 配什么基学习器 | 强模型(深树,低偏差高方差) | 弱模型(浅树,高偏差低方差) |
| 为什么这样配 | 方差交给平均消,偏差保持低 | 偏差交给串行叠加消,方差要小免得过拟合 |
| 过拟合 | 天生抗(加模型更稳) | 需学习率/早停控制 |
六、常见追问
- 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 串行纠错削偏差(配浅树)。