Задача
Федеральная торговая сеть: прогноз спроса по сотням тысяч пар SKU × магазин ежедневно. Прежняя система считала медленно и грубо, не успевала за промо и сезоном — результат предсказуемый: то пусто на полке (упущенные продажи), то затоваривание и списания.
Нужен прогноз, который ежедневно покрывает всю матрицу товаров и точек, учитывает иерархию (товар, категория, регион) и реагирует на промо, а не сглаживает их в кашу.
Подход
Построили иерархический форкастинг с реконсиляцией уровней: глобальные градиентбустинг-модели поверх партиций вместо тысяч хрупких одиночных рядов, плюс признаки промо, календаря и погоды. Обучение и инференс распределили по партициям, чтобы вся матрица считалась за минуты, а не часы.
Обернули это в MLOps-конвейер: регулярный ретрейн, бэктест на отложенных периодах, мониторинг качества по сегментам — нельзя, чтобы средний MAPE был хорош, а по скоропорту провал. Деградация на сегменте поднимает алерт до того, как превратится в списания.
Стек
Spark · gradient boosting · hierarchical reconciliation · Airflow · feature store + backtest
Результат
- 420 тыс. SKU-точек в ежедневном прогнозе.
- −27% потерь на дефиците и излишках суммарно.
- −18% MAPE против прежней системы.
- Полный прогон матрицы — минуты вместо часов.