У меня есть интересная проблема с предсказаниями моей модели keras LSTM.Цель моей модели - предсказать изменения высоких и низких цен для выбранной пары валютных курсов на основе следующих переменных: открытие, максимум, минимум, закрытие и объем.Мой фрейм данных выглядит следующим образом:
набор данных
Перед обучением моей модели я применил следующие шаги подготовки данных к своему фрейму данных:
- Рассчитано процентное изменение от одного момента времени к следующему (текущий - предыдущий) / предыдущий для всех столбцов, показанных в приведенном выше кадре данных.
- Примененная нормализация с нулевым средним для каждого столбца во всех столбцах.
- Использовал MinMaxScaler для преобразования данных в каждом столбце между [-1,1].
Поскольку я хотел обучить модель 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')
Если я затем использую модель для прогнозирования данных по поездам + тестам, оба: процентные изменения для низких и высоких цен для меня не имеют смысла.Кажется, что для прогнозируемых высоких процентных изменений цены почти все значения являются низкими (образуя линию в среднем), а для низких процентных изменений цены это наоборот.Пожалуйста, найдите фотографии ниже.
Прогноз против реального
Прогноз против реального
Кто-нибудь сталкивался с подобной проблемой и будетбыть в состоянии посоветовать мне по этому вопросу?
Вещи уже опробованы:
- Использовано другое количество функций в качестве входных данных для модели.
- Изменены параметры модели: окно просмотра, эпохи, частота выпадения, размер модели LSTM
- Измененный ввод для модели: удалены шаги нормализации
- Используются различные функции потерь, оптимизаторы
- Tanh, линейный, relu asфункции активации
- Попытка предсказать только одну выходную переменную вместо обеих, изменение цены в верхнем и нижнем процентах.