Как прогнозирование может помочь в планировании ресурсов

Фон

Сколько модных словечек в науке о данных вы знаете? Позвольте мне перечислить мои личные фавориты: ИИ, глубокое обучение, машинное обучение, большие языковые модели и нейронные сети. Одна вещь, которую вы редко слышите, — это прогнозирование, которое, возможно, является одной из самых мощных областей, поскольку оно позволяет вам предсказывать будущее.

Прогнозирование = предсказание будущего события или тенденции

В Gousto у нас есть структура племя/отряд, и мне посчастливилось быть частью отряда прогнозирования! И в этом посте я хочу обсудить цель и вопросы, на которые мы отвечаем в прогнозировании.

На самом деле я также являюсь частью отряда оптимизации :)

Почему Густо уникален

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

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

Как вы можете себе представить, это еженедельно меняющееся меню создает проблему для определения необходимого количества складских единиц (SKU), ингредиентов и материалов, которые нам нужны каждую неделю для выполнения каждого заказа при минимизации отходов для уменьшения нашего углеродного следа.

К счастью, прогнозирование приходит и спасает положение! Используя прогнозирование, науку о данных и машинное обучение (извините за модные словечки), мы можем генерировать прогнозы, которые обеспечивают группы планирования операций, предложения и спроса необходимой информацией для точного распределения ресурсов.

Заказ Спрос

Вопрос

Первый вопрос, на который мы отвечаем в команде прогнозистов:

Сколько клиентов закажут коробку?

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

Мы также разбиваем этот общий прогноз объема заказа на:

  • Ежедневный прогноз уровня
  • Сколько коробок с 2, 3, 4 и 5 рецептами
  • Сколько боксов на 2 и 4 человека

Отвечать

Итак, как нам прогнозировать объемы заказов на будущие недели меню? Мы используем традиционную модель прогнозирования временных рядов ARIMA. ARIMA расшифровывается как AutoRegressive Integrated Moving Average и представляет собой комбинацию трех компонентов:

  • Авторегрессия (AR): прогнозирование объемов будущих заказов на основе линейной комбинации объемов предыдущих заказов.
  • Интегрированный (I):Порядокдифференциации временного ряда, чтобы сделать его стационарным. Стационарность является допущением большинства моделей прогнозирования, включая ARIMA.
  • Скользящее среднее (MA).Вместо того, чтобы использовать фактические наблюдаемые значения, этот компонент использует прошлые ошибки прогноза, чтобы помочь в прогнозах.

Затем эти компоненты линейно объединяются для формирования модели ARIMA:

Где:

  • y’: разный временной ряд, полученный путем получения разницы между соседними наблюдениями в исходном временном ряду.
  • ϕ:коэффициенты авторегрессионных составляющих (лагов), которые соответствуют лагам объемов заказов предыдущих недель меню. Они определяют масштаб влияния определенных объемов прошлых заказов на прогноз.
  • p:количество исторических недельных объемов заказов, которые мы используем в модели, то есть количество авторегрессионных компонентов.
  • ε:прогноз условия ошибки,обычно нормально распределенный.
  • θ: коэффициенты запаздывающих ошибок прогноза. Они определяют влияние прошлых ошибок прогноза на текущий прогноз.
  • q:количество компонентов запаздывающих ошибок, которые мы включаем в модель, то есть количество компонентов скользящего среднего.

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

Если вам нужно более подробное объяснение того, как работает ARIMA, вы можете посмотреть мой предыдущий блог об этой модели здесь.

На самом деле мы также включаем в прогноз дополнительные экзогенные переменные, чтобы улучшить прогноз. Эти переменные включают сезонные эффекты, праздничные дни и более широкие события Густо. Принимая во внимание эти факторы, мы дополнительно уточняем нашу модель прогнозирования, чтобы учитывать любые странные события, происходящие в течение года.

И последнее: мы называем эту модель Прогноз объема заказов (OVAF)!

Популярность рецепта

Вопрос

Второй вопрос, на который мы отвечаем:

