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

Неявные данные против явных данных

Явные данные - это данные, намеренно предоставленные пользователями, т. е. рейтинги. Неявные данные - это данные, созданные на основе действий пользователя на сайте, таких как посещение страницы со списком продуктов, просмотр продукта, покупка продукта и т. д.

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

Выбор алгоритма

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

Анализ правил ассоциации (ARM) может использоваться для предоставления рекомендаций на основе сеансов, а Apriori является одним из таких широко распространенных алгоритмов ARM.

Набор данных

Для простоты этой истории давайте предположим, что существует всего 4 этапа действий пользователя - visit_product_listing_page, view_product, add_to_cart и buy_product.

Мы будем использовать страницу visit_product_listing_page для создания правил ассоциации и остальных шагов для вычисления оценки продукта - для этого мы можем присвоить step_weights каждому шагу как:

view_product: 1
add_to_cart: 2
buy_product: 3

Мы можем легко подсчитать оценку для каждого продукта, используя step_weights и qty / no_of_visits продукта. Поскольку у нас есть готовый пул продуктов, давайте сконцентрируемся на создании правил ассоциации.

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

Общая идея алгоритма априори

Допустим, пользователь A посетил страницу со списком продуктов с идентификатором 1 за один сеанс, а пользователь B, который посетил страницу со списком продуктов с идентификатором 1, также посетил страницу со списком продуктов с идентификатором 2 за один сеанс. Таким образом, будет сгенерировано правило для предложения продуктов пользователю A, которые принадлежат странице списка продуктов с идентификатором 2 вместе со страницей списка продуктов с идентификатором 1.

Есть 3 основных компонента алгоритма априори:

  1. Поддержка - вероятность записей, содержащих обе страницы со списком продуктов с ID 1 и ID 2.
  2. Доверие - условная вероятность записей, содержащих страницу со списком продуктов с идентификатором 2 и данным идентификатором 1. [P (ID2 | ID1)]
  3. Лифт - отношение уверенности к поддержке. Если рост равен

Проблемы реализации

Существует два популярных варианта реализации алгоритма Apriori - mlxtend и apyori.

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

Для больших наборов данных лучше всего использовать реализацию Apyori алгоритма Apriori, чтобы игнорировать ошибки типа Ошибка памяти или int32 overflow.

Хорошо, давайте запрограммируем!

Формат вывода apriori -

[RelationRecord(items=frozenset({'2', '3'}), support=0.4020899591094957, ordered_statistics=[OrderedStatistic(items_base=frozenset({'2'}), items_add=frozenset({'3'}), confidence=1.0, lift=1.0521032504780115)])

Предоставление рекомендаций по продукту

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

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

Вывод

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

Спасибо за чтение! Если вам понравилась эта статья, не стесняйтесь хлопать много раз (вы знаете, что хотите!) И поделитесь ею с другом. Чтобы найти больше таких интересных статей, посетите наш блог!