Строим прогноз для службы доставки на небольших данных

Для чего нужен прогноз погоды? Чтобы знать, как правильно одеться, выходя из дома. Прогнозирование в бизнесе нужно ровно для этого же – чтобы у компании было четкое понимание, что делать. Прогнозы являются основой для построения стратегии и планирования, они помогают закупать сырье для производства в нужном количестве, выпускать продукцию согласно реальному спросу, формировать ассортиментную матрицу и выстраивать стратегию маркетинга на основании будущего поведения рынка.

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

  • Формирование плана продаж. Прогноз всегда должен предшествовать постановке бизнес-целей. Если цель выше прогноза, то нужно понимать, за счет чего она будет достигнута: поиск новых каналов сбыта, увеличения бюджета на продвижение.
  • Управление складской организацией. Не должно быть никакого дефицита или переизбытка материалов/готовой продукции на складе. Предсказываем объем продаж и производим товаров столько, сколько необходимо для удовлетворения спроса.
  • Формирование ассортиментной матрицы. Технологии машинного обучения помогут не только увидеть общий спрос на товары, но и предсказать тренды в продажах определенных позиций.
  • Оптимизация ФОТ и работы персонала. Не нужно выводить на производство две смены, если с изготовлением товара по плану продаж справится и одна. Также прогноз подскажет, когда нанимать дополнительный персонал, если ваши продажи привязаны к сезонам.
  • Управление маркетинговой стратегией и оптимизация бюджета. Ориентация на прогноз позволит включать рекламные кампании со скидками тогда, когда этого особенно требует рынок, не растрачивая промо-бюджет.
  • ML делает бизнес гибким. Прогноз даст шанс мгновенно реагировать на спад показателей, выявлять причины и мобильно принимать управленческие решения.

Не так много компаний используют прогнозы, потому что для них нужны не только исторические данные о клиентах, товарах, покупках, сезонности спроса. Для качественных предсказаний с высокой точностью требуются еще и внешние данные вплоть до погодных условий, новостного фона и календаря городских событий – такие данные собирать сложнее. В большинстве случаев компании прогнозируют по средним значениям предыдущих периодов, что на большом объеме данных неизбежно приводит к высокой погрешности и влечет управленческие ошибки, потерю бюджета из-за неправильных закупок и перерасхода ресурсов сотрудников. Качественный прогноз помогает избегать этого и является точкой экономии расходов, а не наоборот.

Как на самом деле делают прогнозы: цена ошибки

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

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

Керимов Элчин, Руководитель DS-разработки проекта

О Broniboy

Сегодня расскажем о кейсе по построению модели прогнозирования спроса для компании Broniboy.

Компания стартовала в 2017 году как сервис предзаказа блюд в ресторанах, нацеленный на всех, кто ценит свое время. И прошла путь к сервису курьерской доставки, которая на региональном уровне уверенно конкурирует с такими гигантами, как Яндекс.Еда и Delivery Club. Последнее обновление – курьерская доставка из пункта А в пункт Б небольших посылок и доставка продуктов из магазинов – позволило обеспечить курьеров нагрузкой в те часы, когда пользователем не нужна еда из любимых ресторанов.

Строим прогноз для службы доставки на небольших данных

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

Зачем нужен прогноз?

Для понимания целей проекта всегда лучше спросить заказчика. Разные компании строят прогнозы для решения разных задач.

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

Иван Труфанов, Совладелец платформы Broniboy

Как построить прогноз при недостатке данных?

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

Об этом рассказал руководитель DS-разработки проекта: «При построении прогнозов важно обладать нужным количеством данных. Если у нас мало данных, то наши модели начинают переобучаться или находить закономерности, которых на самом деле нет. В итоге мы не можем построить качественный прогноз – в лучшем случае, это будет похоже на подбрасывание монетки. В ситуации с предсказанием количества заказов, поступивших на платформу Broniboy, обязательно нужна история заказов хотя бы за один год, так как в поведении пользователей присутствует сезонность – статистика по сезонам может сильно отличаться друг от друга. Летом люди больше времени проводят вне дома и сами посещают заведения, а в холодное время года – лишний раз не выходят и предпочитают заказывать еду из любимых кафе и ресторанов на дом».

Строим прогноз для службы доставки на небольших данных

Объем данных и фичи

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

