返回 经典机器学习 思维导图
中文·English
📊 经典机器学习ID: bagging-forest

Bagging 与随机森林

Bagging & Random Forest
🎯核心定义
Bagging (Bootstrap Aggregating) 是并行式集成: 对训练集做 kk 次自助采样, 每次有放回地抽 nn 次得到 kk 个训练子集, 各自训练一个基学习器, 预测时投票 (分类) 或平均 (回归)。关键概率: 单个样本在 nn 次有放回抽样中一次都没被抽中的概率 (11n)ne10.368\left(1 - \frac{1}{n}\right)^n \to e^{-1} \approx 0.368, 所以每个自助集平均只含原始样本约 63.2%63.2\%, 剩余约 36.8%36.8\%(≈ 1/3) 的样本是该学习器未见过的 OOB (Out-of-Bag) 样本, 可直接用于评估 — OOB 误差 ≈ 留出法误差, 免去单独的验证集。方差分析: 设基学习器输出方差 σ2\sigma^2、两两相关 ρ\rho, 平均模型的方差 Var(fˉ)=ρσ2+1ρkσ2\text{Var}\left(\bar{f}\right) = \rho \sigma^2 + \frac{1 - \rho}{k} \sigma^2 — 第一项不随 kk 消失, 所以 Bagging 的价值在于压低 ρ\rho 而不是只增大 kk。随机森林在 Bagging 之上再加特征随机: 每次分裂从全部 dd 个特征中随机抽 mdm \approx \sqrt{d} 个 (分类, 回归约 d/3d/3) 再在其中找最优切分, 双重随机性 (样本 + 特征) 显著压低 ρ\rho。由偏差-方差分解 Err=bias2+variance+σϵ2\text{Err} = \text{bias}^2 + \text{variance} + \sigma_\epsilon^2: 平均不改变偏差, 只降方差, 因此 Bagging 适合高方差低偏差的强基学习器 (深树、不剪枝)。
💡使用场景
“为什么随机森林比单棵深树好”“OOB 误差是什么”“mm 怎么取”“随机森林为什么能并行” — 面试与工程都高频; 也是表格数据任务的强基线之一, 天然输出特征重要性 (平均分裂增益)。
解决的核心痛点
单棵深树方差大、易过拟合 — 有放回采样制造“数据扰动”让基学习器各不相同 (若用不放回切分, 各学习器数据太相似, ρ1\rho \to 1, 平均后方差几乎不降); 纯 Bagging 时强特征会主导所有树的分裂、树之间仍然高度相关, 特征子集随机化 (mm 小 → ρ\rho 小) 把方差从 σ2\sigma^2 级压到 ρσ2\rho \sigma^2 级, 这是随机森林优于纯 Bagging 的关键; OOB 让评估与训练同构、零额外数据成本, 且每棵树可以完全并行训练。
🎯5 个高频面试考点 (Exam Points)
1
Bootstrap 推导: 单个样本 nn 次有放回抽样从未被抽中的概率 (11n)ne10.368(1 - \frac{1}{n})^n \to e^{-1} \approx 0.368; OOB 误差如何计算? 为什么 OOB 误差无需单独验证集?
2
方差分解: Var(fˉ)=ρσ2+1ρkσ2\text{Var}(\bar{f}) = \rho \sigma^2 + \frac{1-\rho}{k} \sigma^2 — 为什么 Bagging 降方差不降偏差? 为什么 kk \to \infty 时方差不为 0?
3
随机森林的双重随机性: 样本自助采样 + 分裂特征随机子集 (m=dm = \sqrt{d} 分类 / d/3d/3 回归); 为什么特征随机是关键而非可有可无?
4
为什么 Bagging 的基学习器要强 (深树、不剪枝)? 换成浅树会怎样?
5
OOB 误差 vs K-Fold 交叉验证误差: 优劣对比; 随机森林如何利用 OOB 计算特征重要性?
📖 关联深度指南:📄 decision-trees-and-ensemble
更新于 2026-08-12
🎯
检验攻克程度:针对「Bagging 与随机森林」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点决策树剪枝下一个知识点AdaBoost 算法手推

🔗 更多 经典机器学习 知识点卡片

HMM 参数学习 Baum-WelchGBDT 负梯度拟合混淆矩阵线性链条件随机场