13-7stacking算法没理解清楚

来源:13-7 Stacking

烈焰卡卡

2018-03-20

stacking算法先用subset1数据集训练了3个模型,此时3个模型对subset2数据集预测出了3个结果集。这时候是如何用subset2数据集再进行一个上层模型的训练呢?此时有3个底层模型预测出来的结果集,而subset2是一组数据集,这3个结果集是如何对应一组数据集进行集成训练处一个模型?

写回答

1回答

liuyubobobo

2018-03-21

首先,stacking 算法先用 subset1 数据集训练了 3 个模型;


之后,我们用我们训练出的这 3 个模型,对 subset2 数据集中的每一个数据进行预测。这样,对于 subset2 数据集中的每一条数据,我们都产生了 3 个结果。同时,subset2 数据集是包含 y 值的。这样,我们就可以使用 subset1 训练出的三个模型,将 subset2 这个数据集,转换成一个 3 维数据集!这一步应该是理解stacking 的关键。也就是我们新的数据集的特征数量,和原先数据集的特征数量无关,和我们的 stacking 中第一层集合了多少学习算法相关!


有了这个 3 维数据集,以及 subset2 中每条数据对应的 y 值,这些数据,形成了一个新的监督学习数据集。用于我在课程中下图里,训练 blending 这个模型所使用的数据集。


//img.mukewang.com/szimg/5ab1bad3000166af14511277.jpg



希望上面我用文字解释清楚了blending这个模型的训练方法:)其实理解了这个过程,编写一个stacking并不难。只是已知算法的组合而已,没有学习算法内部的任何新的东西。


如果你搞懂了这个过程,思考一下。我在课程中曾经说过,如果我们要三层stacking(下图所示),就需要把原始的训练数据集分成三份。这三份数据集应该怎么用?:)


加油!



//img.mukewang.com/szimg/5ab1bae500011d5c13951391.jpg

4
3
烈焰卡卡
明白!感谢波波老师!
2018-03-21
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5850 学习 · 2437 问题

查看课程