Comments 2
Спасибо за статью. У нас прогнозирование идет по датам и в лаги идет продажа в тот же день недели но из прошедших недель. Ну то есть для даты пятницы LAG-1= пятница прошлой недели, LAG-2 = пятница позапрошлой и т.д. до LAG-4.
Прогнозирование требуется с горизонтом до последней даты следующего месяца так же по датам (т.е. от 4 до 9 недель вперед в зависимости от того в какую дату запускаю модели)
Пробовал рекурсивный подход - ошибка прогнозов копилась в лагах и нехорошо влияла на следующие итерации. В итоге вернулся к прогнозу за один шаг одной моделью но с таким сдвигом лагов чтобы их хватило покрыть весь горизонт прогнозирования из прошлого факта.
т.е. на момент моего коммента - это среда 15 февраля и обучающий датасет с подвыборкой среды выглядит таким образом
Видно что при таких лагах начало каждого временного ряда (1 TS=1 продукт) остается пустым но градиентный бустинг на это не жалуется потому что есть еще доп.предикторы на весь временной ряд (средняя всех сред, сигма всех сред, медиана всех сред, средняя всех сред категории этого продукта, медиана всех сред категории этого продукта и т.д.)
В итоге получаю прогноз на 1-2 месяца вперед (в зависимости от даты запуска) за одну итерацию без рекурсивного прогнозирования и одной моделью. При этом пропуски в лагах модель не смущают и сами лаги по Feature Importance занимают далеко не последнее место.
Куда вписывается такая стратегия?
Здравствуйте, спасибо за вопрос. В статье я называл это "упрощенной прямой" стратегией. Идея в том, чтобы взять лаги с запасом, чтобы их хватило для предсказания даже самой последней точки горизонта. Насколько я вижу, у вас горизонт не составляет фиксированное число точек, но по смыслу все равно подходит.
У нас в библиотеке, если использовать класс etna.pipeline.Pipeline
, то он сначала подготавливает признаки на весь горизонт, а затем делает предсказания за один вызов нижележащей модели.
Стратегии прогнозирования временных рядов в ETNA