用于时序预测的LSTM模型可预测不规则值,如锯齿

时间:2018-11-11 11:48:34

标签: python tensorflow machine-learning keras time-series

我正在训练Keras模型来预测自行车共享站点的可用性。我会在培训集中提供一整排,其中包括一年中的某天,时间,工作日,车站和免费自行车。每个样本都包含前一天的可用性(144个样本),我正在尝试预测第二天的可用性(144个样本)。所使用的集合的形状是

Train X (2362, 144, 5)
Train Y (2362, 144)
Test X (39, 144, 5)
Test Y (39, 144)
Validation X (1535, 144, 5)
Validation Y (1535, 144)

我正在使用的模型就是这个

    model.add(LSTM(20, input_shape=(self.train_x.shape[1], self.train_x.shape[2]), return_sequences = True))
    model.add(Dropout(0.2))
    model.add(LSTM(20))
    model.add(Dense(144))
    model.compile(loss='mse', optimizer='adam', metrics = ['acc', 'mape', 'mse'])

    history = self.model.fit(self.train_x, self.train_y, batch_size=50, epochs=20, validation_data=(self.validation_x, self.validation_y), verbose=1, shuffle = True)

训练后做出的预测与预期的输出无关,它们的形状类似于锯齿形,其值超过了原始大小。

Prediction Sample

准确度很少提高,但损失呈正常形状。

Accuracy

Loss

作为示例,每个时期之后的历史记录如下

Epoch 17/20
2362/2362 [==============================] - 12s 5ms/step - loss: 9.1214 - acc: 0.0000e+00 - mean_absolute_percentage_error: 21925846.0813 - mean_squared_error: 9.1214 - val_loss: 9.0642 - val_acc: 0.0000e+00 - val_mean_absolute_percentage_error: 24162847.3779 - val_mean_squared_error: 9.0642
Epoch 18/20
2362/2362 [==============================] - 12s 5ms/step - loss: 8.2241 - acc: 0.0013 - mean_absolute_percentage_error: 21906919.9136 - mean_squared_error: 8.2241 - val_loss: 8.1923 - val_acc: 0.0000e+00 - val_mean_absolute_percentage_error: 22754663.8013 - val_mean_squared_error: 8.1923
Epoch 19/20
2362/2362 [==============================] - 12s 5ms/step - loss: 7.4190 - acc: 0.0000e+00 - mean_absolute_percentage_error: 21910003.1744 - mean_squared_error: 7.4190 - val_loss: 7.3926 - val_acc: 0.0000e+00 - val_mean_absolute_percentage_error: 24673277.8420 - val_mean_squared_error: 7.3926
Epoch 20/20
2362/2362 [==============================] - 12s 5ms/step - loss: 6.7067 - acc: 0.0013 - mean_absolute_percentage_error: 22076339.2168 - mean_squared_error: 6.7067 - val_loss: 6.6758 - val_acc: 6.5147e-04 - val_mean_absolute_percentage_error: 22987089.8436 - val_mean_squared_error: 6.6758

我真的不知道问题可能在哪里,更多层?更少层?采用不同的方法?

更新:训练/测试数据图。图的左侧显示了提供给模型的前一天的可用性,右侧显示了结果应该是什么以及模型做出的预测。

Predicted

0 个答案:

没有答案