Я новичок в области глубокого обучения, и мне нужна помощь с LSTM.
Данные, которые я анализирую, состоят из ряда ошибок http для каждого временного шага в течение 1 месяца.Я решил рассматривать данные для каждого 10-минутного шага (чтобы получить больше данных для обучения).
Заголовок данных:
data.head
Данные показывают тенденции сезонности, очень мало ошибок в конце недели и большое количество в рабочие дни (т.е. когда люди подключаются к серверам).
Моя цель - прогнозироватьколичество ошибок на следующий день.Я создал новый столбец с данными, смещенными на день, чтобы предсказать его (смещено на 6 * 24, учитывая, что у нас есть 10-минутные шаги).Поэтому я пытаюсь предсказать 6 * 24 временного шага вперед.
Моя модель следующая:
model = Sequential()
model.add(LSTM(1008, return_sequences = True, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(144, return_sequences = True, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(7, return_sequences = True, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
Я узнал, что для обучения модели данные должны иметьследующая форма: [образцы, временные шаги, особенности].Он состоит из нескольких суб-временных рядов.Итак, сначала я попробовал следующую форму: [60, 6 * 24, 1], то есть 60 образцов, и каждый представляет день.
Я также пробовал несколько слоев и скрытых единиц, но моя проблема всегда одна и та же: модель не может отразить еженедельную сезонность данных, похоже, что прогнозы смещены или, возможно, основаны на прогнозахв предыдущий день.
Вот график, который у меня есть для прогноза:
actual_vs_prediction
Данные испытаний состоят из 12 дней, следующих за месяцемданные обучения.
Я подумал, что, если я укажу модели, что временные ряды составляют недели, это решит проблему.Поэтому я также попытался собрать больше данных и рассмотреть следующую форму для ввода: [21, 6 * 24 * 7, 1], то есть 21 выборка, каждая из которых представляет неделю (10 мин * 6 * 24 * 7),Это не сработало, и у меня есть сюжет, очень похожий на предыдущий.
Я надеюсь, что мои объяснения ясны, если не стесняйтесь спрашивать более подробную информацию.
Спасибо
PS: Если при сборе данных используется только 1-часовой или однодневный временной интервал, дайте мне знать.Я не исследовал этот вариант, потому что у меня было бы очень мало примеров для обучения.