集成学习
问题
Bagging 和 Boosting 的区别是什么?随机森林的原理是什么?
答案
一、集成学习思想
通过组合多个弱学习器获得更好的预测效果。
二、Bagging vs Boosting
| 对比维度 | Bagging | Boosting |
|---|---|---|
| 训练方式 | 并行训练多个模型 | 串行训练,后一个修正前一个 |
| 样本使用 | 有放回抽样(Bootstrap) | 加权样本(关注错误样本) |
| 模型权重 | 等权投票/平均 | 按表现加权 |
| 减少的是 | 方差(减少过拟合) | 偏差(减少欠拟合) |
| 代表算法 | 随机森林 | XGBoost、LightGBM |
三、随机森林
随机森林 = Bagging + 决策树 + 特征随机:
- 从训练集有放回抽样得到 N 个子集
- 每棵树在每次分裂时从所有特征中随机选 个
- 每棵树独立生长,不剪枝
- 预测时:分类→投票,回归→平均
随机森林的两个"随机"
- 样本随机:Bootstrap 有放回抽样(Bagging)
- 特征随机:每次分裂只考虑部分特征
- 双重随机使得树之间差异性大,集成效果好
四、常见集成算法对比
| 算法 | 类型 | 特点 |
|---|---|---|
| 随机森林 | Bagging | 简单鲁棒,不易过拟合 |
| AdaBoost | Boosting | 关注难分样本 |
| GBDT | Boosting | 梯度提升决策树 |
| XGBoost | Boosting | GBDT 增强版,工程优化 |
| LightGBM | Boosting | 更快,大数据集友好 |
常见面试问题
Q1: 随机森林为什么不容易过拟合?
答案:
- 每棵树用不同的数据子集训练(Bootstrap)
- 每次分裂只用部分特征(降低树间相关性)
- 多棵树取平均/投票 → 降低方差
- 即使单棵树过拟合,集成后的结果依然泛化良好
Q2: Bagging 和 Boosting 分别适用什么场景?
答案:
- Bagging(随机森林):基学习器方差大(如深决策树)、数据噪声多
- Boosting(XGBoost):基学习器偏差大(如浅决策树)、需要高精度
- 实践中 Boosting 类(XGBoost/LightGBM)在结构化数据竞赛中效果通常更好