В настоящее время я думаю, что испытываю систематическое смещение в модели LSTM, между предсказаниями и базовыми значениями истинности. Каков наилучший подход, чтобы продолжать дальше?
Архитектура модели, а также прогнозы и основные значения истинности показаны ниже. Это проблема регрессии, когда для прогнозирования цели y
используются исторические данные цели плюс 5 других коррелированных признаков X
. В настоящее время входная последовательность n_input
имеет длину 256, где выходная последовательность n_out
равна единице. Упрощенно, предыдущие 256 точек используются для прогнозирования следующего целевого значения.
X
нормализовано. Среднеквадратическая ошибка используется в качестве функции потерь. В качестве оптимизатора используется Адам со скоростью обучения отжига косинуса (min_lr=1e-7
, max_lr=6e-2
).
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
cu_dnnlstm_8 (CuDNNLSTM) (None, 256) 270336
_________________________________________________________________
batch_normalization_11 (Batc (None, 256) 1024
_________________________________________________________________
leaky_re_lu_11 (LeakyReLU) (None, 256) 0
_________________________________________________________________
dropout_11 (Dropout) (None, 256) 0
_________________________________________________________________
dense_11 (Dense) (None, 1) 257
=================================================================
Total params: 271,617
Trainable params: 271,105
Non-trainable params: 512
_________________________________________________________________
Увеличение размера узла в слое LSTM, добавление большего количества слоев LSTM (с return_sequences=True
) или добавление плотных слоев после слоев (слоев) LSTM, по-видимому, только снижает точность. Любой совет будет принят во внимание.
Дополнительная информация на картинке. Ось Y - это значение, ось X - время (в днях). NaN были заменены на ноль, потому что значение истинности основания в этом случае никогда не может достичь нуля. Вот почему странные выбросы в данных.
Edit:
Я внес некоторые изменения в модель, что повысило точность. Архитектура та же, но используемые функции изменились. В настоящее время в качестве функции используются только исторические данные самой целевой последовательности. Наряду с этим, n_input
изменилось так 128
. Переключено Adam
для SGD
, среднеквадратичная ошибка со средней абсолютной ошибкой и, наконец, NaN были интерполированы вместо замены на 0.
Прогнозы на один шаг вперед для набора проверки выглядят хорошо:

Однако смещение набора проверки остается:

Возможно, стоит отметить, что это смещение также появляется в наборе поездов для x 