Neural network 基于多层感知器(MLP)的单变量时间序列多步超前预测

Neural network 基于多层感知器(MLP)的单变量时间序列多步超前预测,neural-network,time-series,keras,perceptron,Neural Network,Time Series,Keras,Perceptron,我有一个单变量的时间序列数据。我想做一个多步骤的预测 我遇到了解释时间序列一步预测的问题。 但我对多步预测感兴趣 e、 典型的单变量时间序列数据如下 time value ---- ------ t1 a1 t2 a2 .......... .......... t100 a100. 假设,我想要提前3步预测。 我能像这样描述我的问题吗 TrainX TrainY [a1

我有一个单变量的时间序列数据。我想做一个多步骤的预测

我遇到了解释时间序列一步预测的问题。 但我对多步预测感兴趣

e、 典型的单变量时间序列数据如下

    time  value
    ----  ------
    t1      a1
    t2      a2
    ..........
    ..........
    t100    a100.
假设,我想要提前3步预测。 我能像这样描述我的问题吗

   TrainX                 TrainY
[a1,a2,a3,a4,a5,a6]   -> [a7,a8,a9]
[a2,a3,a4,a5,a6,a7]   -> [a8,a9,a10]
[a3,a4,a5,a6,a7,a8]   -> [a9,a10,a11]
..................        ...........
..................        ...........
我使用keras和tensorflow作为后端

第一层有50个神经元,需要6个输入。 隐藏层有30个神经元 输出层有3个神经元,即输出三个时间序列值

model = Sequential()
model.add(Dense(50, input_dim=6, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model.add(Dense(30, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model.add(Dense(3))
model.compile(loss='mean_squared_error', optimizer='adam')

model.fit(TrainX, TrainY, epochs=300, batch_size=16)
我的模型能够预测a107、a108、a109 ,当我的输入为a101、a102、a103、a104、a105、a106时
这是一个有效的模式吗?我遗漏了什么吗?

该模型可以做到这一点,但您可能会从序列使用LSTM层循环网络中获益

#TrainX.shape = (total of samples, time steps, features per step)   
#TrainX.shape = (total of samples, 6, 1)

model.add(LSTM(50,input_shape=(6,1),return_sequences=True, ....))
model.add(LSTM(30,return_sequences=True, ....))
model.add(LSTM(3,return_sequences=False, ....))
您可能缺少一个激活函数,该函数将结果限制在您想要预测的值的可能范围内

我们通常使用从0到1的值activation='sigmoid'或从-1到1 activation='tanh'。 这还需要将输入限制为这些值,因为输入和输出是相同的