Модель Keras LSTM прогнозирует только в одном направлении для прогнозирования на один шаг вперед - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть интересная проблема с предсказаниями моей модели keras LSTM.Цель моей модели - предсказать изменения высоких и низких цен для выбранной пары валютных курсов на основе следующих переменных: открытие, максимум, минимум, закрытие и объем.Мой фрейм данных выглядит следующим образом:

набор данных

Перед обучением моей модели я применил следующие шаги подготовки данных к своему фрейму данных:

  1. Рассчитано процентное изменение от одного момента времени к следующему (текущий - предыдущий) / предыдущий для всех столбцов, показанных в приведенном выше кадре данных.
  2. Примененная нормализация с нулевым средним для каждого столбца во всех столбцах.
  3. Использовал MinMaxScaler для преобразования данных в каждом столбце между [-1,1].
  4. Поскольку я хотел обучить модель LSTM, я также применил окно просмотра назадк фрейму данных (см. код ниже).

    df_all_lookback_x = {} for i in range(0,window_size+1): if(i==0): df_all_lookback_x = df_x else: df_all_lookback_x = pd.concat([df_x.shift(i),df_all_lookback_x], axis=1)

Затем была обучена сама модель, как показано ниже:

model = Sequential()
model.add(LSTM(100, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dropout(0.2))
model.add(Dense(2, activation='tanh'))
model.compile(loss='mean_squared_error', optimizer='adam')

Если я затем использую модель для прогнозирования данных по поездам + тестам, оба: процентные изменения для низких и высоких цен для меня не имеют смысла.Кажется, что для прогнозируемых высоких процентных изменений цены почти все значения являются низкими (образуя линию в среднем), а для низких процентных изменений цены это наоборот.Пожалуйста, найдите фотографии ниже.

Прогноз против реального

Прогноз против реального

Кто-нибудь сталкивался с подобной проблемой и будетбыть в состоянии посоветовать мне по этому вопросу?

Вещи уже опробованы:

  1. Использовано другое количество функций в качестве входных данных для модели.
  2. Изменены параметры модели: окно просмотра, эпохи, частота выпадения, размер модели LSTM
  3. Измененный ввод для модели: удалены шаги нормализации
  4. Используются различные функции потерь, оптимизаторы
  5. Tanh, линейный, relu asфункции активации
  6. Попытка предсказать только одну выходную переменную вместо обеих, изменение цены в верхнем и нижнем процентах.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...