我刚刚开始在keras中使用LSTM,我发现学习时间序列行为的可能性非常有趣。我已经在线阅读了几篇教程和文章,其中大多数都显示了令人印象深刻的预测时间序列的功能,因此我尝试了一下。我注意到的第一件事是,我发现的所有文章始终以非常不公平的方式使用验证数据。我预测时间序列的想法是,我使用训练数据来构建模型,并使用训练数据的最后N个元素来估计序列的未来行为。为此,该模型必须使用自己的预测作为输入,以便将来向前迈进。
我所看到的人们正在做的是,使用地面实况作为估计的输入来估计将来任何时候的测试集的准确性。这是非常不公平的,因为它不能产生真实的预测!
我尝试用Keras编写我自己的LSTM预测(请在下面找到代码),然后从一个相对简单的案例开始,即抛物线和正弦曲线的组合。不幸的是,结果令人非常不满意。以下是通过更改网络参数获得的一些示例:
您有什么建议以获得更好的结果吗?如果LSTM无法预测这样的“简单”信号,那么它们如何预测?
谢谢亚历山德罗
import os
import numpy as np
from matplotlib import pyplot as plt
import keras
# Number of vectors to consider in the time window
look_back = 50
N_datapoints = 2000
train_split = 0.8
# Generate a time signal composed of a linear function and a sinusoid
t = np.linspace(0, 200, N_datapoints)
y = t**2 + np.sin(t*2)*1000
y -= y.mean()
y /= y.std()
plt.plot(y)
# Reshape the signal into fixed …
Run Code Online (Sandbox Code Playgroud)