一句话定义
Bagging(Bootstrap Aggregating,自助聚合)是一种集成学习(Ensemble Learning)方法:对训练集做多轮有放回的随机抽样,每轮训练一个模型,最后把多个模型的输出聚合起来——分类任务投票,回归任务取平均。
它到底在做什么
关键在抽样方式。从 N 条样本中有放回地抽 N 次,每条样本每次被抽中的概率是 1/N,因此每轮大约只有 63% 的样本会出现在子集里,其余位置是重复样本。这样得到若干份"相似但不相同"的数据,各训练一个模型。
打个比方:一道判断题,你不只问一个人,而是问十个背景不同的人,按多数票定结论。单个人的判断可能因个人偏见偏得很厉害,但十个人的偏见方向各不相同,一平均就抵消了大半。
这就是 Bagging 的数学本质。模型的误差可以拆成偏差(Bias)、方差(Variance)和噪声三部分,Bagging 主要压的是方差,也就是模型的"抖动"。它不会让每个基模型变得更聪明,只是让它们的错误不朝同一个方向犯。注意"互相抵消"成立的前提:模型之间要足够不相关。所以 Bagging 的基学习器通常选高方差、低偏差的模型,典型就是充分生长的决策树。随机森林(Random Forest)在此基础上又加了一层随机:每次节点分裂只从随机抽出的部分特征里挑最优,进一步削弱树与树之间的相关性。
和邻居的区别
| Bagging | Boosting(提升) | |
|---|---|---|
| 训练方式 | 并行,各自独立 | 串行,后一个修正前一个 |
| 主要作用 | 降方差 | 降偏差 |
| 基模型 | 强模型(深树) | 弱模型(浅树) |
| 过拟合风险 | 较低,树多通常更稳 | 较高,需早停与正则 |
Stacking(堆叠)是另一路:用一个元模型去学习"这些输出该怎么组合"。
对从业者和普通人的意义
随机森林因此成了少见的"开箱即用"模型:对特征缩放不敏感、调参空间不大,还能顺带给出特征重要性和袋外估计(Out-of-Bag Estimation,用每棵树没抽到的那些样本做验证)。但要记住它的能力边界——如果基模型本身偏差就大(比如线性模型、很浅的树),投票救不回来,该换模型或加特征,而不是加树。选型时先问自己一句:我这是在治抖动,还是在治"根本没学会"?前者用 Bagging,后者得靠 Boosting 或更好的特征。具体实现细节以官方文档为准。
同样的道理也适用于人:多个独立判断取平均,比押注单个"最靠谱的人"更稳,前提是这些人背景不同、且各自大致靠谱。找十个观点雷同的人开会,等于只开了一个人的会。
