Ответ вслух Senior ML в проде обновлено

ML system design: прогноз спроса

Вопрос

Спроектируйте систему прогноза спроса для сети из 500 магазинов и 30 000 товаров, чтобы планировать закупки на 14 дней вперёд.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Уточняю: прогноз нужен на уровне магазин × товар × день на 14 дней вперёд, им пользуется система автозаказа, бизнес-цель это меньше списаний и пустых полок. Это 15 млн рядов, поэтому отдельные ARIMA на каждый ряд не подходят.

Что должно прозвучать в ответе

  • Требования: горизонт, гранулярность (магазин × товар × день), использование прогноза в закупках, бизнес-метрика (списания, out-of-stock)

  • Данные: продажи, остатки (цензурирование спроса при нулевом остатке), цены, промо, праздники, погода

  • Модель: глобальный бустинг по всем рядам с лагами и календарём, бейзлайны сезонной наивной модели

  • Метрики: WAPE, смещение, квантильная потеря для страхового запаса

  • Валидация по времени с горизонтом 1-14 дней

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

Что могут спросить следом

  • Как учесть, что при нулевом остатке продаж нет, хотя спрос был?
  • Как прогнозировать новые товары без истории?

Разбор

Уточняю: прогноз нужен на уровне магазин × товар × день на 14 дней вперёд, им пользуется система автозаказа, бизнес-цель это меньше списаний и пустых полок. Это 15 млн рядов, поэтому отдельные ARIMA на каждый ряд не подходят. Данные: продажи, остатки, цены и промо-календарь, праздники, погода, открытия магазинов. Важная ловушка: при нулевом остатке продажи ноль, но спрос был, такие дни надо помечать или восстанавливать, иначе модель занизит прогноз. Модель: глобальный градиентный бустинг по всем рядам с лагами и скользящими средними (только из прошлого относительно горизонта), календарём, ценой и промо, признаками товара и магазина. Бейзлайн: сезонная наивная модель (продажи неделю назад). Метрики: WAPE и смещение, а для заказа квантильный прогноз, например 0.8-квантиль, чтобы закладывать страховой запас. Валидация по времени на нескольких срезах, отдельно по горизонтам. Новые товары получают прогноз по аналогам из категории. В проде ночной батч, мониторинг ошибки по категориям и магазинам, ручные корректировки для промо.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.