Закупать 50 тысяч товаров в день и не разориться

Как Ozon использует машинное обучение для управления закупками.

В интернет-магазине Ozon есть почти всё: колготки, детское питание, ноутбуки за 100 тысяч рублей и та штука для заварки чая, название которой никто не помнит. Это хранится, сортируется и формируется в заказы на fulfillment-фабриках компании.

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

Чтобы выяснить, сколько товаров закупать, Ozon использует машинное обучение. Как компания научила машину понимать потребности людей, рассказывает Александр Алексейцев, Lead data science.

Руководитель проекта по автоматизации закупок и прогнозированию продаж.

Александр Алексейцев

Отдел закупок

У нас 1,5 млн активных товарных наименований, и только за последний год эта цифра выросла минимум на 20%. В следующем году полноценно запустится маркетплейс, и ассортимент вырастет до десятков миллионов товаров. Растет и число поставщиков: их уже больше 2,5 тысяч — будет в разы больше.

При таком ассортименте, числе поставщиков и закупщиков ошибки неизбежны: кто-то привез больше, кто-то меньше, кто-то вообще не то. Ошибка с превышением закупки на 1% будет стоить компании 10 млн рублей. Да и сотрудники отдела закупок могут заниматься более интересной работой, чем бесконечное заполнение и отправка таблиц.

Отличие планирования закупок онлайн и оффлайн-магазинов — в ассортименте и уровне точности. Если в супермаркете у дома три вида молока и покупают по 70 пачек каждого в день — заказать на 30 упаковок больше не страшно. Но три вида молока в онлайн-магазине — это несерьезно, там его 140 наименовании (люди любят выбирать), и ежедневно заказывают по 2-3 упаковки каждого. Поэтому для нас важно, чтобы прогноз предсказывал спрос с точностью до единицы конкретного товара.

Fulfillment-фабрика Ozon
Fulfillment-фабрика Ozon

За годы существования Ozon мы собрали достаточно данных о том, что, когда и в каких количествах люди покупают. Раз есть данные, можно использовать machine learning. Но остается вопрос: какие факторы влияют на продажи, если учесть, что товаров у нас — 23 категории, от книжек до бананов и от духов до детских развивающих игрушек?

Выбор факторов

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

Так, коллега, которая занимается закупками игрушек, спросила: «А ваш алгоритм свинок спрогнозирует, или лучше их руками закупать?». Оказалось, что следующий год — год свиньи, и эксперты ожидают рост продаж игрушечных свинок. Чтобы алгоритм узнал о том, что раз в 12 лет случаются всплески спроса на товары со словом «свинья» в описании, нужно минимум 24 года данных в истории.

В итоге у нас получилось 170 признаков. Наиболее значимыми оказались

  • Продажи товара за прошлые недели и его доступность на нашей площадке.
  • «Угловой коэффициент»: если построить график продаж за каждый день последней недели и провести прямую, по углу ее «наклона», можно определить тренд недели. Например, в понедельник конкретную модель наушников купили семь раз, а в воскресенье — два: график идёт вниз, и алгоритм понимает, что спрос постепенно снижается.
  • Отношение прошлой цены к будущей — товары со скидками покупают активнее.
  • Количество прямых конкурентов на сайте Ozon. Если эта ручка единственная в своей категории, продажи будут довольно стационарными.
  • Габариты товара: почему-то у длинных и узких предметов — зонтов или удочек, например — продажи достаточно стабильные. Мы пока не знаем, как это объяснить, коллеги из закупок — тоже.
  • Номер дня в году: знание о том, что скоро Новый год, первые морозы или начало учебного года, помогает предсказывать сезонные повышения спроса.

Процесс обучения

У нас есть данные о том, какие товары 1,2 млн. пользователей каждый день рассматривают на сайте, добавляют в корзину и заказывают.

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

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

