采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,您也提到了,Stacking这种方法非常像神经网络,那么它的训练为什么不像神经网络一样,直接将所有的训练数据直接用于第一层的输入,在最后一层拟合所有样本的输出?将样本数据集这么划分的道理是什么呢?
Stacking的每一层训练的模型,需要新的数据集进行预测,通过预测的结果和新的数据集的真值,才能得到下一层模型。如果没有数据集,无法训练下一层模型:)
也可以参考这里,仔细理解我们分出来的数据到底有什么用。如果没有这个数据会怎样?https://coding.imooc.com/learn/questiondetail/47635.html
或者,具体按照你的思路,尝试一下不区分数据集,实现一下Stacking的思想,看看有什么问题:)
P.S. 神经网络解决这个问题的方式是大名鼎鼎的反向传播算法,而这个算法在神经网络的思想踢出来以后,又经过了十几年才被发明出来。如果有兴趣,自学一下神经网络,仔细体会一下这两种算法的区别是什么。(虽然都是多层网状结构)。仔细理解一下,神经网络为了在每一层不使用新的数据,新添加了什么机制(或者什么假设)。这些新的机制和假设,就是我们真正要实现神经网络要着重学习的,可能要讲两三章的内容才能讲清楚。而对于Stacking,如果你真正理解了的话,不需要引入任何新的内容,已经能实现出来了:)
加油!:)
老师,按照您提供的想法,我的理解是,神经网络每一层的输出只是y=wx+b,这种方式的输出与输入的对应关系非常简单,也非常有利于我们使用最后的输出层的误差,加上反向传播算法,一层一层地向前推导前面层的误差,进而训练每一层的模型(神经元),而Stacking中, 例如使用决策树的话,没有这种由输出的误差直接推导出输入误差的方式,所以无法训练,我们最多只能拿到一个初始化的Stacking模型和最后的误差而已,不知道我的理解是否准确?
你的理解是对的。实际上神经网络的反向传播算法,相当于定义了一种“误差”,让每一层的训练有了“目标”。而对于Stacking,这个目标是有新的数据提供的:)
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.4k 19
3.4k 17
2.9k 15
1.6k 15
1.4k 14