三种集成学习方式:
Bagging
把数据集通过有放回的抽样方式,划分为多个数据集,分别训练多个模型。针对分类问题,按照少数服从多数原则进行投票,针对回归问题,求多个测试结果的平均值
Stacking
通常是不同的模型,而且每个分类都用了全部训练数据,得到预测结果y1, y2, …, yk,然后再训练一个分类器 Meta Classifier,将这些预测结果作为输入,得到最终的预测结果
Boosting
与Bagging一样,使用的相同的弱学习器,不过是以自适应的方法顺序地学习这些弱学习器,即每个新学习器都依赖于前面的模型,并按照某种确定性的策略将它们组合起来
两个重要的 Boosting 算法:AdaBoost(自适应提升)和Gradient Boosting(梯度提升)
AdaBoost: 使用前面的学习器用简单的模型去适配数据,然后分析错误。然后会给予错误预测的数据更高权重,然后用后面的学习器去修复
Boosting: 通过把一些列的弱学习器串起来,组成一个强学习器
区别
-
结构上:
- Bagging:是基分类器并行处理,
- Boosting:是串行处理
-
训练集上:
- Bagging:训练集是在原始集中有放回选取的,基分类器训练是独立的,
- Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整,训练集是依赖于之前的模型
-
样例权重:
- Bagging:使用均匀取样,每个样例的权重相等
- Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
-
预测函数:
- Bagging:所有预测函数的权重相等。
- Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
-
作用上:
- Bagging的作用是减少variance,Bagging,对样本进行重采样,通过重采样得到的子样本集训练模型,最后取平均。因为子样本集的相似性,而且使用相同的弱学习器,因此每个学习器有近似相等的bias和variance,因为每个学习器相互独立,所以可以显著降低variance,但是无法降低bias,
- Boosting:Boosting在于减少bias,对于Boosting,采用顺序的方式最小化损失函数,所以bias自然是逐步下降,子模型之和不能显著降低variance