Neural network 基于多层感知器(MLP)的单变量时间序列多步超前预测
我有一个单变量的时间序列数据。我想做一个多步骤的预测 我遇到了解释时间序列一步预测的问题。 但我对多步预测感兴趣 e、 典型的单变量时间序列数据如下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
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'。
这还需要将输入限制为这些值,因为输入和输出是相同的