У меня есть вопрос, который мне нужен, чтобы предложить, как к нему подойти. Предположим, у меня есть многомерный временной ряд. например, как показано ниже:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
, где каждый столбец является одной функцией. и каждый ряд отличается наблюдением. например, первая строка соответствует первому разу, вторая строка - второму разу и т. д. Предположим, имеется 500 наблюдений.
Я хотел бы обучить модель, и, когда мне дают начальную точку последовательности, я могу сгенерировать всю последовательность из этого.
Например, для тестирования предположим, что мне дают 1 2 3 4 5. Я должен быть в состоянии генерировать всю последовательность 6 7 8 9 10, 11 12 13 14 15 и 16 17 18 19 20 до конца траектории.
Может кто-нибудь предложить мне методы, чтобы сделать это.
Я сделал прогнозирование временного ряда, как сформулировал задачу следующим образом, где вход для одного наблюдения в момент времени t + 1 является выходом наблюдения в момент времени t. Подобно следующему:
1 2 3 4 5 6 7 8 9 10
6 7 8 9 10 11 12 13 14 15
11 1213 14 15 16 17 18 19 20
И я передаю всю последовательность, подобную этой, RNN для обучения, и тестирование выполняется с использованием первой точки последовательности, например, 1 2 3 4 5
и принимая выходные данные этого и использовать прогнозируемые выходные данные в качестве входных данных для модели RNN в цикле, пока я не сгенерирую всю последовательность.
Я использую LSTM в Keras с такими же командами
model.add(LSTM(64, return_sequences=True input_shape=(None,1,5), stateful=
True)
model.add(LSTM(32, return_sequences=False, stateful=True)
model.add(Dense(5))
model.compile(loss='mse', optimizer='adam')
, а затем установите модель с размером партии 1. и для тестирования просто введите одно наблюдение за один раз, как описано выше.
Проблема этого метода в том, что я правильно оцениваю первую точку. Это означает, что выходные данные для 1 2 3 4 5 являются приемлемым прогнозом, например, предположим, что результат равен 6,7 7,5 8,9 9,2 10,4, но после того, как я использую это в качестве входных данных для следующей части, я получаю действительно плохую оценку, и в какой-то момент последовательность не меняется, и я возвращаюсь, как 12 13 17 19 20, и это остается для всего наблюдения. Так что это не обучение.
Может кто-нибудь сказать мне, что не так с этим подходом и как я могу это исправить, или предложить мне некоторые методы для решения этих типов проблем.