机器学习之集成模型---Bagging,Boosting,Stacking

315 阅读3分钟
Bagging(Bootstrap+Aggregating)
  • 每次训练多个模型,对于分类问题,每个模型输出一个类别,最后做投票选出最多的;对于回归问题,将多个模型的输出取平均
  • bootstrap采样:对于每个模型,每次有放回的采样训练集样本,用不同的模型拟合不同部分的训练集
  • 随机森林:bagging的拓展模型:使用很多个决策树做base learner,除了利用bootstrap采样样本,还会随机采样特征(进一步降低了单模型之间的相关性),但是是不重复的采样。随机采样数据能够避免过拟合,随机采样特征可以增加每棵决策树之间的差异性。
  • 重要:bagging降低的是方差,因为多次采样取平均,均值不会变,但采样越多,方差会越小。所以在base learner稳定性差(决策树)的时候,bagging的效果很好。
  • 将多个不稳定的模型放在一起得到一个相对稳定的模型
Boosting
  • 每一轮在上一轮训练的残差上训练新的模型,即第k个树去拟合前k-1棵留下的残差,不断地缩小整个模型的误差
  • 将多个弱模型组合起来形成一个强模型,降低的是模型的偏差
  • gradient boosting: 每次拟合残差时,使用梯度下降的方法,第k个树的拟合对象为损失函数(对前k-1个CART输出值)的负梯度。
  • gradient boosting很容易过拟合,因此需要用弱模型作为基础模型。可以通过限制决策树的最高层数,或者随机采样一些特征
  • GBDT需要顺序训练,不能并行,在大型数据集上一般采用XGBoost替代会更快。
  • GBDT不会过拟合,因为每个模型都是弱模型。一般是CART
  • 常见拓展模型:XGBoost,AdaBoost
Bagging和Boosting区别
  • Bagging降低的是方差,Boosting降低的是偏差
  • Bagging中每棵树可以并行训练,Boosting只能顺序训练,因为后一个模型参数需要前一轮模型的结果。
  • Bagging是将多个稳定性差的模型组合在一起得到一个稳定的模型,Boosting是将多个弱模型组合得到一个强模型
  • 样本选择和样例权重不同:Bagging是均匀有放回的采样,每个样例的权重相同;Boosting每轮的训练集不变,训练集中每个样例的权重发生变化,根据错误率不断调整样例的权值,错误率越大则权重越大
Stacking
  • 每个基模型的类型可以不一样,所以输出不一样
  • 做回归问题,输出concat(比如那个模型输出一维,拼接完n纬),拼接的结果再通过一个全连接层,学习出一维的结果 -不需要做随机采样,因为每个模型已经采取了不同的样本或特征 -降低的是方差,获取多样性 -多层stacking容易过拟合,可以采用划分数据集,或k折bagging