Персонализация в food e-commerce: свой ресторан для каждого

Персонализация в food e-commerce: свой ресторан для каждого

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

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

Или предложить дополнить уже сформированный заказ тем, что точно придется клиенту по вкусу.

Персональный купон

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

В чем задача?

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

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

Динамическая рекуррентная модель для рекомендации следующей корзины

Одна из наиболее известных исследовательских работ в этой области "A Dynamic Recurrent Model for Next Basket Recommendation" (Feng Yu et al) предлагает в таких случаях использовать рекуррентные нейронные сети. Таким образом достигаются лучшие результаты по сравнению с другими популярными подходами.

Так выглядит архитектура модели:

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

Оптимизируемая функция (Bayesian Personalized Ranking) предоставляет ранжированный список, релевантный для пользователя, что позволяет отобрать топ-K продуктов, которые наиболее вероятно войдут в следующую корзину покупателя.

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

Что стоит добавить?

Комбинации

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

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

Используя заранее заданное правило {Сандвич X + Курица Y + Напиток} соберем первые рекомендации для пользователя.

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

Но что, если содержание набора не соответствует ожиданиям клиента?

К примеру, мы определили состав {Сандвич X + Курица Y + Напиток}, а пользователь желает получить {Курица Y + Напиток}.

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

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

Актуальность

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

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

Что кажется лишним

Представление корзины

В упомянутом выше исследовании авторы используют усреднение векторов продуктов для получения векторного представления корзины. Это результат борьбы с высокой кардинальностью товаров в рядовом e-commerce.

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

Итоговая архитектура