Я пытаюсь реализовать модель для прогнозирования временного ряда на основе других показателей c, отличных от ожидаемого результата.
Я загрузил свою модель массивом (X), состоящим из 200 временных шагов и я пытаюсь предсказать другой массив (Y) всего на один шаг в будущем, что должно быть довольно простой проблемой. Train_X.shape = (61463, 200, 1), Train_y.shape = (61463,)
Моя модель с использованием API Sequential KERAS:
model.add(tf.keras.layers.Conv1D(filters=30,kernel_size=4,
strides=2,padding='valid',
input_shape=(n_steps,n_features)))
model.add(tf.keras.layers.LSTM(100,return_sequences=True,dropout=0.5))
model.add(tf.keras.layers.LSTM(100,return_sequences=True,dropout=0.5))
model.add(tf.keras.layers.TimeDistributed(Dense(50,activation='exponential')))
model.add(tf.keras.layers.TimeDistributed(Dense(1)))
Модель предсказывает форму волны массива Y неплохие. Хотя значения меньше реальных. Вот почему я добавляю и экспоненциальный плотный слой, потому что я прочитал, это полезно, когда выход и вход имеют разные масштабы.
Я прилагаю полученный прогноз, фактические значения и входные данные модели
Результат модели
Я также сравниваю полученные и фактические значения, чтобы увидеть, какая у меня проблема.
Фактическое и прогнозируемое
Помогите, пожалуйста, решить эту проблему. Я пробовал сотни различных решений, но ни одно из них не работает.