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

Как построить прогноз, которому бизнес действительно верит: путь от Excel до нейросетей за полгода

---

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

Проблема начинается в тот момент, когда "в среднем всё хорошо", а в критический месяц модель промахивается на 20%. Один такой факап обесценивает год аккуратных, точных предсказаний.

Когда прогноз летит в корзину

Представим типичную сцену. Вы приходите на бизнес-ревью с моделью, у которой по стране MAPE 4,5%. Красота: метрика приличная, графики гладкие, сезонность отловлена, тренды понятны. Но в зале сидит человек, которого куда меньше интересует MAPE, чем его личные воспоминания.

Он говорит примерно следующее:

> "Два месяца назад твой алгоритм уверял, что мы спокойно выполняем план. Мы послушали, не стали запускать агрессивное промо, а в итоге фактические продажи оказались на 20% ниже ожидаемого. Инвестор был в бешенстве, мы еле выкрутились.
>
> Сейчас твоя модель снова рисует, что всё идёт по плану. Я в это больше не верю. Допустим, вы опять промахнётесь. Давайте заложим риск недовыполнения и уже сейчас вольём сверху миллиард в маркетинг. А лучше два - чтобы уж точно не облажаться".

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

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

Что на самом деле нужно бизнесу от прогноза

Руководство в глубине души совсем не одержимо точностью в среднем. Метрические успехи в духе "мы снизили MAPE на 1,3 процентных пункта" важны для команды аналитиков, но не для директора, который отвечает за план и прибыль.

Ему нужно другое - предсказуемость.
Он хочет быть уверенным, что:

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

По сути, вопрос, который бизнес задаёт модели, звучит очень просто:
"Мы закроем этот месяц в план или нет? Нужно ли прямо сейчас жечь бюджет, или можно спокойно уехать кататься на лыжах?"

Поэтому мой путь в этой истории был не про борьбу за очередной процент точности на тестовой выборке. Целью было построить такой прогноз, которому поверят. Который перестанет быть объектом торга и превратится в опору для реальных решений.

---

Немного контекста: что мы вообще прогнозируем

Мы - крупный сервис быстрой доставки.

Наша реальность выглядит так:

- физически мы исполняем миллионы заказов в 79 городах,
- инфраструктура построена на сети ЦФЗ - центров формирования заказов (дарксторов): это небольшие склады рядом с клиентами, откуда курьеры забирают заказы; покупатель туда не приходит, это не магазин, а "склад у дома",
- по стране таких ЦФЗ - несколько тысяч,
- топ-менеджмент при этом смотрит не на каждый даркстор и не на отдельный город, а на суммарные показатели по всей стране.

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

Да, у нас есть детальные данные по каждому городу и ЦФЗ, но в совете директоров спрашивают:
"Что по стране? Выполним план или нет?"

---

С чего начинали: зоопарк моделей и недоверие к любым цифрам

К моменту, когда мы начали системно заниматься прогнозированием, ландшафт выглядел так:

- на исторических данных жило несколько "кладбищ" старых моделей, которые когда-то пробовали, а потом забросили;
- часть прогнозов строилась в Excel с ручной сезонностью;
- в продакшене работал Prophet - популярный алгоритм от разработчиков ныне запрещённой Meta, который в мире Data Science часто воспринимается как кнопка "сделать красиво" для временных рядов;
- прогнозы строились на разных уровнях: где-то по каждому ЦФЗ, где-то по городам, где-то агрегировано по стране.

Важно: и бизнес, и аналитики уже успели на собственной шкуре почувствовать, что "красивая модель" не равно "надёжная модель".

Были периоды, когда простая Excel-сезонка по ощущениям попадала в реальность лучше, чем сложный Prophet, натренированный на каждом дарксторе. Отсюда рождались саркастичные комментарии в стиле:
"Зачем нам вся эта машинерия, если тётя Маша в Excel попадает точнее?".

---

Часть 1. Наш ландшафт и "кладбище животных"

Prophet на каждый ЦФЗ: теория против практики

Начальная логика была понятной и даже красивой:

