为什么 Bagging 主要降方差、Boosting 主要降偏差?
简化版
Bagging 对随机化训练出的多个预测取平均,若单模型方差为 σ²、两两相关近似为 ρ,平均方差约为 ρσ²+(1-ρ)σ²/B,所以它常用于降低深树等不稳定模型的方差;偏差也可能随重采样和非线性学习器改变,并非严格不变。Boosting 串行沿当前损失方向增加模型,常显著缓解弱模型的欠拟合,但训练误差下降不等于统计偏差的定义,方差也会随轮数与树深改变。“Bagging 主降方差、Boosting 常降偏差”是机制概括,不是只改变单一项的定律。
详细版
在平方损失回归、对训练集随机性取期望等条件下,可写“期望预测误差 = 偏差² + 方差 + 不可约噪声”。分类和其他损失不能不加说明地直接套同一等式。
Bagging 降方差的数学直觉:
n 个模型平均后的方差 ≈ ρσ² + (1-ρ)·σ²/n
σ² = 单模型方差, ρ = 模型间相关系数
- n↑ → 第二项↓;ρ↓(模型越独立)→ 第一项↓。
- 独立(ρ→0)时方差约降到
σ²/n;平均后的偏差需由学习算法期望另算,常变化较小但没有无条件不变保证。 - 所以 Bagging 削方差、不削偏差 → 配强模型(深树,低偏差高方差)。
Boosting 降偏差的直觉:
- 每轮拟合残差/负梯度,通常降低经验损失并提升表达能力;是否降低统计偏差、何时方差上升要用重复抽样或验证表现判断。
- 主要削偏差,方差控制得不好反而可能升 → 配弱模型(浅树,高偏差低方差),靠学习率/早停控方差。
完整版教学
一、先限定偏差—方差分解的适用条件
在回归平方损失下,对固定输入点并对训练集抽样与观测噪声取期望,预测误差可分解为三部分:
- 偏差:模型系统性地学不准(太简单/欠拟合)。
- 方差:模型对训练数据太敏感、不稳定(太复杂/过拟合)。
- 噪声:数据本身的随机性,不可消除。
这套分解提供直觉,但分类 0-1 损失没有同样简单的加法形式。Bagging 通常以平均抑制方差,Boosting 通常以加法优化改善欠拟合;两者都会同时影响偏差和方差。
二、Bagging 为什么降方差——独立平均的威力
Bagging 的做法是训练 n 个用不同数据子集(自助采样) 的模型,预测时取平均。关键在于「多个随机变量取平均,方差会变小」这个统计事实。
理想情况(完全独立):设每个模型的预测方差都是 σ²,且相互独立。它们的平均值的方差是:
Var(平均) = Var( (X₁+X₂+...+Xₙ)/n ) = σ²/n
在这个理想等方差、独立预测的计算里,平均方差降到 σ²/n。偏差是否不变还要求各预测器的期望与所比较基模型一致;bootstrap 后训练非线性学习器通常只能说偏差可能近似不变,而不是定理。
现实情况(不完全独立):模型之间有相关性 ρ(因为用的是同一份数据的子集,难免相似)。更真实的方差公式是:
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 能降偏差吗? 主要作用常是降方差,但 bootstrap 分布和非线性拟合会让偏差也改变;应通过学习曲线与重复验证判断。
- 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-ρ)σ²/B,因此树数和去相关都重要,偏差则可能近似不变也可能改变。Boosting 串行拟合损失的改进方向,常降低欠拟合,却也随轮数增加容量和方差。深树用于 Bagging、浅树配学习率用于 Boosting 是常见工程起点,最终仍要用同一验证流程检查偏差、方差和噪声敏感性。