Bagging和Boosting的区别

集成学习

目前接触较多的集成学习主要有2种:基于Bagging和基于Boosting,前者的代表算法主要是随机森林,后者的代表算法有Adaboost、GBDT、xgboost

集成学习的主要思想是将多个分类器进行组合,得到一个强分类器。弱分类器需要满足的条件是误差率小于0.5即稍好于猜。常用的有逻辑回归、SVM、神经网络。

Bagging

Bagging直译为“增强聚合”。它的方式是训练几个分类器,然后让这几个分类器的输出当做分类投票,选择票数最多的那个输出作为最后的输出,如果是回归的话就取平均。Dropout也可以算是一种Bagging学习。
Bagging的特点:

  • 对每个分类器,输入数据都是从原始训练数据中可重复的采样, 每个分类器的输入服从相同的分布,且各输入之间相互独立。而Boost中,各训练数据的分布不独立,每个分类器的输入样本之间也不独立。
  • 各分类器可以采用相同算法,不同的超参数;也可采用不同算法; Boost基本采用相同的算法。
  • 每个分类器的输出没有权重之分,都是平等的。

Boosting

boost通常会改变训练数据的概率分布,针对不同的训练数据分布调用弱学习算法学习一组弱分类器。在多次迭代的过程中,当前次迭代所用的训练数据的概率分布会依据上一次迭代的结果而调整。也就是说训练数据的各样本是有权重的,这个权重本身也会随着迭代而调整。不同分布的训练数据进入不同学习法则后,得到的各基本分类器通常经过线性组合,形成强分类器。例如,像Adaboost和xgboost,最后的强分类器都是弱分类器的加性组合。

Boosting算法的可优化点有两点:训练数据集的分布、各基本分类器在线性组合中的权重w_m

  • 对于训练数据集的分布,通常,被上一次分类错误的样本的权重会被调大,被正确分类的会被调小。
  • 基本分类器的误差越大,其权重越小,反之越大。

Bagging与Boosting的区别总结:

  • Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的训练集的选择是独立的,各轮训练集的选择与前面各轮的学习结果有关
  • Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法。Bagging可通过并行训练节省大量时间开销。

你可能感兴趣的:(机器学习)