Статистика McKinsey & Company за 2018 год показала, что 35 % того, что потребители покупают на Amazon, и 75 % того, что они смотрят на Netflix, приходятся на рекомендации товаров[1] — Теперь это большой процент, который показывает, насколько успешными могут быть стратегии рекомендаций, если они выполняются правильно. Рекомендации по продуктам всегда были отличным способом стимулировать продажи, предлагая клиентам релевантные продукты, представляющие интерес. Существует множество алгоритмов, используемых для создания рекомендаций по продуктам, однако в этой статье мы сосредоточимся на правилах ассоциации (анализ корзины рынка).

Что такое правила ассоциации?

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

Правила ассоциации используются для выявления частых закономерностей в наборах данных. Этот метод оказался успешным при анализе транзакционных данных, чтобы понять, как поведение клиентов, а затем используется для увеличения продаж. Учитывая запись транзакции с несколькими товарами, правила ассоциации с помощью анализа рыночной корзины (MBA) пытаются найти правила, объясняющие, почему определенные товары часто покупаются вместе.

Например, Карен Хит в 1992 году обнаружила сильную корреляцию между пивом и подгузниками [2]. Хит обнаружил, что клиенты, купившие подгузники, чаще покупают пиво. Это открытие — хороший пример, показывающий, как можно легко обнаружить множество скрытых корреляций между продуктами, используя правила ассоциации, чтобы максимизировать продажи.

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

Прежде чем мы углубимся в детали того, как работает MBA, давайте рассмотрим общие алгоритмы рекомендации продукта:

  1. Рекомендация по популярным продуктам. Этот алгоритм отправляет товары покупателям в зависимости от популярности данного товара.
  2. Фильтрация контента: этот алгоритм рекомендаций пытается создать профиль клиента на основе поведения (например, рейтинга). Он пытается генерировать рекомендации для клиентов на основе их моделей активности.
  3. Совместная фильтрация: дает рекомендации клиенту, собирая информацию о предпочтениях или характере действий от других похожих клиентов.
  4. Правила ассоциации.Правило ассоциации отличается от других методов, поскольку оно пытается ответить на вопрос: «Какие элементы часто появляются вместе».

Как работает МВА

Дан пример записей транзакций магазина, как показано на рис. 1, который содержит следующие продукты:

={Молоко, хлеб, пиво, подгузник, кола}

  • Набор элементов — это набор из одного или нескольких элементов из списка продуктов.

Например. ={Молоко, Хлеб, Подгузник}, {Молоко}

  • Поддержка определяется как доля транзакций, содержащих набор элементов. Чем выше поддержка, тем чаще встречается набор элементов. Для заданного набора элементов A поддержка A – это доля встречаемости набора элементов A в общем списке записей транзакций.

Например, используя таблицу на рис. 1, поддержка {Молоко, хлеб, подгузник} => 2/5

  • Надежность, с другой стороны, – это вероятность того, что транзакция будет содержать набор элементов B при условии, что транзакция содержит набор элементов A.

Например:

Support_count({Bread})=4

Support_count({Хлеб,Подгузник})=3

Поэтому Confidence=3/4

  • Часто встречающийся шаблон или Часто встречающийся набор элементов — это набор элементов, поддержка которого больше или равна выбранному минимальному порогу поддержки. Например, если минимальная поддержка таблицы (рис. 1) равна 2, это означает, что любой набор элементов с частотой менее 2 ниже порогового значения и не будет выбран.

  • Наконец, Подъем — это показатель эффективности модели. Это помогает определить, повышает ли сочетание одного продукта с другим шансы на продажу.

Понимание показателя подъема

  • Если Поднять › 1, это означает, что правило ассоциации повышает шансы на результат.
  • Если Подъем ‹ 1, это означает, что правило связывания уменьшает шансы на желаемый результат.
  • Если Lift = 1, это означает, что правило ассоциации не влияет на результат.

Практический эксперимент с использованием Python

В этом разделе мы рассмотрим вводную записную книжку GitHub Криса Моффита [3], но прежде чем углубиться в код, давайте рассмотрим требования к среде выполнения:

Требования

Версия Python: Python 3

Библиотеки Python:

pandas –A – это быстрый, мощный и гибкий инструмент для анализа и обработки данных,
созданный на основе языка программирования Python.

mlxtend —библиотека Python с полезными инструментами для повседневных задач по обработке и анализу данных, таких как создание правил ассоциации.

Начиная

Теперь, когда мы знаем инструменты, с которыми будем работать, давайте установим библиотеки.

pip install pandas
pip install mlxtend

Импортируйте библиотеки:

import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

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

Далее мы загружаем набор данных, очищаем его и подготавливаем данные для MBA.

df = pd.read_excel('http://archive.ics.uci.edu/ml/machine-learning-databases/00352/Online%20Retail.xlsx')
#cleaning & prep
df['Description'] = df['Description'].str.strip()
df.dropna(axis=0, subset=['InvoiceNo'], inplace=True)
df['InvoiceNo'] = df['InvoiceNo'].astype('str')
df = df[~df['InvoiceNo'].str.contains('C')]
#Filter data, fetch only data about France
basket = (df[df['Country'] =="France"]
          .groupby(['InvoiceNo', 'Description'])['Quantity']
          .sum().unstack().reset_index().fillna(0)
          .set_index('InvoiceNo'))

Приведенный выше код загружает данные о транзакциях для розничного магазина в Великобритании (получены из репозитория машинного обучения UCI).

Чтобы сгенерировать частые шаблоны с минимальной поддержкой o.o7, мы можем запустить следующий код:

frequent_itemsets = apriori(basket_sets, min_support=0.07, use_colnames=True)

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

rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)

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

Подъем=6

Доверие=0,8

rules[ (rules['lift'] >= 6) &
       (rules['confidence'] >= 0.8) ]

Сгенерированные правила можно применять для хранения записей и использовать для продакт-плейсмента и рекомендаций. Для более подробного ознакомления с реализацией кода и его результатами проверьте блокнот для полного кода.

Рекомендации

  1. Маккензи И., Мейер К. и Ноубл С., Как розничные торговцы могут не отставать от потребителей (2018 г.), McKinsey & Company. https://www.mckinsey.com/industries/retail/our-insights/how-retailers-can-keep-up-with-consumers
  2. Стив Свойер, Пиво и подгузники: невозможная корреляция (2016), Преобразование данных с помощью интеллекта.
  3. Крис Моффит, Введение в анализ рыночной корзины (2016 г.), GitHub.