使用具有Keras的LSTM进行时间序列预测的不同大小的预测因子

时间:2017-04-03 16:28:53

标签: time-series keras lstm

我想使用其他时间序列XY的过去值来预测时间序列值X。详细地说,我想在时间t预测X({ {1}})使用(Xt,...,Xt-p)和(Xt-1,...,Yt-pYt-1)与p “回头看”的维度。 所以,我的问题是我的2个预测变量的长度不一样。 让我们用一个例子来说明一点。

如果我使用时间步长2,我会有一个观察结果: Yt作为输入,[(Xt-p,Yt-p),...,(Xt-1,Yt-1),(??,Yt)]作为输出。我不知道使用什么而不是Xt

我理解从数学上讲,我需要为预测变量设置相同的长度,所以我正在寻找一个值来替换缺失的值。

我真的不知道这里是否有一个好的解决方案,如果我能做到这一点,那么任何帮助将不胜感激。

干杯!

PS:你可以看到我的问题,好像我想用第二天的天气预测在一个城市提前一天预测出售冰淇淋的数量。 ??将是冰淇淋的数量,X可能是温度。

1 个答案:

答案 0 :(得分:1)

你可以,例如执行以下操作:

input_x = Input(shape=input_shape_x)
input_y = Input(shape=input_shape_y)
lstm_for_x = LSTM(50, return_sequences=False)(input_x)
lstm_for_y = LSTM(50, return_sequences=False)(input_y)
merged = merge([lstm_for_x, lstm_for_y], mode="concat") # for keras < 2.0
merged = Concatenate([lstm_for_x, lstm_for_y])
output = Dense(1)(merged)

model = Model([x_input, y_input], output)
model.compile(..)
model.fit([X, Y], X_next)

X是一系列序列,X_forwardX p - 前面的步骤,Y是一系列{{1}的序列}。