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

来源:13-7 Stacking

慕函数4135502

2019-02-27

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

写回答

1回答

liuyubobobo

2019-02-28

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

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


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


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


加油!:)

0
2
liuyubobobo
回复
慕函数4135502
你的理解是对的。实际上神经网络的反向传播算法,相当于定义了一种“误差”,让每一层的训练有了“目标”。而对于Stacking,这个目标是有新的数据提供的:)
2019-02-28
共2条回复

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

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

5893 学习 · 2454 问题

查看课程