1. берём временной ряд продаж по каждому даркстору,
2. обучаем Prophet с годовой сезонностью,
3. прогнозируем на 45 дней вперёд по каждому объекту,
4. суммируем всё это сверху до уровня страны.

Идея: модель на уровне каждого ЦФЗ лучше чувствует локальные особенности - микросезонность, паттерны спроса, специфические кампании. В теории это должно было обеспечить высокую точность на верхнем уровне.

На практике вышло иначе:

- по многим ЦФЗ исторических данных было мало,
- выбросы (открытие/закрытие, крупные промо, логистические сбои) ломали локальные временные ряды,
- при агрегации наверх ошибки не компенсировались так, как хотелось.

Глобальная картина: выглядит прилично, но в критические месяцы - те самые разрывы до 20% на уровне страны.

Попытка №2: Prophet на уровне страны

Логичный следующий шаг: если локальный шум всё портит, давайте работать с агрегатом.

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

Плюсы:

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

Минусы:

- крупные маркетинговые кампании, которые по факту запускались в отдельных кластерах городов, модель видела размыто,
- локальные всплески и провалы, которые в сумме могли сильно сдвигать итог по стране, не ловились заранее,
- в отдельных высокозначимых периодах прогноз снова расходился с реальностью слишком сильно.

На этом этапе мы поняли, что "ещё один запуск Prophet с другими параметрами" магическим образом проблему доверия не решит. Нужна была честная переоценка всего подхода.

---

Часть 2. Взрослый взгляд на качество: как мы начали мерить по-честному

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

Но у MAPE есть фундаментальная проблема:
он не различает "много мелких неточностей" и "редкий, но смертельно опасный провал".

Мы стали смотреть на качество глубже:

- измеряли не только среднюю ошибку, но и распределение ошибок по месяцам,
- анализировали худшие периоды, а не только общий MAPE,
- отдельно разбирали именно те самые сценарии, когда модель переобещала результат, а факт оказался сильно ниже прогноза.

Важный инсайт: для бизнеса критичнее всего асимметрия риска.
Ошибиться "в минус" (обещали меньше, а сделали больше) - обычно терпимо.
Ошибиться "в плюс" (пообещали выполнение плана, а недотянули на 15-20%) - это почти всегда больно.

Поэтому мы начали смотреть не только на среднюю точность, но и на:

- долю месяцев, где недовыполнение плана произошло при "оптимистичном" прогнозе,
- насколько часто модель системно завышает ожидания,
- как ведёт себя ошибка в пиках сезона и в провальных периодах.

---

Часть 3. Эксперименты с классикой: можно ли выжать больше из бейзлайнов

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

- ARIMA и её вариации,
- Exponential Smoothing,
- STL-декомпозиции,
- усреднённые ансамбли простых моделей.

Банальный, но полезный урок: классика временами даёт удивительно конкурентные результаты.

Были периоды, когда аккуратно настроенная Excel-сезонка или простое экспоненциальное сглаживание по сути обгоняли наш прежний Prophet по стабильности.

Однако, когда мы попытались выжать максимум из классики и серьёзно сравнить:

- как модели ведут себя на длинном горизонте (45 дней, а не завтра-послезавтра),
- как они реагируют на аномальные периоды,
- и насколько предсказуемы их провалы,

выяснилось: да, можно вытащить ещё пару-тройку процентов по MAPE,
но ключевая проблема - риск крупных промахов - никуда не девается.

Классические модели редко дают катастрофу на пустом месте, но:

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

В какой-то момент стало очевидно: если хотим реально управлять рисками, нужно спускаться глубже - до уровня городов и дарксторов - и поднимать весь этот объём в ML.

---

Часть 4. Переход в ML: зачем нам города, если прогноз по стране

Логичный вопрос: "Если директору нужен только прогноз по стране, зачем нам вообще возиться с городами и ЦФЗ?"

Ответ простой:
сложная структура спроса лучше всего объяснима снизу вверх.

- Каждый город живёт в своём ритме: погода, праздники, локальные события, уровень конкуренции.
- Маркетинг часто запускает кампании в отдельных регионах.
- Логистические ограничения, открытие и закрытие дарксторов, локальные сбои - всё это сначала видно "на земле", а уже потом в агрегате по стране.

