【问题标题】:Interesting results from LSTM RNN : lagged results for train and validation dataLSTM RNN 的有趣结果:训练和验证数据的滞后结果
【发布时间】:2018-11-07 22:49:31
【问题描述】:

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

当我使用训练数据测试我的模型时,我注意到模型的输出与实际数据相比非常合适,它只是滞后了正好 4 个月:

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

我显然可以理解为什么训练数据会非常接近,因为它在训练期间已经看到了这一切 - 但为什么会滞后 4 个月?

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

时移:

它不像训练数据那样贴合,正如你所期望的那样,但仍然我喜欢 - 我只是不认为它可以这么准确(见小以红色矩形中的 blip 为例)。我认为该模型充当了一个幼稚的预测器,我只是无法弄清楚它是如何/为什么会这样做的。

为了从验证数据中生成这个输出,我输入了一个 200 个时间步长的序列,但是数据序列中没有任何内容说明 4 个月后 %price 的变化 - 它完全断开连接,所以它是怎么回事 那么准确吗? 4 个月的滞后显然是另一个指标,表明这里有问题,我不知道如何解释,但我怀疑两者是相关的。

【问题讨论】:

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


    【解决方案1】:

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

      1234563 ..在训练阶段。该模型将(过度拟合)并表现得与已知答案完全相同(数据泄漏)
    1. 如果 Y 是预测的百分比变化(即 X * (1 + Y%) = 4 个月的未来价格),则预测的现值 Yvalue 实际上只是被 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]% 的回声。没什么大不了的,只是我用它来可视化的方式不是很好。
    【解决方案2】:

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

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

    因此,在每个日期,预测输出都会重新计算,因此模型线永远不会偏离实际值;它会是相同的,但在 0-3%(正负)的范围内。

    真的,图表并不重要,它也不能反映我使用输出的方式,所以我将放弃尝试获得视觉表示,而专注于尝试寻找不同的指标从而降低验证损失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2019-09-07
      • 2021-08-16
      • 2017-12-30
      • 1970-01-01
      • 2020-04-29
      • 2019-11-04
      相关资源
      最近更新 更多