Временные ряды

Feature-based forecasting

Прогноз через признаки

актуальноТекущий рабочий стандарт

Направления: Прикладные направления · Временные ряды

Ряд превращается в табличную задачу: лаги, скользящие статистики, календарь — и дальше .

Ключевые тезисы

  • Побеждает в большинстве соревнований по прогнозированию.
  • Легко подключает внешние факторы и иерархию рядов.
  • Требует строгой хронологической валидации, чтобы не заглянуть в будущее.

Какую задачу решает

Классические модели временных рядов работают с одним рядом и его собственной историей. Как только появляются внешние факторы — акции, погода, праздники, цены конкурентов — и тысячи рядов одновременно (товар × магазин), эта схема становится неудобной.

Подход через переводит задачу в обычную табличную: строка — это «объект в времени», признаки — лаги, скользящие статистики, календарь, внешние факторы, а дальше работает . Это позволяет обучить одну модель на всех рядах сразу, естественно учесть внешние данные и получить качество, которое на практике часто превосходит классические модели.

Как утечка прячется в лагах

Прогноз на 7 дней вперёд. «продажи вчера» на обучении вычисляется легко, а в проде для прогноза на седьмой день его не существует — вчерашних данных относительно той даты ещё нет. Модель обучится опираться на самый сильный признак, а в эксплуатации получит его подстановку или пропуск, и качество рухнет. Правило: для горизонта используйте только лаги от и глубже. Соответственно, для каждого горизонта нужен свой набор — или отдельная модель на каждый .

Подробный разбор

2 подтемы — объяснения, формулы, примеры и интерактивные графики.

df["lag_1"]  = df.groupby("sku")["sales"].shift(1)
df["lag_7"]  = df.groupby("sku")["sales"].shift(7)
df["roll_7"] = df.groupby("sku")["sales"].shift(1).rolling(7).mean()
df["dow"]    = df.date.dt.dayofweek
df["is_holiday"] = df.date.isin(holidays)
Обратите внимание на shift(1) перед rolling — без него окно включает текущий день, и это утечка
  • прогноза определяет минимальный доступный лаг: если предсказываем на 7 дней вперёд, лаг 1 недоступен.
  • Валидация только хронологическая, с теми же разрывами, что и в проде.
  • Такой подход естественно работает с сотнями рядов сразу и с внешними факторами.
фолд 1
фолд 2
фолд 3
фолд 4
фолд 5
обучение валидация
обучений модели5
доля валидации20%
схемаK-Fold
Схема разбиения
Временная схема: обучающий период всегда предшествует валидационному

Прогноз по товару, по категории и по всей сети должны сходиться: сумма частей обязана равняться целому. Если прогнозировать уровни независимо, они разойдутся.

  • Bottom-up: прогнозируем нижний уровень и суммируем — просто, но шумно на верхнем уровне.
  • Top-down: прогнозируем агрегат и распределяем по долям — устойчиво, но теряет специфику товаров.
  • Reconciliation (MinT): статистически оптимальное согласование всех уровней сразу.

Где применяется

  • Прогноз спросаТысячи товаров в сотнях точек: одна модель вместо тысяч .
  • Прогноз нагрузкиТрафик, звонки, потребление энергии с учётом погоды и календаря.
  • Ряды с внешними факторамиПромо, цены, конкуренты — всё это просто .
  • Короткие рядыНовый товар без истории получает прогноз за счёт похожих товаров.

Плюсы, минусы и альтернативы

Плюсы

  • Естественно учитывает внешние факторы и категориальные .
  • Одна модель на тысячи рядов: проще эксплуатировать, чем тысячи моделей.
  • Работает на коротких рядах за счёт переноса знания между ними.
  • Использует весь зрелый инструментарий табличного ML.

Минусы

  • Не экстраполирует тренд: не выходит за диапазон обучающих значений.
  • Требует аккуратной работы с лагами — здесь легко получить утечку из будущего.
  • Не даёт из коробки.
  • Нужно строить , а классическая модель работает сразу.

Брать, если

  • Рядов много и есть внешние факторы.
  • Ряды короткие или появляются новые объекты.
  • Нужно учесть промо, календарь, погоду и прочий контекст.

Не брать, если

  • Ряд один, длинный и с выраженным трендом — классические модели проще и экстраполируют.
  • Нужны интервалы прогноза с обоснованием.

Чем заменяют

Связанные темы

Прогноз спроса · Прогнозирование рядов

Hierarchical Forecasting85%

Иерархические прогнозы · Временные ряды

Прогнозы по товару, категории и сети должны согласовываться: сумма частей обязана равняться целому.

Intermittent Demand85%

Прерывистый спрос · Временные ряды

Ряды, где большая часть значений — нули: запчасти, редкие товары, аварийные события. Обычные метрики и модели здесь не работают.

MAPE85%

Средняя абсолютная процентная ошибка · Метрики

Относительная ошибка в процентах — удобна для сравнения рядов разного масштаба.

SMAPE85%

Симметричная MAPE · Метрики

Вариант MAPE с нормировкой на сумму факта и прогноза — частично лечит асимметрию.

Poisson Distribution85%

Распределение Пуассона · Теория вероятностей и распределения

Число редких независимых событий за фиксированный интервал: заказы за час, отказы за сутки, клики за сессию.

Stationarity85%

Стационарность · Временные ряды

Постоянство статистических свойств ряда во времени — предпосылка большинства классических моделей.

Autocorrelation85%

Автокорреляция · Временные ряды

Связь ряда с собственными прошлыми значениями — главный источник признаков и диагностики.

AR / MA / ARIMA85%

AR / MA / ARIMA · Временные ряды

Классическое семейство: авторегрессия, скользящее среднее ошибок и их комбинация с дифференцированием.

SARIMA85%

SARIMA · Временные ряды

ARIMA с явными сезонными компонентами — для рядов с недельной, месячной или годовой периодикой.

Exponential Smoothing85%

Экспоненциальное сглаживание · Временные ряды

Взвешивание прошлых наблюдений с экспоненциально убывающими весами; модель Хольта — Винтерса добавляет тренд и сезонность.

Prophet85%

Prophet · Временные ряды

Аддитивная модель тренда, сезонностей и праздников с упором на удобство для аналитика.

RNN/LSTM85%

RNN/LSTM для рядов · Временные ряды

Нейросети, обучаемые сразу на множестве связанных рядов, улавливают общие паттерны.

Transformer forecasting85%

Трансформеры для прогноза · Временные ряды

Внимание над длинными горизонтами: Informer, Autoformer, PatchTST, TFT.

Проверить себя

Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.

Следующий шагПроверить себя: Временные рядыТема встречается в этом тесте 3 раза. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

Глава «Временные ряды» последний раз правилась . Нашли ошибку — напишите.