我正在为价格变动进行预测的项目,但对质量预测不满意。
在每个时间步长上,我都使用LSTM来预测接下来的10个时间步长。输入的是最近45-60次观测的顺序。我测试了几种不同的想法,但它们似乎都给出了相似的结果。对模型进行了训练,以最小化MSE。
对于每个想法,我尝试了一次预测一个步骤的模型,每次预测作为下一个预测的输入被反馈,而模型直接预测了下一个10步(多个输出)。对于每个想法,我还尝试仅使用先前价格的移动平均值作为输入,并扩展输入以在这些时间步长输入订单。 每个时间步长对应一秒钟。
这些是到目前为止的结果:
1-第一次尝试是使用最后N个步的移动平均值作为输入,并预测下一个10步的移动平均值。 在时间t,我使用价格的真实值,并使用模型预测t + 1 .... t + 10
这是结果
仔细检查,我们会发现问题出在哪里:
Prediction seems to be a flat line. Does not care much about the input data.
2)第二次尝试是试图预测差异,而不是简单地预测价格走势。这次的输入不是X [t](这里X是我的输入矩阵),而是X [t] -X [t-1]。 这并没有真正的帮助。 这次的情节看起来像这样:
但是在仔细检查时,在绘制差异时,预测基本上始终为0。
在这一点上,我被困在这里并运用我们的想法进行尝试。我希望有人对这种数据有更多的经验,可以为我指明正确的方向。
我使用正确的目标训练模型吗?处理我丢失的此类数据时,是否有任何详细信息? 是否有任何“技巧”可防止您的模型始终预测与其上次看到的值相似的值? (它们的错误率确实很低,但是到那时它们变得毫无意义了。)
我们非常希望至少能提示您在哪里可以找到更多信息。
谢谢!
答案 0 :(得分:1)
我使用正确的目标训练模型吗?
是的,但是LSTM总是很难预测时间序列。与其他时间序列模型相比,它们非常容易过度拟合。
在处理我丢失的此类数据时,是否有任何详细信息?
有没有“诀窍”来防止您的模型总是预测与其上次看到的值相似的值?
我没有看到您的代码,或者您正在使用的LSTM的详细信息。确保您使用的网络非常小,并且避免过度拟合。确保在对数据进行差异处理后-然后在评估最终预测之前将其重新集成。
尝试构建直接预测10个步骤的模型而不是先构建一个模型然后进行递归预测的技巧。