LSTM имеет систематическое смещение между предсказаниями и основополагающей правдой - PullRequest
0 голосов
/ 25 января 2019

В настоящее время я думаю, что испытываю систематическое смещение в модели 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, по-видимому, только снижает точность. Любой совет будет принят во внимание.

enter image description here

Дополнительная информация на картинке. Ось Y - это значение, ось X - время (в днях). NaN были заменены на ноль, потому что значение истинности основания в этом случае никогда не может достичь нуля. Вот почему странные выбросы в данных.

Edit: Я внес некоторые изменения в модель, что повысило точность. Архитектура та же, но используемые функции изменились. В настоящее время в качестве функции используются только исторические данные самой целевой последовательности. Наряду с этим, n_input изменилось так 128. Переключено Adam для SGD, среднеквадратичная ошибка со средней абсолютной ошибкой и, наконец, NaN были интерполированы вместо замены на 0.

Прогнозы на один шаг вперед для набора проверки выглядят хорошо:

enter image description here

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

enter image description here

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

1 Ответ

0 голосов
/ 27 января 2019

Похоже, ваша модель переоснащается и просто всегда возвращает значение с последнего временного шага в качестве прогноза.Ваш набор данных, вероятно, слишком мал, чтобы модель с таким количеством параметров сходилась.Вам нужно будет прибегнуть к методам, которые борются с переобучением: агрессивное выбывание, добавление большего количества данных или использование более простых, менее переопределяемых методов.

Это явление (LSTM, возвращающие сдвинутую версию ввода) было повторяющейся темой во многих вопросах stackoverflow. Ответы там могут содержать некоторую полезную информацию:

Прогноз последовательности LSTM в Керасе просто выводит последний шаг на входе

Модель LSTM просто повторяет прошлое в временных рядах прогнозирования

LSTM NNпроизводит «сдвинутый» прогноз (результат низкого качества)

Сеть Keras, производящая обратные прогнозы

Прогнозы цен акций Keras для многослойной модели LSTM сходятся кпостоянное значение

Прогнозируемые временные ряды Keras LSTM сдавлены и сдвинуты

Наконец, имейте в виду, что, в зависимости от характера вашего набора данных, просто может не быть шаблонабыть обнаруженным в ваших данных вообще.Вы часто это видите, когда люди пытаются предсказать фондовый рынок с помощью LSTM (возникает вопрос о потоке стека и о том, как предсказать номера лотереи).

...