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

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

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

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

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

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

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

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

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

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

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

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. Не забывайте про погрешности реального мира — машину нужно научить их учитывать, иначе ваш прогноз будет работать только для кубических поставщиков в вакууме. Вряд ли вы с такими работаете.
0
75 комментариев
Написать комментарий...
Кирилл Пашкин

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

Ответить
Развернуть ветку
Andrew Denisov

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

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

Ответить
Развернуть ветку
Alexey Pomogaev
Как видно на графике, сани все же выгоднее продавать зимой.
Новый год, первые морозы или начало учебного года, помогает предсказывать сезонные повышения спроса

Ничоси! Да вы гиганты мысли! Долго на это нейронку тренировали?

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

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

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

Для втирания инвесторам, прокатит.

Ответить
Развернуть ветку
Alexey Pomogaev

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

Ответить
Развернуть ветку
1 комментарий
Dmitry Ilyin

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

Ответить
Развернуть ветку
Артемий Воробьёв

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

Ответить
Развернуть ветку
Ozon
Автор

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

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

Ответить
Развернуть ветку
1 комментарий
Крымский Чайничек

возможно считают ожидаемое по рекламе, тестам и похожим странам.

Ответить
Развернуть ветку
Oksana Sivchenko

Классная статья, спасибо! Я может пропустила в тексте, а сколько по времени занял сбор данных и настройка для обучения? А вообще, я могу представить насколько много работы было сделано, мы в компании начали уходить от Excel и сейчас практически вручную собираем данные за последние 3 года

Ответить
Развернуть ветку
Viktor Nevzorov

Тоже думал грааль вычитать, а получилось так:

Странно такое читать: "Например, в понедельник конкретную модель наушников купили семь раз, а в воскресенье — два: график идёт вниз, и алгоритм понимает, что спрос постепенно снижается."
Похоже, текст не lead data science писал, иначе бы он сказал, что спрос в понедельник и в воскресенье отличается кардинально и алгоритм учитывает это.

Ответить
Развернуть ветку
10 комментариев
Роман Стрельников

Неудивительно, что отдав в руки машин склады и управление - логистика OZON.ru даёт уже 2й крупный сбой в работе. За последние 48 часов, мои заказы меняли позиции по дате/времени доставки дважды без моего согласия. А call-центр перегружен и дозвониться крайне сложно (~более 10мин на линии и/или сброс линии). Красиво!

Ответить
Развернуть ветку
Viktor Nevzorov

Пытались работать с Окурьером. Убежали от неразберихи подальше.

Ответить
Развернуть ветку
2 комментария
Денис Демидов

Анатоликс же полностью движок переписывает.
Если бы все делали люди, то ошибок было бы еще больше.

Ответить
Развернуть ветку
Саша Миронюк

в виду Нового года на это можно закрыть глаза, говорю как владелец небольшого интернет-магазина, который ахуевает

Ответить
Развернуть ветку
Pavel Golubev

Заголовок желтый как моча. "Закупать 50 тысяч товаров в день и не разориться" - реально? Про фирму, которая за 19 лет существования ни одного месяца в плюс не отработала?

Правильный заг "Сколько и кому нужно откатывать с инвестиций чтобы не сесть".

Ответить
Развернуть ветку
Full Name

Уоррен, вы?

Ответить
Развернуть ветку
Clear Pass

Интересная тема. Отдел закупа сократили? Скажите, где про модель можно прочитать и те "170 признаков" на которые опирается ML Озона? Про алгоритм рассказали как если он не сложнее excel таблички. Как считали по средним значениям с сезонными коэффициэнтами и данными поставщиков, так и осталось.
Ждем когда машина будет делать прогноз опираясь на тренды, анализировать меняющиеся предпочтения покупателей, следить за обновлениями, а не рисовать цифру на основе продаж позапрошлого года.

Ответить
Развернуть ветку
Ozon
Автор

Про модель можно на Хабре: https://habr.com/company/ozontech/blog/431950/
Там как раз про все сложности алгоритма и реальности, правда, 170 признаков перечислять не стали, но рассказали о самых значимых и дополнительных.
Машина уже знает про тренды и обновления, но вот без данных о продажах за пару лет алгоритмы машинного обучения не обучить.

Ответить
Развернуть ветку
Денис Демидов

Даже если рисовать картину на основе позапрошлого года, это будет верно по отношению к 90% товаров.

Ответить
Развернуть ветку
Princess Milana

Недавно заказала пачку товаров на озоне. И могу авторитетно заявить, что он какой-то поехавший. Сам разделил заказ на два, зачем? Типа что-то может доставить раньше, но мне не нужно, я бы подождала.

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

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

Что за ебланы это писали. Они боятся, что курьер большую коробку не дотащит или что?

Ответить
Развернуть ветку
Ozon
Автор

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

Ответить
Развернуть ветку
Максим Гайль

Вот только с доставкой беда. Из 10 доставок вовремя привозят одну.

Ответить
Развернуть ветку
Николай Петров

Странно слышать от Data Scientist такие фразы как "в понедельник конкретную модель наушников купили семь раз, а в воскресенье — два: график идёт вниз, и алгоритм понимает, что спрос постепенно снижается", или 5 дней работали в режиме 24/7.

Ответить
Развернуть ветку
Oleg Yavelov

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

Ответить
Развернуть ветку
Pierre Riss

Как решается вопрос с промо?

Ответить
Развернуть ветку
Goddard Targarten

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

Ответить
Развернуть ветку
Full Name

Можно смело заменить "озон" на любой крупный бизнес - от Пятерочки до Амазона и смысл предложения не изменится. Что действительно важно - на маркетплейсе ща можно зарегаться как продавец (и это можно сделать без инвестиций вообще)

Ответить
Развернуть ветку
22 комментария
Miti Bond

Матрица какая-то

Ответить
Развернуть ветку
Vadim Korolchuk

Первая

Ответить
Развернуть ветку
Artur Chernyshev

А кто-то может посоветовать сервис для анализа данных и выдачи товаров на основе этих рекомендаций для битрикса?)))

Ответить
Развернуть ветку
Andr Ew

хотите стабильности - продавайте длинные и узкие предметы.

Ответить
Развернуть ветку
adindvatrich

Резиновые члены всегда в ходу

Ответить
Развернуть ветку
Андрей Волхонский

Озон отличная площадка, за нее не стыдно.

Ответить
Развернуть ветку
Заряна Солонинова

зачем свиней прогнозировать, если есть статистика по символу года? неудачный пример

Ответить
Развернуть ветку
Птиц

Интересно, как "волатильность" продаж зонтов и удочек (из статьи на хабре) превратилась в "стабильность".

Ответить
Развернуть ветку
Olga Tsapko

🔮

Ответить
Развернуть ветку
Китай Гуд Бай

Интересная статья! Спасибо!

Ответить
Развернуть ветку
Anastasia Gazira

Мы поставщики книг в Озоне. Каждую неделю они придумывают что-то новое. И чаще всего это вредит нашим (а значит, и Озоновским) продажам. Остановить или уменьшить закупки накануне пика продаж - для них норма. Иногда заказывают дед стоки в немереном количестве, а иногда хиты лежат месяцами. Часто их гениальная система просто зависает. За последние два года продажи по книгам как минимум не растут, у многих - упали. Поэтому, вся эта статья с моделями - оторванная от реальной жизни теория.

Ответить
Развернуть ветку
Стас Попов

Спасибо, оч интересная статья! А слышал кто-нибудь про такое решение по автоматизации закупок? Хочу попробовать, нужны отзывы

Ответить
Развернуть ветку
Читать все 75 комментариев
null