Stacking也是机器学习的一种方法,他和Boost和Bagging的区别是集成的基学习器是异质的,其目的是学习到每个基学习器的优点,然后更好的去做分类或者回归任务。
首先来说它是一个层级的集成学习方法,一般情况下分为两层,利用基学习器学习特征,然后把基学习器的预测值作为第二层的输入,在训练。这样做的目的是为了给第一层预测的结果分配不同的权重,这样让每个基学习器都有其侧重点,充分的利用了每个基学习器的特点。
1、Stacking种的数据如何划分?
-
将原本的数据集一般进行N折交叉验证
-
取N-1折进行训练,剩下的一折进行测试
2、stacking原理
3、Stacking的基本框架
我们异质的基学习器假如有M个,每个基学习器都会生成一个新的特征,而测试集在每个基学习器上进行预测也会得到新的特征。然后把新的特征当作输入训练一个新的模型M0,然后将第一阶段预测的特征作为M0的输入,进行预测。以两阶段的Stcking举例说明,第一阶段不仅计算训练集预测的特征,还计算测试集预测的特征;第二阶段把训练集预测的特征用来训练新的模型M0,测试集预测的特征用来测试即可。Stcking体现堆叠的思想主要是在第二阶段,为不同的预测结果学习一个权重,更好的完成分类和回归任务。
4、Stacking的5折交叉验证
假如有训练集10000条,测试集是2500条。按照5折交叉验证来操作的话,1/5的用来测试,4/5的用来训练。
用一个model来举例说明,每一个predict的特征向量都是2000*1,因此一个模型新的feature就是2000*5=10000,将这个结果作为输入给次级学习器。训练一个分类器,将Test的特征输入分类器得到最终结果。
在此说明一下,TestData在每一折都要进行测试,最终会得到2500*5,然后进行平均得到2500*1这个维度的测试特征。
如果有T个初级学习器也是如此,将初级学习器的结果当作输入,训练次级学习器,值得一提,如果有T个model的话,那么次级学习器的输入特征就有几个,举例说明:如果有5个初级学习器,那么次级学习器的输入就是10000*5,次级学习器的测试集就是2500*5.
5、Stacking的优缺点
- 目前性能比较好的算法
- 自动继承策略可添加正则项有效的对抗过拟合,不需要太多的调参的特征选择
- 可以将Boost,已经继承过的算法再此集成,达到比较好的效果