采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
stacking算法先用subset1数据集训练了3个模型,此时3个模型对subset2数据集预测出了3个结果集。这时候是如何用subset2数据集再进行一个上层模型的训练呢?此时有3个底层模型预测出来的结果集,而subset2是一组数据集,这3个结果集是如何对应一组数据集进行集成训练处一个模型?
首先,stacking 算法先用 subset1 数据集训练了 3 个模型;
之后,我们用我们训练出的这 3 个模型,对 subset2 数据集中的每一个数据进行预测。这样,对于 subset2 数据集中的每一条数据,我们都产生了 3 个结果。同时,subset2 数据集是包含 y 值的。这样,我们就可以使用 subset1 训练出的三个模型,将 subset2 这个数据集,转换成一个 3 维数据集!这一步应该是理解stacking 的关键。也就是我们新的数据集的特征数量,和原先数据集的特征数量无关,和我们的 stacking 中第一层集合了多少学习算法相关!
有了这个 3 维数据集,以及 subset2 中每条数据对应的 y 值,这些数据,形成了一个新的监督学习数据集。用于我在课程中下图里,训练 blending 这个模型所使用的数据集。
希望上面我用文字解释清楚了blending这个模型的训练方法:)其实理解了这个过程,编写一个stacking并不难。只是已知算法的组合而已,没有学习算法内部的任何新的东西。
如果你搞懂了这个过程,思考一下。我在课程中曾经说过,如果我们要三层stacking(下图所示),就需要把原始的训练数据集分成三份。这三份数据集应该怎么用?:)
加油!
我理解,就是3个模型预测出的结果就是新数据的特征,subnet2的真值就是新数据的y,这样训练一个上层模型,在这个例子中上层模型的训练数据就包含3个特征和1个结果,是这个意思吧?
对!这里注意:subset2的原始数据不是没有用的,适用于获得那三个特征的:)
明白!感谢波波老师!
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.5k 17
2.9k 15
1.6k 15
1.4k 14