Постановка задачи прогноза: горизонт и цель

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

Горизонт прогноза — на сколько шагов вперёд мы предсказываем: один день, неделя, квартал. Чем дальше горизонт, тем выше неопределённость.

Зачем формализовать задачу

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

Хорошая постановка задачи отвечает минимум на пять вопросов: что прогнозируем (объект), с какой гранулярностью (шаг), на сколько шагов вперёд (горизонт), как часто пересчитываем прогноз (частота обновления) и по какому критерию меряем успех (метрика и допустимая ошибка). Пропуск любого из них почти гарантированно приводит к тому, что модель формально «работает», но не отвечает на вопрос бизнеса. Классический провал: команда месяцами улучшала прогноз на день вперёд, а отделу закупок был нужен прогноз на месяц — и вся точность оказалась нерелевантной.

Полезно с самого начала записать критерий успеха в терминах денег или операций, а не только в терминах метрики. «Снизить MAE на 5%» мало что говорит руководителю; «сократить избыточные остатки на складе на 12% при том же уровне сервиса» — говорит всё. Метрика — это инструмент, а цель формулируется на языке решения, которое прогноз обслуживает.

Точечный прогноз против интервала

Точечный прогноз — одно число: «завтра продадим 150 штук». Но реальность колеблется, и одно число почти всегда ошибочно. Гораздо честнее интервал: «с вероятностью 90% продажи будут между 130 и 175». Для планирования склада или мощностей интервал важнее точки: он показывает риск. Прогноз без интервала — это уверенность, которой у модели на самом деле нет.

Интервал к тому же напрямую переводится в бизнес-решение, и часто несимметрично. Если дефицит товара стоит дороже, чем хранение излишка, разумно закладываться на верхнюю границу интервала, а не на точечный прогноз, — сознательно «перезаказать», чтобы не упустить продажи. И наоборот: для скоропортящегося товара дороже излишек, и ориентируются ближе к нижней границе. Без интервала такой расчёт невозможен в принципе — у вас просто нет языка, чтобы выразить риск.

Простой пример горизонта

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

history = [100, 110, 120, 130, 140]  # ровный рост по 10

step = history[-1] - history[-2]     # оценка шага тренда
last = history[-1]

for h in range(1, 4):
    point = last + step * h
    # грубый интервал растёт с горизонтом
    margin = 5 * h
    print(f"h={h}: прогноз={point}  интервал=[{point-margin}, {point+margin}]")

Вывод:

h=1: прогноз=150  интервал=[145, 155]
h=2: прогноз=160  интервал=[150, 170]
h=3: прогноз=170  интервал=[155, 185]

Ключевая идея в строке margin = 5 * h: чем дальше горизонт, тем шире интервал. Неопределённость накапливается, и честная модель это показывает.

Этот пример намеренно наивен: он берёт лишь последний шаг тренда (history[-1] - history[-2]) и слепо продлевает его вперёд. На идеально ровном ряду такая экстраполяция точна, но на реальных данных с шумом и сезонностью она быстро уходит в сторону — и именно поэтому интервал так важен. Обратите внимание, что расширение интервала здесь задано руками формулой 5 * h: настоящие модели выводят эту ширину из дисперсии остатков, а не из произвольного коэффициента. Но качественная картина та же: воронка неопределённости раскрывается с горизонтом.

Как работает под капотом

Горизонт обозначают буквой h. Прогноз на шаг вперёд (h=1) опирается на самые свежие данные и обычно точен. С ростом h ошибки накапливаются: модель прогнозирует поверх собственных прогнозов. Поэтому доверительные интервалы расширяются как воронка. Большинство статистических моделей умеют выдавать такой интервал аналитически, а ML-подходы — через симуляции или квантильную регрессию.

Накопление ошибки удобно представлять так: чтобы предсказать значение через три шага, рекурсивная модель сначала предсказывает первый шаг, затем опирается на этот предсказанный (уже неточный) результат для второго, и на ещё менее точный — для третьего. Погрешности перемножаются и складываются, отсюда и форма воронки. Существует и альтернатива — обучать отдельную модель под каждый горизонт (прямой подход): она не копит ошибку рекурсивно, но требует больше моделей и данных. Выбор между рекурсивной и прямой стратегией — одно из первых архитектурных решений в прогнозировании.

Наконец, горизонт жёстко связан с валидацией. Если в проде вы прогнозируете на 30 дней вперёд, то и оценивать модель нужно на 30-дневном горизонте, многократно сдвигая окно по истории (так называемая backtesting-валидация). Оценка на h=1 в этом случае систематически приукрашивает реальное качество и вводит команду в заблуждение.

Стоит развести два близких понятия — горизонт и частоту обновления. Горизонт отвечает на вопрос «на сколько шагов вперёд смотрим», а частота — «как часто пересчитываем прогноз заново». Можно прогнозировать на месяц вперёд, но обновлять прогноз каждый день, подмешивая свежие данные: тогда дальние точки постоянно уточняются по мере приближения. Такой режим (rolling forecast) почти всегда точнее, чем один прогноз на весь горизонт, сделанный раз в месяц, потому что модель не остаётся надолго со «старой» картиной мира. Чем дороже ошибка, тем чаще имеет смысл пересчитывать прогноз — вплоть до ежечасного для высоконагруженных сервисов.

Частые ошибки

  • Отдавать бизнесу голую точку без интервала — иллюзия точности.
  • Оценивать модель на горизонте h=1, а применять на h=30 — метрики не совпадут.
  • Считать, что узкий интервал = хорошая модель; он может быть просто слишком оптимистичным.
  • Формулировать успех только в терминах метрики, не переводя его в деньги или операции.
  • Игнорировать асимметрию рисков дефицита и излишка при выборе точки внутри интервала.

Итоги

  • Задача прогноза = что прогнозируем + горизонт + шаг + критерий успеха.
  • Интервал важнее точки: он показывает неопределённость и риск.
  • С ростом горизонта неопределённость растёт — интервалы расширяются.
  • Оценивать модель нужно на том же горизонте, на котором она работает в проде.
  • Критерий успеха формулируется на языке бизнес-решения, метрика — лишь инструмент.
Проверьте себя
1. Почему интервальный прогноз обычно полезнее точечного?
AЕго проще считать
BОн показывает неопределённость и риск решения
CОн всегда точнее по MAE
DОн не зависит от данных
2. Что происходит с шириной доверительного интервала при росте горизонта прогноза?
AСужается
BНе меняется
CРасширяется, так как неопределённость накапливается
DСтановится нулевой