Ensemble Learning (Bagging,boosting,Blending,Stacking)

bagging,boosting,Blending,Stacking,四者都属于集成方法(Ensemble Learning)
集成方法的目标是把多个使用给定学习算法构建的基估计器的预测结果结合起来,从而获得比单个估计器更好的泛化能力/鲁棒性.

一.Bagging

Bagging即套袋法

(一).Bagging的算法原理:

bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。
随机采样一般采用的是自助采样法|( Bootstrap sampling),有放回地采集T次,最终可以得到T个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。
Ensemble Learning (Bagging,boosting,Blending,Stacking)

(二).代表模型及应用

随机森林是bagging的一个最常见的实现方案,随机森林有其特殊的地方
1.随机森林的弱学习器都是决策树。
2.随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择
3.在使用时并不需要划分训练集.

(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)

对分类问题:将上步得到的T个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

二.boosting

Boosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)

(一).算法原理:

1.Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,
2.根据弱学习的学习误差率表现来更新训练样本的权重,使之前弱学习器1学习误差率高的训练样本点的权重变高而这些误差率高的点在后面的弱学习器2中得到更多的重视。
3.然后基于调整权重后的训练集来训练弱学习器2
4. 如此重复进行,直到弱学习器数达到事先指定的数目工,最终将这工个弱学习器通过集合策略进行整合,得到最终的强学习器
Ensemble Learning (Bagging,boosting,Blending,Stacking)

(二).代表模型及应用

梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。
常见算法还包括Adaboost,GBoost,XGBoost,LightGBM

三.Bagging和Boosting的区别:

1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

Bagging + 决策树 = 随机森林
AdaBoost + 决策树 = 提升树
gradient + 决策树 = GDBT

在大多数数据集中,boosting的准确性要比bagging高,有一些数据集中,boosting会退化即过拟合.

四.Blending

用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。blending和stacking类似,主要是对已学好的基学习器的结果的融合不同,Blending是线性融合,而Stacking是非线性融合。

五.Stacking

stacking是一种将弱学习器集成进行输出的策略,其中,在stacking中,所有的弱学习器被称作0级(0 level)学习器,他们的输出结果被一个1级(1 level)学习器接受,然后再输出最后的结果。这是实际上是一种分层的结构,前面提到的就是一种最基本的二级Stacking。另外,在bagging或者boosting中,所有的弱学习器一般都要求是相同的模型,如决策树,而stacking中可以是不同的模型,如KNN、SVM、LR、RF等。
Stacking和Blending类似,主要是对已学好的基学习器的结果的融合,但Blending和线性的,而Stacking是非线性的融合.

Ensemble Learning (Bagging,boosting,Blending,Stacking)