Мы разбили все товары на 13 типов — по аналогии с каталогом на сайте, и для каждого типа обучили 12 моделей для прогнозов разной глубины — от 5 до 16 дней.

Обучение заняло пять суток — все это время команда data science работала 24/7. Мы так увлеклись процессом, что вообще не думали о сне. В результате получили прогноз, способный предсказывать спрос на каждый товар с точностью до единицы.

Бизнес

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

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

Кстати, если в модели «заморозить» 169 признаков из 170, можно наблюдать, как каждый отдельный признак влияет на прогноз. Например, какая скидка нужна, чтобы человек купил санки в июле.

Как видно на графике, сани все же выгоднее продавать зимой.
Как видно на графике, сани все же выгоднее продавать зимой.

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

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

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

К тому же, есть мода — и она максимально иррациональна. Как можно было предсказать, что спиннер будет так продаваться? Как прогнозировать продажи новой книги Дэна Брауна, если один его роман раскупают, а другой нет? Мы над этим работаем — это вопрос времени.

Что поделать

  1. Если сейчас закупки вашего бизнеса укладываются в Excel-табличку, а каждого из поставщиков вы знаете лично, можно обойтись своими руками. Но раз уж вы планируете расти, начинайте собирать данные. Иначе, когда они вам действительно понадобятся, будет поздно. И фиксируйте методику сбора — команда data science скажет вам спасибо. Если что-то упало, тоже запишите.
  2. Чтобы научить машину, сперва сходите к экспертам. Они про свинок знают, а алгоритм — нет.
  3. Алгоритм будет решать ту задачу, которую вы ему поставите. Прежде чем приступать к разработке, выберите метрику эффективности, исходя из задачи бизнеса. Вам нужна точность до единицы? Насколько длительным должен быть прогноз? Лучше перезакупить или недозакупить?
  4. Не забывайте про погрешности реального мира — машину нужно научить их учитывать, иначе ваш прогноз будет работать только для кубических поставщиков в вакууме. Вряд ли вы с такими работаете.
2323
75 комментариев

"Как видно на графике, сани все же выгоднее продавать зимой."

12

Угу, единственно, что график ничего о выгоде сказать не может)))
Если судить по графику "в лоб", то выгоднее продавать сани летом - при скидке 30% летом рост продаж 160%, а зимой только 27%. Вот если добавить "базу" в штуках - тогда да. Ну или маржу ту же посмотреть.

Вроде, статья дельная - но не без ляпов. В любом случае - спасибо)

1

Как видно на графике, сани все же выгоднее продавать зимой.Новый год, первые морозы или начало учебного года, помогает предсказывать сезонные повышения спросаНичоси! Да вы гиганты мысли! Долго на это нейронку тренировали?

Как можно было предсказать, что спиннер будет так продаваться?Никак. Если кто-то это сможет сделать, то такому алгоритму можно найти более выгодное применение.

Как прогнозировать продажи новой книги Дэна Брауна, если один его роман раскупают, а другой нет? Мы над этим работаем — это вопрос времени.Для втирания инвесторам, прокатит.

4

Потом-то, всегда можно сказать: "Ну не шмогла я, не шмогла!" )

1

Лаконичный, очень доступный материал про маш.обучение в закупках!
Класс, спасибо!

7

Интересно, как это работает с новыми моделями гаджетов: ведь данных о продажах нового айфона нет до тех пор, пока он не выйдет. Насколько релевантно использовать данные о покупках предыдущих моделей в таком случае? Учитывает ли алгоритм какое-то общественное мнение, понимает ли, что, допустим, новый iPad будет продаваться хуже, чем предыдущие?

5
Автор

Прогнозирование продаж новинок вообще очень сложная задача, которую наша команда data science пока решает. Но уже сейчас прогноз учитывает продажи товаров, похожих по неким item-based фичам (в случае с айфоном, это, очевидно, должен быть предыдущий айфон). И продажи прошлой модели в первые дни — один из предикторов для свежего айфона.

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

5