Neural network LSTM RNN的有趣结果:训练和验证数据的滞后结果

Neural network LSTM RNN的有趣结果:训练和验证数据的滞后结果,neural-network,keras,lstm,rnn,training-data,Neural Network,Keras,Lstm,Rnn,Training Data,作为对RNN/LSTM(无状态)的介绍,我正在训练一个模型,该模型包含200天以前的数据序列(X),包括每日价格变化、每日数量变化等,对于标签/Y,我有4个月内从当前价格到当前价格的%价格变化。基本上我想估计市场方向,而不是100%准确。但我得到了一些奇怪的结果 然后,当我用训练数据测试我的模型时,我注意到模型的输出与实际数据相比是一个完美的拟合,它正好滞后4个月: 当我将数据移动4个月时,你可以看到它是一个完美的匹配 很明显,我能理解为什么训练数据会非常接近,因为它在训练期间就已经看到了—

作为对RNN/LSTM(无状态)的介绍,我正在训练一个模型,该模型包含200天以前的数据序列(X),包括每日价格变化、每日数量变化等,对于标签/Y,我有4个月内从当前价格到当前价格的%价格变化。基本上我想估计市场方向,而不是100%准确。但我得到了一些奇怪的结果

然后,当我用训练数据测试我的模型时,我注意到模型的输出与实际数据相比是一个完美的拟合,它正好滞后4个月:

当我将数据移动4个月时,你可以看到它是一个完美的匹配

很明显,我能理解为什么训练数据会非常接近,因为它在训练期间就已经看到了——但是为什么4个月的时间会滞后呢

它对验证数据做了同样的事情(注意我用红色框突出显示的区域,以供将来参考):

时移:

它不像你期望的那样像训练数据那样接近,但仍然太接近我的喜好-我只是不认为它可以如此精确(以红色矩形中的小光点为例)。我认为这个模型只是一个幼稚的预测,我只是不知道它是怎么做的


为了从验证数据生成这个输出,我输入了一个200个时间步的序列,但是数据序列中没有说明4个月内价格变化的百分比-它是完全断开的,那么它如何如此准确呢?4个月的延迟显然是另一个指标,表明这里有些不对劲,我不知道如何解释,但我怀疑这两者有联系。

好吧,我意识到我的错误;我使用模型生成预测线的方式很幼稚。对于上面图表中的每个日期,我都从模型中得到一个输出,然后将预测的百分比变化应用到该日期的实际价格,这将给出4个月后的预测价格

考虑到市场在4个月内通常只在0-3%(正负)的幅度内波动,这意味着我的预测总是与当前价格密切相关,只是有4个月的滞后

因此,在每一个日期,预测的产量都在重新计算,因此模型线永远不会偏离实际值太远;这是一样的,但是在0-3%的范围内(正负)


事实上,图表并不重要,而且它也不能反映我使用输出的方式,因此我将放弃尝试获得视觉表示,集中精力寻找不同的指标来降低验证损失。

我试图根据一些基本概念解释观察结果:

  • 如果您不提供时间滞后的X输入数据集(滞后的t-k,其中k是时间步长),那么基本上您将在培训阶段向LSTM输入类似今天的收盘价,以预测相同的今天收盘价。模型将(过度拟合)并与已知答案完全一致(数据泄漏)

  • 如果Y是预测的百分比变化(即X*(1+Y%)=4个月的未来价格),那么预测的现值Y实际上就是按Y%贴现的未来值 因此,预测值将有4个月的变化


  • 1.它是滞后的训练数据;其中X是t-k(作为多变量时间步),Y标签表示价格从当前价格到未来40天价格的变化。2.我不这么认为;该模型从不知道当前价格是多少。我在下面的回答中给出了这种行为的原因。假设我的模型训练精度在+/-3%的误差范围内。比如说在2000年1月1日,我输入了前30天的数据,结果显示+2.1%,现在的价格是100,4个月后的价格是102.1,所以我在5月1日绘制了这个图。1月2日我重复了一遍,上面写着+2%,现在的价格是101,所以5月2日我画了103.2。重复一遍又一遍,我基本上只输出当前价格+/-[0-3]%的回声。没有什么神秘感,只是我用它来想象的方式不是很好。