首页 > 技术文章 > Bagging vs Boosting vs Stacking

cherrychenlee 2019-05-03 13:39 原文

原文地址:https://www.jianshu.com/p/9dacdc88d3ec

  • Bagging
    用于减小方差。
    使用训练数据的不同随机子集(大小常等于训练数据,采用不放回的方式进行抽取)来训练每个base model,最后对每个base model进行权重相同的vote。分类问题取众数,回归问题取均值。
    并行。
    希望每个base model训练得要足够好,overfit也可以。

  • Boosting
    用于减小偏差。
    迭代地训练base model,每一次会根据上一次迭代中预测错误的情况修改训练样本的权重。
    串行。
    希望每个base model训练得比随机猜好就行。

bagging boosting
样本选择 训练集是在原始集中有放回地进行选取的,选出的各个训练集之间被认为是相互独立的(其实不是)。 每一轮的训练集保持不变,只是训练集中的每个样本在分类器中的权重发生了变化。权重是根据上一轮的结果进行调整的。
样例权重 均匀取样,每个样例权重相等。 根据错误率不断地调整样例权重,错误率越大则对应的权重越高。
预测函数 所有预测函数权重相等。 每个弱分类器都有相应的权重,分类误差小的分类器会有更大的权重。
并行计算 各个预测函数可以并行生成。 各个预测函数只能顺序生成。因为后一个模型的参数更新需要前一个模型的预测结果。
  • Stacking
    用于提升预测结果。
    输入level-2的是level-1的预测结果。
    还有一种是将level-1输出的prob的1~N列与原始数据组成新的特征向量,向量维度变为原始数据特征维度+N,再训练level-2模型。

推荐阅读