请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

13-7stacking算法没理解清楚

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

正在回答

1回答

liuyubobobo 2018-03-21 09:51:49

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


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


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


//img1.sycdn.imooc.com//szimg/5ab1bad3000166af14511277.jpg



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


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


加油!



//img1.sycdn.imooc.com//szimg/5ab1bae500011d5c13951391.jpg

4 回复 有任何疑惑可以回复我~
  • 提问者 烈焰卡卡 #1
    我理解,就是3个模型预测出的结果就是新数据的特征,subnet2的真值就是新数据的y,这样训练一个上层模型,在这个例子中上层模型的训练数据就包含3个特征和1个结果,是这个意思吧?
    回复 有任何疑惑可以回复我~ 2018-03-21 10:10:02
  • liuyubobobo 回复 提问者 烈焰卡卡 #2
    对!这里注意:subset2的原始数据不是没有用的,适用于获得那三个特征的:)
    回复 有任何疑惑可以回复我~ 2018-03-21 10:13:19
  • 提问者 烈焰卡卡 #3
    明白!感谢波波老师!
    回复 有任何疑惑可以回复我~ 2018-03-21 10:23:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信