Только 20% рекомендаций товара во время поиска по каталогу основаны на поведении. Так ли это? Давайте разбираться!

Рекомендации продуктов стали неотъемлемым инструментом продаж для сайтов электронной коммерции. Такие системы рекомендаций обычно используют технологию collaborative filtering — распространенный подход для создания рекомендательных систем, основанных на поведении пользователей. Применение collaborative filtering возможно, когда имеется достаточное количество исторических данных о взаимодействии пользователя с элементами интерфейса, и она неэффективна, когда данные о взаимодействиях собраны в недостаточном объеме или не по всем действиям. Согласно принципу Парето, обычно 20% каталога сайта получают 80% трафика, а остальной каталог не имеет достаточного объема данных о взаимодействии с пользователями. Именно это является проблемой для реализации рекомендаций на основе поведения.

Когда collaborative filtering применить не получается, можно использовать рекомендации на основе контента, то есть находить товары по схожему внешнему виду, характеристикам или описанию. Однако, используя machine learning, мы можем сделать подход collaborative filtering эффективным даже для продуктов с минимальными данными о взаимодействии с клиентами. Давайте обсудим, как обучить ML‑модель для отображения характеристик collaborative filtering, чтобы предоставлять рекомендации на основе поведения даже для продуктов с неполными данными.

Моделирование поведения пользователей с помощью матрицы взаимодействия

Давайте сначала рассмотрим подход collaborative filtering подробнее. Мы моделируем взаимодействие между пользователями и товарами в виде «матрицы взаимодействия», где значение ячейки — это вероятность того, что данный пользователь выберет данный продукт. У нас есть только частичная информация о содержимом этой матрицы, основанная на явном или наблюдаемом поведении клиентов. Явное поведение может быть рейтингом или иной оценкой продукта, предоставленной клиентом. Наблюдаемое поведение показывает, насколько клиенту нравится продукт по неявным сигналам, например, когда клиент просматривает продукт, добавляет его в корзину или покупает его. Ячейки матрицы остаются пустыми для пользователей и товаров, между которыми еще не было взаимодействий. Нашей целью является построение модели, которая может предсказывать значения пустых ячеек этой матрицы взаимодействия.

Один из классических и до сих пор один из самых популярных подходов для заполнения матрицы взаимодействия — это матричная факторизация. Мы пытаемся приблизить матрицу взаимодействия как произведение двух матриц меньшей размерности: матрицу признаков пользователей и матрицу признаков товаров.

Скалярное произведение выбранных строки матрицы U и столбца матрицы V дает предсказание успешности рекомендации для выбранных пользователя и товара. Предсказания для известных пар пользователь/товар должны быть максимально близкими к известным оценкам релевантности. Мы добиваемся совпадений оценок релевантности для известных данных используя алгоритмы оптимизации.

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

.

Применение метода ALS

Одним из классических подходов к факторизации матриц является метод Alternating least squares (ALS).

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

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

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

Визуализации кластеров эмбеддингов, появившихся после обучения ALS
Визуализации кластеров эмбеддингов, появившихся после обучения ALS

В центре графика вы видите пространство элементов с небольшим числом взаимодействий пользователей. Это продукты с малым количеством взаимодействий, где число взаимодействий составляет менее 300. Зеленые точки — продукты с большим числом взаимодействий, для эмбеддингов которых есть четкая структура кластеров после обучения ALS.

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

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

Гибридные решения для подбора рекомендаций

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

Мы рассматриваем методы глубокого обучения (Deep Learning, DL) для решения задачи рекомендаций. Поскольку модели DL являются универсальными аппроксиматорами функций, они могут предсказывать эмббединги ALS для всех товаров, включая имеющие малое количество взаимодействий, используя описательную информацию о товарах и пользователях. Например, в качестве информации для предсказания эмбеддингов ALS товара будут использоваться атрибуты товара, текст названия и описания а также изображение товара.

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

Ниже показана архитектура нейронной сети:

Для векторизации текстовых признаков мы используем предобученную модель Bidirectional Encoder Representations from Transformers (BERT). Для эмбеддингов изображений мы используем несколько классификаторов атрибутов на основе CNN ResNeXt-50, а затем конкатенируем полученные значения эмбеддингов. Мы также включаем в итоговый вектор другие признаки, такие как цена, бренд и категория.

Для минимизации расстояния между предсказанным эмбеддингами на основе описательных данных о товарах и пользователях и эмбеддингами ALS мы используем функцию потерь MSE (Mean Squared Error).

После нескольких циклов обучения мы снова визуализируем скрытое пространство ALS.

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

Давайте попробуем снова найти ближайших соседей для предыдущего продукта с низкой популярностью с идентификатором 8 757 339 (вверху слева). После того, как пользователи кликнули на целевое платье всего три раза, результаты стали более релевантными:

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

Формальные метрики оценки модели, рассчитанные на низкопопулярных продуктах, также показывают значительное улучшение: суммарный скидочный коэффициент достиг (NDCG) @10 с 0,021 до 0,127 и средней точности с 0,014 до 0,092.

Вывод

Исправив проблему классического подхода к collaborative filtering для низкопопулярных продуктов с помощью Deep Learning, у нас есть мощный инструмент для улучшения качества рекомендательных систем. Чтобы улучшить рекомендации для неполных данных, специалисты FlexiTech.ai обучили нейронную сеть аппроксимировать вложения ALS для популярных продуктов. Используя характеристики продукта, такие как изображение и текст, мы можем предсказывать вложения ALS для продуктов из «длинного хвоста».

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

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


  1. vassabi
    13.09.2023 20:09

    а как регулярно вы переобучаете эту нейронку?
    (товары же регулярно приходят и уходят)


    1. FlexiTech Автор
      13.09.2023 20:09
      +1

      Переобучения не происходит. Происходит регулярный переподсчет атрибутов для новых категорий.

      Технически, это apache airflow запускает процесс (dag), при условии отличий данных за предыдущий период.
      Если новый каталог перекрывает старый, то на разнице запускается модель путём поднятия gpu машины и запуска модели.

      Период динамический, в среднем 1 неделя