7. 集成学习(Ensemble Learning)Stacking
1. 集成学习(Ensemble Learning)原理
2. 集成学习(Ensemble Learning)Bagging
3. 集成学习(Ensemble Learning)随机森林(Random Forest)
4. 集成学习(Ensemble Learning)Adaboost
5. 集成学习(Ensemble Learning)GBDT
6. 集成学习(Ensemble Learning)算法比较
7. 集成学习(Ensemble Learning)Stacking
1. 前言
到现在为止我们还剩一种集成学习的算法还没有涉及到,那就是Stacking。Stacking是一个与Bagging和Boosting都不一样的算法。它的主要突破点在如何集成之前的所有算法的结果,简单的说就是在弱学习器的基础上再套一个算法。
2. Stacking原理
Stacking是在弱学习器的基础上再套一个算法,用机器学习算法自动去结合之前的弱学习器。
Stacking方法中,我们把个体学习器叫做初级学习器,用于结合的学习器叫做次级学习器,次级学习器用于训练的数据叫做次级训练集。次级训练集是在训练集上用初级学习器得到的。
如下图所示:
数据集为\(D\),样本数量为\(m\),分为\(D_{train}\)和\(D_{test}\)。
- Stacking的初级学习器有\(n\)种。
- 对每一个初级学习器进行以下处理。
- 首先对\(D_{train}\)进行5-fold处理。
- 用\(model_i\)进行5-fold训练,对验证集进行\(Predict\)。
- 同时生成5个\(Predict_{test}\)。
- 最后对输出进行整理。5个验证集的输出组合成次学习器的一个输入特征,5个\(Predict_{test}\)取平均
- 这样就组成了\(m*5\)的维度的次训练集和\(m*5\)维度的测试集,用次级学习器进行再次训练。
3. 总结
Stacking的思想也是非常的简单,但是有时候在机器学习中特征工程处理的好,简单的算法也能发挥强大的作用。