我正在测试 LSTM 模型来预测一段时间内的感染数量。我正在测试不同的输入(“lookback”)和输出(“pred_length”)长度以及最后一个可用数据点和首先预测的数据点(“lead”)之间的延迟。我目前正在研究在多菌株 Epi 模型下模拟的数据,该模型在两种病毒(例如流感 H1 和 H3)的病例中产生每年的波动。我很高兴编辑分享代码+数据,但为了不淹没读者,我将分享我认为重要的内容。 我正在进行滚动预测:在每个预测时间点(由图表上的线表示),我重新训练/测试/预测。随着模型看到越来越多的过去数据,预测会随着时间的推移而改善。 我的问题是:我希望预测在与可用数据最接近的时间点上表现最好,因此我希望每个预测中第一个时间点的准确性最高,然后预测的以下时间点的准确性会降低,但我没有看到这一点,为什么不呢?我认为这与 LSTM 中长记忆的影响有关,但我很想了解更多。或者这是一个编码/模型问题 - 更改模型会有帮助吗?
#model
model8 <- keras_model_sequential() %>%
layer_lstm(units = 50, input_shape = c(lookback, length(features)), return_sequences = FALSE) %>%
layer_repeat_vector(pred_length) %>%
layer_lstm(units = 50, return_sequences = TRUE) %>%
time_distributed(layer_dense(units = length(target_features)))
model8 %>% compile(loss = 'mse', optimizer = 'adam')
#forecast
forecast_output <- lapply(forecast_timepoints, function(x) {
train_and_forecast(out2, model, data_cutoff=x , lookback=52, lead=0, pred_length=0, target_features,
bs=80, epoch=80, vs=0.1, original_data = out)})
我在预测 n 周期内的价格变动时遇到类似的问题。 在预测系列结束时我的准确性会提高...... 在此输入图片描述