Поэтому мы решили построить модель, которая:

1. учится на уровне городов и ЦФЗ,
2. учитывает календарные факторы, промо, погоду, особенности территории,
3. выдаёт прогнозы снизу, которые затем агрегируются в страну.

Так у модели появляется шанс:

- не просто экстраполировать общий тренд,
- а понимать, *почему* в какой-то момент спрос в конкретном регионе вырастет или проседает.

---

Часть 5. Стоп, а где же CatBoost?

Когда речь заходит о ML в табличных данных, первый рефлекс у многих специалистов - взять градиентный бустинг по деревьям. CatBoost, XGBoost, LightGBM - классический набор.

Мы честно попробовали градиентный бустинг:

- собрали фичи по городам и ЦФЗ: календарные признаки, лаги, средние скользящие, промо, погодные индикаторы,
- обучили модели предсказывать спрос на горизонте,
- сравнили с продакшн-бейслайнами.

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

- модель временами переучивалась на аномальные периоды,
- на дальнем горизонте (под конец 45-дневного окна) качество ощутимо падало,
- не всегда удавалось корректно передать сложную сезонность и долгие циклы.

Градиентный бустинг стал важным этапом, но не финальной точкой. Нам требовалось что-то, что лучше "чувствует время" как последовательность.

---

Часть 6. Выход в Deep Learning: нейросеть входит в игру

Следующий шаг - архитектуры, специально заточенные под временные ряды:

- рекуррентные сети,
- 1D-CNN для таймсерий,
- специализированные архитектуры вроде TSMixer и других современных подходов к sequence modeling.

Мы остановились на подходе, который:

- напрямую работает с временным рядом как последовательностью,
- умеет "видеть" достаточно длинный контекст,
- масштабируется на большое количество объектов (города, ЦФЗ).

Нейросеть встречает сезонность

Одна из главных проблем временных рядов в бизнесе - сезонность, причём не одна:

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

Мы добавили в модель:

- календарные фичи (день недели, месяц, праздники),
- циклические кодировки (чтобы "1 января" и "31 декабря" были близкими точками),
- дополнительные внешние факторы, которые помогали поймать крупные паттерны.

Нейросеть стала существенно лучше чувствовать структуру спроса, чем классика и Prophet.

Нейросеть укачало: где стало хуже

Однако, плата за это - повышенная чувствительность:

- к шуму в данных,
- к аномальным периодам,
- к перекосу в обучающей выборке.

Где-то мы выиграли по точности, а где-то получили нестабильное поведение в редких сценариях. А редкие сценарии - это ровно то, из-за чего бизнес перестаёт доверять модели.

---

Часть 7. Как модель "видит" города и что для нас важно

Мы детально анализировали:

1. Как модель видит разные города.
- В каких городах она системно завышает или занижает спрос.
- Как изменяется точность в зависимости от зрелости рынка, размера города, плотности заказов.

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

Этот анализ позволил:

- скорректировать фичи,
- выкинуть шумные и вводящие в заблуждение признаки,
- усилить сигналы, которые действительно помогали предсказывать сложные периоды.

---

Часть 8. Ансамбли: почему единственной модели мало

В какой-то момент стало ясно: одна модель - как бы хороша она ни была - не закроет сразу все требования бизнеса:

- где-то важнее минимизировать среднюю ошибку,
- где-то - гарантировать отсутствие критических промахов,
- где-то - иметь адекватное поведение в аномалиях.

Решением стал ансамбль:

- часть прогноза давали более консервативные модели, которые редко "выстреливают" в потолок,
- часть - более "умные" и сложные архитектуры, которые лучше ловят тренды и сезонность,
- итоговый прогноз собирался как комбинация, настроенная под минимизацию опасных ошибок, а не просто MAPE.

При калибровке ансамбля мы сознательно боролись не только за variance (разброс), но и за bias - систематическое смещение. Нам важно было, чтобы модель не обещала слишком много там, где риски высоки.

---

Часть 9. Финал: что в итоге получилось

