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

时间:2018-11-07 22:49:32

标签: neural-network keras lstm rnn training-data

作为RNN / LSTM(无状态)的简介,我正在训练一个模型,该模型具有200天的先前数据(X)的序列,包括诸如每日价格变化,每日量变化等内容,并且标签/ YI具有价格从当前价格到4个月内的百分比变化。基本上,我想估计市场方向,而不是100%准确。但是我得到了一些奇怪的结果...

然后我用训练数据测试模型时,我注意到模型的输出与实际数据相比非常合适,仅相差了 4个月:

enter image description here

当我将数据移动4个月时,您会发现它非常合适。

enter image description here

我显然可以理解,为什么训练期间的训练数据非常合适,但是为什么4个月会滞后呢?

它对验证数据执行相同的操作(请注意我用红色框突出显示的区域以供将来参考)

enter image description here

时移:

enter image description here

它不像您期望的那样适合训练数据,但依我的喜好仍然-我只是不认为它可以这么精确(请参阅以红色矩形为例)。我认为该模型只是一个幼稚的预测器,我只是无法弄清楚它可能/为什么这样做。

要从验证数据中生成此输出,我输入了200个时间步长的序列,但是数据序列中没有任何内容说明4个月内的价格变化百分比-完全断开了连接,所以它如何>那么准确吗? 4个月的滞后时间显然是另一个提示,说明这里有些不对劲,我不知道该如何解释,但我怀疑两者之间是有联系的。

2 个答案:

答案 0 :(得分:0)

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

鉴于市场通常在4个月的时间内仅在0-3%(正负)的幅度内波动,这意味着我的预测总是会紧贴当前价格,仅滞后4个月。

因此,每天都要对预测输出进行重新计算,因此模型线永远不会偏离实际值;会是一样的,但是在0-3%(正负)范围内。

真的,该图并不重要,它也无法反映我将如何使用输出的方式,因此我将放弃尝试获取可视化表示,而专注于尝试查找不同的指标降低了验证损失。

答案 1 :(得分:0)

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

  1. 如果您不提供带有时间滞后的X输入数据集(滞后tk,其中k是时间步长),那么基本上您将像今天的收盘价一样为LSTM提供数据,以预测与今天的收盘价相同的价格..在训练阶段。该模型将(过度拟合)并按照确切的答案表现(数据泄漏)

  2. 如果Y是预测的百分比变化(即X *(1 + Y%)= 4个月的未来价格),则预测的现值Yvalue实际上只是未来折现了Y% 因此预测值将有4个月的变动