Epoch8.co — рекомендательная система для интернет-магазина на основе машинного обучения

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

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

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

Как работают классические алгоритмы рекомендаций, и когда они ломаются

Классические алгоритмы рекомендаций работают так: машина ничего не знает про товар, кроме его идентификатора в базе.

Когда пользователь взаимодействует с товаром, алгоритм получает обучающие данные вида «человек посмотрел товар номер 1 и 2, затем купил товар номер 3; буду всегда рекомендовать товар номер 3 после просмотров 1 и 2» или «человек купил товары 3 и 4, наверное, это близкие товары, надо их рядом показать».

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

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

Альтернативный подход к формированию рекомендаций

Нам хотелось бы, чтобы рекомендательный алгоритм работал так, как работает человек, которого попросили что-то порекомендовать.

Представим себе, что Алиса зашла на сайт крупного интернет-магазина bizon.ru с задачей подобрать хороший подарок на день рождения своему другу Бобу.

Сначала Алиса оценивает ассортимент магазина, чтобы понять, из чего выбирать.

Затем она вспоминает интересы Боба, например, так: «Боб любит экстремальный спорт, фотографировать и собирает коллекцию курительных трубок».

Курительных трубок на bizon.ru нет, поэтому Алиса выбирает подарки, связанные с экстремальным спортом и фотографией.

Это Боб и его интересы (по мнению Алисы)
Это Боб и его интересы (по мнению Алисы)

Дальше Алиса разными способами фильтрует товары на bizon.ru и оценивает, насколько найденные товары соответствуют интересам Боба. Для этого каждый товар, который она просматривает, она оценивает по двум параметрам: насколько он «про экстремальный спорт» и насколько он «про фотографию».

GoPro: подходит для экстремальных съемок, фотографировать тоже что-то умеет.
GoPro: подходит для экстремальных съемок, фотографировать тоже что-то умеет.
Рация: пригодится «экстремальщику» в путешествии, а фотографу не нужна.
Рация: пригодится «экстремальщику» в путешествии, а фотографу не нужна.
Умные часы: могут принести какую-то пользу «экстремальщику», а фотографу, скорее всего, не нужны.
Умные часы: могут принести какую-то пользу «экстремальщику», а фотографу, скорее всего, не нужны.
Polaroid: не нужен «экстремальщику», зато может быть приятным аксессуаром для фотографа.
Polaroid: не нужен «экстремальщику», зато может быть приятным аксессуаром для фотографа.
Дрон с фотокамерой: хорошо подходит и «экстремальщику», и фотографу.
Дрон с фотокамерой: хорошо подходит и «экстремальщику», и фотографу.

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

Epoch8.co — рекомендательная система для интернет-магазина на основе машинного обучения

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

Реализуем этот подход на практике

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

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

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

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

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

В течение первых минут работы рекомендательной системы «в бою» мы получили характерные профили покупателей.

Типичный женский профиль
Типичный женский профиль
И это тоже типичный женский профиль
И это тоже типичный женский профиль
Похоже, что этот покупатель — техногик
Похоже, что этот покупатель — техногик
А этот профиль похож на профиль автолюбителя
А этот профиль похож на профиль автолюбителя

Метрики

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

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

Преимущества такого подхода к построению рекомендаций

  • Для того, чтобы рекомендательная система заработала, нам не нужна история просмотров и покупок товара: алгоритм работает с «сутью» товара, а не с его безликим численным id.

  • Нет проблемы «холодного старта»: рекомендательная система начинает работать очень быстро: пользователю достаточно посмотреть 3-5 товаров, чтобы профиль пользователя заполнился, и алгоритм начал понимать его интересы.

  • Рекомендательная система может работать даже с плохой текстовой информацией, например, с наименованиями товаров в чеке.

Сложно ли интегрироваться?

Супер-просто.

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

Затем мы выставляем для вас API с тремя методами:

  • Появился новый товар;

  • Пользователь просмотрел товар;

  • Дай мне рекомендации для такого-то пользователя.

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

Хочу тестировать, куда писать?

Пишите: hello@epoch8.co (мы пока в альфе, поэтому подключаем клиентов вручную).

1111
20 комментариев

Вы внедрили рекомендательную систему в магазин, который по сути работал без неё и получили супер-результат. Здорово, великолепно. А теперь дайте свои метрики по сравнению, скажем, с https://retailrocket.net/

2

Валентин, retailrocket рассматривался как альтернатива нашей разработке заказчиком, но не подошел, так как не решает задачу "пересортировка результатов фильтрации".

То есть наше решение встраивается в листинг не отдельным блоком типа "те, кто смотрел это еще смотрят другое", а сам порядок объектов в листинге меняется в соответствии с результатом работы системы персонализации.

Как пример: главный экран сервиса Wish или Joom, перечень и порядок объектов на этом экране - результат персонализации, он меняется в зависимости от вашего поведения.

1

"До внедрения нашего алгоритма самым успешным рекомендательным алгоритмом в маркетплейсе был “топ продаваемых товаров”"
может это не ваша заслуга а косяк маркетплейса?

2

На самом деле аккуратная эмпирика вида "товары у которых идет рост популярности за последний час/день/неделю" - очень хороший способ оперативно реагировать на сезонные тренды и другие ситуации которые не были представлены в обучающих данных.

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

В этом конкретном маркетплейсе кроме нашего решения стояла еще одна система персонализированных рекомендаций, которая сильно проигрывала "топу продаваемых товаров" по итогам А/Б теста.

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

1

Мы предусматриваем возможность размещения системы в контуре у заказчика. Единственный нюанс - для переобучения потребуются сервера с GPU.

1

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

1