Какие рецепты выберут клиенты?

Если мы знаем, насколько популярным будет каждый рецепт в течение недели меню, мы можем хорошо знать количество каждого ингредиента, который нам понадобится. Например, если блюдо из тофу является самым популярным выбором среди клиентов, а блюдо из баранины — наименее популярным, это информирует нас о том, что мы должны заказать большее количество тофу по сравнению с бараниной. Таким образом, мы можем удовлетворить требования наших клиентов и выполнить каждый заказ!

Отвечать

Чтобы определить популярность рецепта, мы подходим к нему как к обычной задаче обучение с учителем. Целевой переменной этой модели является историческая популярность рецепта (для данной недели меню), обозначаемая как P_i:

Здесь R_i относится к количеству проданных рецептов i (за неделю меню). Итак, у нас есть дискретное распределение вероятностей, P(i), с n рецептами.

Наши особенности для этой задачи - это все, что может сообщить нам о популярности раньше времени. Это включает в себя:

  • Рейтинг звездочек: пользователи могут оценивать каждый рецепт в приложении
  • Сезонность. Некоторые блюда зимой продаются больше, чем летом, и наоборот
  • Тип диеты:вегетарианская, веганская, пескетарианская и т. д.
  • Доплата: Наш ассортимент «Сохраняй и наслаждайся» стоит на 50 пенсов дешевле за порцию!
  • Встраивание слов описания: Использование подхода, подобного word2vec, для описания рецептов
  • Внедрение ближайших соседей: Использование word2vec для ближайшего рецепта

С этими типами функций и целевых переменных у нас в руках есть табличный набор данных. Как известно каждому специалисту по данным, алгоритм перехода к табличным данным — это деревья с градиентным усилением. Поэтому мы обучаем наши данные на модели LightGBM. Теперь мы можем ввести рецепт вместе с его функциями, и модель предскажет его популярность на этой неделе меню!

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

Чтобы узнать больше о нашей модели популярности рецептов (RPD), которую мы называем Uptaker, вы можете найти наш доклад о ней на прошлогоднем фестивале науки о данных на YouTube здесь.

Симулятор заказа

Вопрос

И, наконец, мы подошли к нашему последнему вопросу:

Что будет в коробке покупателя?

Отвечать

Создавайте синтетические ордера!

Мы можем выбирать рецепты из распределения популярности рецептов, чтобы сделать «симулированные коробки», а количество коробок, которые нам нужно смоделировать, исходит из прогноза объема заказа! Это позволяет нам эффективно «предсказывать» (или прогнозировать), что клиенты будут заказывать в течение данной недели меню, чтобы мы могли эффективно планировать наши ресурсы.

Общий поток и связь этих моделей прогнозирования выглядят следующим образом:

Вам может быть интересно:

Почему нам необходимо прогнозировать коробки клиентов?

Причина в том, что большинство клиентов, как правило, выбирают свои рецепты в последнюю минуту, но нам нужно планировать наши ресурсы заблаговременно. Следовательно, эти «симулированные заказы» дают нам представление о том, как потенциально будут выглядеть заказы на конкретную неделю меню.

Кроме того, нам нужно знать содержимое коробки (рецепты), чтобы отправить их на нужную фабрику, чтобы гарантировать выполнение заказа. На фабрике может размещаться только половина рецептов, перечисленных в коробке, так что не стоит отправлять туда этот заказ! Вот почему нам нужно прогнозировать на уровне блоков, чтобы мы могли сделать правильный выбор (оптимизация)о том, куда пойдет заказ.

Резюме и дальнейшие мысли

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

Рекомендации

  • Если этот пост вдохновил вас на изучение прогнозирования, то эта книга станет прекрасной отправной точкой в ​​вашем путешествии: https://otexts.com/fpp3/

Свяжитесь со мной и нами!

(Все эмодзи разработаны OpenMoji — проектом эмодзи и значков с открытым исходным кодом. Лицензия: CC BY-SA 4.0)