请稍等 ...
×

采纳答案成功!

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

关于训练数据为什么这么划分?

老师您好,您也提到了,Stacking这种方法非常像神经网络,那么它的训练为什么不像神经网络一样,直接将所有的训练数据直接用于第一层的输入,在最后一层拟合所有样本的输出?将样本数据集这么划分的道理是什么呢?

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2019-02-28 02:55:09

Stacking的每一层训练的模型,需要新的数据集进行预测,通过预测的结果和新的数据集的真值,才能得到下一层模型。如果没有数据集,无法训练下一层模型:)

也可以参考这里,仔细理解我们分出来的数据到底有什么用。如果没有这个数据会怎样?https://coding.imooc.com/learn/questiondetail/47635.html


或者,具体按照你的思路,尝试一下不区分数据集,实现一下Stacking的思想,看看有什么问题:)


P.S. 神经网络解决这个问题的方式是大名鼎鼎的反向传播算法,而这个算法在神经网络的思想踢出来以后,又经过了十几年才被发明出来。如果有兴趣,自学一下神经网络,仔细体会一下这两种算法的区别是什么。(虽然都是多层网状结构)。仔细理解一下,神经网络为了在每一层不使用新的数据,新添加了什么机制(或者什么假设)。这些新的机制和假设,就是我们真正要实现神经网络要着重学习的,可能要讲两三章的内容才能讲清楚。而对于Stacking,如果你真正理解了的话,不需要引入任何新的内容,已经能实现出来了:)


加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕函数4135502 #1
    老师,按照您提供的想法,我的理解是,神经网络每一层的输出只是y=wx+b,这种方式的输出与输入的对应关系非常简单,也非常有利于我们使用最后的输出层的误差,加上反向传播算法,一层一层地向前推导前面层的误差,进而训练每一层的模型(神经元),而Stacking中, 例如使用决策树的话,没有这种由输出的误差直接推导出输入误差的方式,所以无法训练,我们最多只能拿到一个初始化的Stacking模型和最后的误差而已,不知道我的理解是否准确?
    回复 有任何疑惑可以回复我~ 2019-02-28 09:18:42
  • liuyubobobo 回复 提问者 慕函数4135502 #2
    你的理解是对的。实际上神经网络的反向传播算法,相当于定义了一种“误差”,让每一层的训练有了“目标”。而对于Stacking,这个目标是有新的数据提供的:)
    回复 有任何疑惑可以回复我~ 2019-02-28 09:51:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信