我希望能够预测那些每周可预测的值(低信噪比)。我需要预测一整个年度形成的时间序列,该年度由一年中的每周组成(52个数值-图1)。
我的第一个想法是使用Keras over TensorFlow开发一个多对多LSTM模型(图2)。我正在使用52个输入层(上一年的时间序列)和52个预测输出层(下一年的时间序列)来训练模型。train_X的形状为(X_examples,52,1),换句话说,X_examples表示训练样本数,52个时间步长,每个时间步长有1个特征。我知道Keras会将这52个输入视为同一域的时间序列。train_Y的形状也相同(y_examples,52,1)。 我添加了一个TimeDistributed层。我的想法是算法将预测值作为时间序列而不是孤立的值进行预测(我正确吗?)在Keras中,该模型的代码如下:
y = y.reshape(y.shape[0], 52, 1)
X = X.reshape(X.shape[0], 52, 1)
# design network
model = Sequential()
model.add(LSTM(n_neurons, input_shape=(X.shape[1], X.shape[2]), return_sequences=True))
model.add(TimeDistributed(Dense(1)))
model.compile(loss='mean_squared_error', optimizer='adam')
# fit network
model.fit(X, y, epochs=n_epochs, batch_size=n_batch, verbose=2)
问题在于算法没有学习到示例,它正在预测与属性值非常相似的值。我是否正确地建模了问题?第二个问题: 另一个想法是用1个输入和1个输出来训练算法,但是在测试期间,我如何预测整个2015年的时间序列而不查看“1个输入”?测试数据将具有不同的形状比训练数据。