- Анализ рыночной корзины
Анализ рыночной корзины является одним из приложений изучения правил ассоциации и применяется в розничной торговле для выявления ассоциаций между различными продуктами. Рыночные корзины состоят из списка товаров, которые покупатели часто покупают за одно посещение магазинов.
2. Изучение правил ассоциации
Изучение правил ассоциации — это широко используемый подход к интеллектуальному анализу данных, который помогает найти взаимосвязь между продуктами в большой базе данных транзакций. Результаты анализа правил ассоциации могут помочь ритейлерам улучшить маркетинговые стратегии, получая представление о том, что клиенты часто покупают продукты.
Априорный алгоритм выполняет анализ потребительской корзины, и входными данными для этого анализа являются данные о покупках клиентов. В этом алгоритме есть три важных показателя, а именно поддержка, уверенность и подъем.
Поддержка
Поддержка — это вероятность того, что продукты X и Y будут куплены вместе в транзакции. Стоимость поддержки можно рассчитать по следующему уравнению:
Уверенность
Значение достоверности определяется как деление общего количества транзакций, включая X и Y, на общее количество транзакций, содержащих Y. Уравнение выглядит следующим образом:
Поднять
Лифт измеряет вероятность того, что продукт Y будет куплен при покупке продукта X. Следующее уравнение может быть использовано для расчета значения подъемной силы:
Подготовка данных
Набор данных, который я использовал для этого анализа, доступен для загрузки в моем репозитории GitHub. Я подготовил корзину, используя только данные о транзакциях за три месяца. Для выполнения MBA в качестве входных данных требуются только данные о транзакциях, приобретенных каждым клиентом. Количество транзакций не ограничено, и данные могут быть подготовлены исходя из потребностей.
Инструменты анализа данных
- Совместная работа Google
- Питон
Необходимые библиотеки
- Панды
- NumPy
- Априори
- Сиборн
- Матплотлиб
Во-первых, важны необходимые библиотеки,
import pandas as pd import numpy as np import seaborn as sns from matplotlib import pyplot as plt %matplotlib inline from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns import association_rules
После импорта библиотек загрузите набор данных следующим образом:
df = pd.read_csv('online_retail.csv') df.head()
Выход:
Затем подготовьте данные для анализа корзины:
df['Date'] = pd.to_datetime(df['Date']) print('Time period start: {}\nTime period end: {}'.format(df.Date.min(), df.Date.max())) #define the length of transactions to prepare basket start_date = '2010-12-01' end_date = '2011-02-28' mask = (df['Date'] > start_date) & (df['Date'] <= end_date) transaction = df.loc[mask]\ len(transaction)
Всего в наборе данных содержится 100324 транзакции. После этого подготовьте корзину следующим образом:
basket = (transaction.groupby(['Invoice', 'Product'])['Quantity'] .sum().unstack().reset_index().fillna(0) .set_index('Invoice')) #Convert the units to 1 hot encoded values def encode_units(x): if x <= 0: return 0 if x >= 1: return 1 basket_sets = basket.applymap(encode_units) #Build up frequent items with apriori model frequent_itemsets = apriori(basket_sets, min_support=0.02, use_colnames=True) #apply the association_rules rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1) rules.tail()
Выход:
Примечание. антецедент – это элемент, найденный в данных. cконсеквент – это элемент, найденный в сочетании с антецедентом.
Как вы можете видеть выше, несколько столбцов включаются в результирующий фрейм данных. Однако я хотел бы выделить некоторые параметры априорного алгоритма следующим образом:
антецеденты = СЕРДЦЕ МАЛЕНЬКОЕ ПЛЕТЕНОЕ», «БОЛЬШОЕ ПЛЕТЕНОЕ СЕРДЦЕ»
следствия = БЕЛОЕ ВИСЯЩЕЕ СЕРДЦЕ T-LIGHT ДЕРЖАТЕЛЬ
поддержка = 0,024224, всего транзакций = 100324
X ∪ Y = поддержка * общее количество транзакций = 0,024224 * 100324 = 2430
Это означает, что продукты [HEART OF WICKER SMALL», «HEART OF WICKER LIG» и [WHITE HANGING HEART T-LIGHT HOLDER] были куплены 2430 раз вместе.
достоверность = 0,456410
Это означает, что 45 % клиентов покупали [WHITE HANGING HEART T-LIGHT HOLDER] каждый раз, когда они покупали [HEART OF WICKER SMALL», «HEART OF WICKER LARGE».
подъем = 3,194002
Значение подъема больше 1, поэтому эти продукты с большей вероятностью будут покупать вместе. Чем выше значение подъема, тем сильнее корреляция между продуктами.
Визуализация
sns.set(style = "whitegrid") fig = plt.figure(figsize=(12, 12)) ax = fig.add_subplot(projection = '3d') x = rules['support'] y = rules['confidence'] z = rules['lift'] ax.set_xlabel("Support") ax.set_ylabel("Confidence") ax.set_zlabel("Lift") ax.scatter(x, y, z) ax.set_title("3D distribution of association rules") plt.show()
Выход:
Спасибо за прочтение!