После серии итераций - от Excel и Prophet до ML и Deep Learning - мы пришли к системе, которая:

- даёт стабильно низкую среднюю ошибку на горизонте 45 дней по стране,
- минимизирует вероятность крупных промахов в ключевые месяцы,
- позволяет объяснимо разбить прогноз по городам и ЦФЗ, когда это нужно операционному уровню,
- даёт бизнесу не только точку прогноза, но и доверительные интервалы.

А что с квантилями и доверительными интервалами

Отдельная важная штука - переход к квантильному прогнозированию:

- вместо одной точки "будет 100 единиц" модель выдаёт диапазон:
например, нижний квантиль, медиана и верхний квантиль;
- это даёт "бесплатные" доверительные интервалы, с которыми можно жить:
- консервативный сценарий - минимум,
- целевой - медиана,
- оптимистичный - максимум.

Бизнесу стало проще:

- планировать бюджеты, опираясь не только на одну цифру,
- оценивать риски: "Что будет, если мир пойдёт по худшему сценарию?"
- принимать взвешенные решения о том, когда включать тяжёлую артиллерию промо.

---

Часть 10. Главное: цель была не про MAPE

Если коротко подвести итог всей истории:

- Excel-сезонка в правильных руках может обойти модный Prophet, если мерить по-настоящему важные для бизнеса вещи.
- Prophet и классика - отличные бейзлайны, но они не спасают от риска катастрофических ошибок на сложном рынке.
- ML и нейросети дают мощный прирост, когда у вас много объектов (города, ЦФЗ) и много данных, но требуют осторожного обращения и осмысленного контроля риска.
- Ансамбли позволяют соединить сильные стороны разных подходов - и получить не "идеальную модель", а надёжную систему, которая ведёт себя устойчиво в реальном бизнесе.

И самое важное:
мы изначально строили не лучшую по метрикам модель, а прогноз, которому верит бизнес.

Пока нет доверия:

- любые цифры - лишь повод для споров и "заложим ещё миллиард сверху",
- алгоритм, каким бы сложным он ни был, превращается в декорацию,
- управление идёт по эмоциям и панике.

Когда доверие появляется:

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

---

Что можно сделать уже сейчас, если вы в похожей ситуации

Несколько практических шагов, которые помогут приблизиться к "прогнозу, которому верят":

1. Перестаньте смотреть только на среднюю ошибку.
Добавьте анализ худших месяцев, пиковой нагрузки и асимметрии ошибок.

2. Чётко сформулируйте бизнес-вопрос.
Часто это не "насколько точно мы предскажем каждую точку", а "как снизить риск недовыполнения плана".

3. Сделайте прозрачной структуру ошибок.
Показать директору, где именно и почему модель ошибалась, - зачастую уже половина пути к доверию.

4. Сведите разные уровни.
Даже если прогноз нужен только по стране, полезно понимать поведение спроса по регионам и объектам.

5. Используйте простые модели как baseline.
Если ваша супернейросеть не обгоняет честно настроенный классический метод - проблема не в бизнесе, а в модели.

6. Внедрите квантильный прогноз.
Доверительные интервалы - понятный для менеджмента язык риска.

7. Регулярно сверяйте ожидания с реальностью.
Делайте разбор полётов по каждому месяцу: что пообещали, что вышло, почему, какие уроки извлекли.

---

Что дальше

Дальнейшее развитие системы прогнозирования для нас теперь - это не только улучшение архитектур, но и:

- ещё более тесная связка с маркетингом и операциями,
- учёт всё большего набора внешних факторов (экономика, конкуренция, локальные события),
- развитие explainability: чтобы можно было внятно ответить на вопрос "почему вы так думаете?" для любой точки прогноза,
- и, конечно, непрерывная калибровка доверительных интервалов - чтобы бизнес не просто смотрел на цифры, но и опирался на них при принятии решений.

Путь от Excel до нейросети занял у нас около полугода.
Но главное изменение за это время произошло не в коде, а в головах:
прогноз перестал быть абстрактной "моделью для отчёта" и стал тем, чем и должен быть - основой для управленческих решений, которым можно доверять.

Прокрутить вверх