机器学习总结----融合模型Stacking

本博客参考了:
https://blog.csdn.net/maqunfi/article/details/82220115
https://zhuanlan.zhihu.com/p/27493821

主要思路

stacking框架是集成了不同的算法,充分利用不同算法从不同的数据空间角度和数据结构角度的对数据的不同观测,来取长补短,优化结果

训练过程

1、划分数据集,比如我们有10000条训练集,2500条测试集,我们将训练集分成5分,每份2000条数据,一层的模型使用5折交叉验证,就是选4份作为训练集,一份做为验证集,这样我们可以得出5份不同的训练集和验证集来训练模型。如下图
机器学习总结----融合模型Stacking_第1张图片
2、将验证集的结果排在一块,就可以得到第二层的10000条训练数据,对于测试集,5个交叉验证训练出来的模型会有5份测试集的结果,我们对他进行求平均得到第二层的2500条测试集

3、假设我们要融合10个不同的模型,那么第二层我们会得到1000010维度的训练集,250010的测试集

4、我们用得到的数据训练第二层的模型,第二层的模型一般是比较简单的模型,比如说LR

Stacking特点

1、性能超群,比传统的机器学习效果要好很多
2、我们可以将集成好的知识放到简单的分类器上
3、可以在第二层加入正则项防止过拟合,而且不用过多的调参数和挑选特征。
4、训练速度慢

对基分类器的要求

1、第一层的分类器要求本身就具有比较高的精度
2、第一层分类器差异要大

为什么第二层使用简单的分类器

因为Stacking会伴随非常严重的过拟合问题
在第二层的特征提取过程中,已经使用了复杂的非线性变换,因此在输出层不需要复杂的分类器。
使用逻辑回归的好处
1、可以配合L1、L2正则化进一步防治过拟合
2、L1正则化可以有限的选择特征,从第一层中删除不必要的分类器
3、逻辑回归的输出结果可以被理解为概率

Stacking结构问题

stacking的层数不是越多越好,因为stacking的学习不是来自于多层堆叠的效果,而是来自不同学习器对于不同特征的学习能力,多层stacking会面临更加严重的过拟合,而且收益不明显。

第一层的分类器应该是越多及分类器越好,尽可能的多加一些不同种类的基模型进去,也就是说所谓的模型要“跨越空间”的概念。这样的话我们的集成结果会更加稳健,更加精确。即使有所重复和高依赖性,我们也可以通过第二层的L1正则化进行挑选

第一层选模型的时候,可以选择不同的模型,也可以选择同一种模型,但是训练参数和特征却不同。

你可能感兴趣的:(算法,机器学习,数据挖掘)