Как построить прогноз, которому бизнес действительно верит: путь от 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 до нейросети занял у нас около полугода.
Но главное изменение за это время произошло не в коде, а в головах:
прогноз перестал быть абстрактной "моделью для отчёта" и стал тем, чем и должен быть - основой для управленческих решений, которым можно доверять.