В качестве факторов, влияющих на целевую переменную, выделено более 80 предикторов. К ним относятся:

  • лаговые фичи – кол-во заказов 2 недели назад, месяц назад, год назад;
  • погода в тот день и час, на который мы предсказываем – температура воздуха, признаки дождя/снега, сила и направление ветра;
  • признаки, описывающие день – день недели, час, день месяца, месяц;
  • признак коронавируса – так как количество заказов во время пандемии значительно выросло;
  • количество посещений приложения;
  • количество новых, текущих и лояльных клиентов;
  • количество действующих скидок на данный момент;
  • информация о праздниках.

С какими проблемами столкнулись?

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

Использовались различные модели, начиная от линейной регрессии и заканчивая моделями на основе градиентного бустинга и нейронных сетей. Лучше всего себя показал градиентный бустинг от Яндекса – catboost. Разбираясь в проблеме плохого качества предсказания, мы выяснили следующее: dataset состоял из всех ресторанов-партнеров, и количество заказов в них сильно разнилось. У некоторых был «1 заказ в случайный четверг», а некоторые, например, McDonalds передавали на доставку постоянный поток заказов. Анализируя данные, мы также заметили сильный дисбаланс в целевой переменной – количестве заказов в определенный день-час для определенного ресторана. Оказалось, что целевая переменная принимала значение 0 в 10 раз больше, чем все остальные значения.

В процессе работы над проектом пробовали разные модели для того, чтобы повысить точность по каждому отдельно взятому ресторану. Анализируя все рестораны выделили топ-20 – со стабильным потоком заказов, все остальные – с нерегулярными и ситуативными заказами.

Какие решения пробовали?

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

  • Использование больших весов для данных, которых мало в dataset (некая вариация class_weight для задачи регрессии).
  • Выбор k-лучших предикторов через кросс-валидацию. А остальные предикторы были удалены из обучения – таким образом мы избавились от шума.
  • Очистка данных от выбросов.
  • Попытки обучения по одной модели на каждый из ресторанов – в итоге получили почти нулевой R2.
  • Попытка убрать из модели рестораны, на которых наибольшая ошибка в «отдельный кластер», чтобы было две разные модели для разных ресторанов. Но и при таком решении обучение на одном из кластеров даёт почти нулевой R2.
  • Стекинг. Предсказания моделей lasso, catboostregressor, lgbmregressor были скормлены randomforestregressor – в итоге R2 уменьшился по сравнению результатом любой из моделей по отдельности.
  • Нейронные сети. Полносвязная нейронная сеть с контролем переобучения и подбором гиперпараметров даёт тоже печальный R2= 0,1. Попытка обучить lstm, при этом передавая дополнительные параметры: время, час, ресторан, чтобы он смог уловить зависимости, — дала примерно такой же результат.
  • Попытка классификации (был заказ/не был). Но она тоже на различных моделях (в т.ч. нейросетями) не дала выйти дальше 0,5 auc precison_recall_curve. Эта метрика выбрана потому, что dataset очень несбалансированный.

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

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

Извечный вопрос – что делать?

Определившись с подходом, мы просуммировали данные по всем ресторанам и сделали предсказание на определённые день-час. Попытки предсказания на отдельных кластерах, в которых были бы топ-30 и не топ-30 ресторанов (тоже сагрегированных на день-час) не дало прироста точности, даже снизило показатель. В итоге агрегации по данных по всем ресторанам мы смогли получить довольно приличное значение R2 = 0,85. В прогнозе используется комбинация предсказания моделей lasso, catboostregressor, ridge с весами 0,6, 0,2, 0,2. Данная комбинация позволила получить лучшие результаты в пилотном проекте.

Строим прогноз для службы доставки на небольших данных

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

Труфанов Иван, Совладелец платформы Broniboy

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

Подводя итог кейсу, обратим внимание на несколько моментов:

  • Прогноз спроса – основной инструмент для принятия управленческих решений и сокращения издержек в компании.
  • Использовать методы машинного обучения в том числе для прогнозирования спроса можно, даже если вы не обладаете bigdata.
  • В процессе прогнозирования неизбежно возникают сложности, перепробовав все доступные способы решения задачи, переходите к трансформации цели, результат достижения которой в любом случае принесет бизнесу пользу.
  • Работайте с новыми технологиями в рамках пилотных проектов – небольшой бюджет, заложенный на подобные проекты, позволит и получить результат, и проверить, какие технологии вы уже можете внедрить в работу.

Больше информации о решениях ищите:

3737 показов
964964 открытия
Начать дискуссию