跳到主要内容

集成学习

问题

Bagging 和 Boosting 的区别是什么?随机森林的原理是什么?

答案

一、集成学习思想

通过组合多个弱学习器获得更好的预测效果。

二、Bagging vs Boosting

对比维度BaggingBoosting
训练方式并行训练多个模型串行训练,后一个修正前一个
样本使用有放回抽样(Bootstrap)加权样本(关注错误样本)
模型权重等权投票/平均按表现加权
减少的是方差(减少过拟合)偏差(减少欠拟合)
代表算法随机森林XGBoost、LightGBM

三、随机森林

随机森林 = Bagging + 决策树 + 特征随机:

  1. 从训练集有放回抽样得到 N 个子集
  2. 每棵树在每次分裂时从所有特征中随机选 n\sqrt{n}
  3. 每棵树独立生长,不剪枝
  4. 预测时:分类→投票,回归→平均
随机森林的两个"随机"
  • 样本随机:Bootstrap 有放回抽样(Bagging)
  • 特征随机:每次分裂只考虑部分特征
  • 双重随机使得树之间差异性大,集成效果好

四、常见集成算法对比

算法类型特点
随机森林Bagging简单鲁棒,不易过拟合
AdaBoostBoosting关注难分样本
GBDTBoosting梯度提升决策树
XGBoostBoostingGBDT 增强版,工程优化
LightGBMBoosting更快,大数据集友好

常见面试问题

Q1: 随机森林为什么不容易过拟合?

答案

  • 每棵树用不同的数据子集训练(Bootstrap)
  • 每次分裂只用部分特征(降低树间相关性)
  • 多棵树取平均/投票 → 降低方差
  • 即使单棵树过拟合,集成后的结果依然泛化良好

Q2: Bagging 和 Boosting 分别适用什么场景?

答案

  • Bagging(随机森林):基学习器方差大(如深决策树)、数据噪声多
  • Boosting(XGBoost):基学习器偏差大(如浅决策树)、需要高精度
  • 实践中 Boosting 类(XGBoost/LightGBM)在结构化数据竞赛中效果通常更好

相关链接