Постановка задачи прогноза: горизонт и цель
Прежде чем строить модель, точно формулируем: что, на сколько вперёд и с какой точностью мы прогнозируем.
Горизонт прогноза — на сколько шагов вперёд мы предсказываем: один день, неделя, квартал. Чем дальше горизонт, тем выше неопределённость.
Зачем формализовать задачу
«Спрогнозируй продажи» — это ещё не задача. Продажи чего, по какому товару, на какой горизонт, с каким шагом, и что считать успехом? Разные ответы дают совершенно разные модели. Прогноз на завтра и прогноз на год вперёд — это две непохожие задачи, даже если ряд один и тот же.
Хорошая постановка задачи отвечает минимум на пять вопросов: что прогнозируем (объект), с какой гранулярностью (шаг), на сколько шагов вперёд (горизонт), как часто пересчитываем прогноз (частота обновления) и по какому критерию меряем успех (метрика и допустимая ошибка). Пропуск любого из них почти гарантированно приводит к тому, что модель формально «работает», но не отвечает на вопрос бизнеса. Классический провал: команда месяцами улучшала прогноз на день вперёд, а отделу закупок был нужен прогноз на месяц — и вся точность оказалась нерелевантной.
Полезно с самого начала записать критерий успеха в терминах денег или операций, а не только в терминах метрики. «Снизить 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 — метрики не совпадут.
- Считать, что узкий интервал = хорошая модель; он может быть просто слишком оптимистичным.
- Формулировать успех только в терминах метрики, не переводя его в деньги или операции.
- Игнорировать асимметрию рисков дефицита и излишка при выборе точки внутри интервала.
Итоги
- Задача прогноза = что прогнозируем + горизонт + шаг + критерий успеха.
- Интервал важнее точки: он показывает неопределённость и риск.
- С ростом горизонта неопределённость растёт — интервалы расширяются.
- Оценивать модель нужно на том же горизонте, на котором она работает в проде.
- Критерий успеха формулируется на языке бизнес-решения, метрика — лишь инструмент.