Приветствуем читателей Хабра! Мы, команда дата-сайентистов и дата-аналитиков компании «ДатаЛаб»* (ГК «Автомакон»), запускаем серию статей, в которых поднимем актуальные темы и предложим свои решения проблемных ситуаций онлайн-ритейла. Каждый день мы решаем бизнес-задачи ритейла по повышению продаж, сокращению издержек и управлению рисками.

Стартуем со статьи, в которой рассмотрим одну из самых распространенных проблем в онлайн-ритейле – отсутствие товара (out-of-stock) в моменте и поделимся рекомендациями по ее устранению.

В статье мы описываем наш реальный опыт – проект для российской сети магазинов и сервиса бесплатной доставки«ВкусВилл».

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

Острота проблемы и варианты решения

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

Причин возникновения проблемы out-of-stock может быть несколько: пиковый спрос, задержки в поставках, ошибки в управлении запасами, технические проблемы. Хорошая новость в том, что все решаемо. Опишем некоторые варианты устранения описанной проблемы:

1. Автоматический подбор аналогов

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

2. Система предварительного заказа

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

3. Система оповещения о поступлении товара в продажу

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

4. Использование аналогов товаров из других магазинов

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

5. Внутренняя резервация товара

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

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

Мы предлагаем рассмотреть более подробно именно первый вариант с применением ML-моделей – автоматический подбор аналогов. Именно использование моделей машинного обучения для создания системы генерации и подбора аналогов товаров в продуктовом онлайн-ритейле позволяет быстро заменить товар, которого нет в магазине, на более подходящий аналог и сохранить лояльность покупателя. 

Сложности и проблемы, с которыми столкнулись

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

Трудность реализации

Подбор аналогов не совсем простая задача особенно в продуктовом ритейле, где требуется более точная «настройка» по разным и далеко не всегда очевидным параметрам. Например, по упаковке, весу или объему, назначению, вкусовым факторам, составу, пищевой ценности. В таком случае уже необходимо применение как текстовых, так и CV-моделей.

Ручная обработка данных 

На данный момент во «ВкусВилле» около 37 000 товаров, и у каждого свои характеристики. Особое внимание стоит обратить на категорию товаров. Это краеугольный камень в обработке данных – чем подробнее размечены категории товаров, тем более точно модель предсказывает.

Количество товаров-аналогов

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

Основная суть проекта

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

Пример: описание товара на сайте «ВкусВилл»
Пример: описание товара на сайте «ВкусВилл»

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

Пример: как данные товара переходят в эмбеддинги
Пример: как данные товара переходят в эмбеддинги

Формирование датасета

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

Обработка данных включает в себя:

  • Ручную разметку категорий;

  • Загрузку изображений и соединение их с товарами;

  • Сохранение только нужных параметров товара.

Пример: ручная разметка товаров
Пример: ручная разметка товаров

Обучение

На этапе обучения мы много экспериментировали с различными предобученными моделями и их соединениями. Остановились на двух моделях: за текст отвечает – rubert-tiny2, а за изображения – resnet-34, предобученная на imagenet. В процессе тюнинга сетей остро встал вопрос с затуханием градиента. Это проблема возникала на моменте, когда для NLP составляющей брались достаточно крупные модели такие, как LaBSE. Эксперименты с крупными моделями показали, что у них изначально хорошие представления о нашем домене, и тюнинг был менее эффективным. В связи с этим, мы решили использовать более компактные модели, но с большим дообучением на предметной области. 

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

В процессе работы мы провели множество экспериментов, в том числе:

  • Пробовали обучаться с дополнительными головами у текстовой и картиночной модели;

  • Добавляли слой ArcFace  для более четкого представления эмбеддингов.

Процесс обучения заключался в решении задачи классификации определенного товара в его категорию самого низкого уровня. Обучения производилось на GPU (Tesla V100) и в целом не занимало очень много времени. Эмпирическим путем было установлено, что модель показывает наилучшее качество около 20 эпохи. 

Пример: как работает сервис в реальности
Пример: как работает сервис в реальности

Выводы, к которым мы пришли

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

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

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

Будем рады услышать ваше мнение о нашем подходе и ответить на ваши вопросы. Оставляйте свои комментарии под статьей и активно участвуйте в обсуждении. Ваши мнения, вопросы и предложения могут внести ценный вклад в нашу работу!

*«ДатаЛаб» —  команда профессионалов в области аналитики, больших данных, разработки программного обеспечения, машинного обучения и искусственного интеллекта.

Комментарии (1)


  1. S_A
    13.08.2023 06:25

    Можно вам предложить присмотреться к

    https://www.marqo.ai/

    ?