Алгоритм Априори с использованием Python
Анализ рыночной корзины с использованием алгоритма Априори в машинном обучении
В машинном обучении алгоритм Априори используется для правил ассоциации интеллектуального анализа данных. В этой статье я познакомлю вас с анализом рыночной корзины с использованием алгоритма Априори в машинном обучении с реализацией на языке программирования Python.
Что такое майнинг ассоциации?
Майнинг ассоциаций обычно выполняется на основе данных транзакций из розничной торговой площадки или интернет-магазина. Поскольку большинство данных транзакций имеют большой размер, алгоритм Априори позволяет быстро находить эти шаблоны или правила.
Правила ассоциации используются для анализа розничных данных или данных по транзакциям и предназначены для выявления строгих правил, которые в основном содержатся в транзакционных данных, с использованием необходимых показателей, основанных на концепции сильных принципалов.
Как работает алгоритм Априори?
Алгоритм Априори – самый популярный алгоритм для майнинга ассоциативных правил. Он находит самые частые комбинации в базе данных и определяет правила ассоциации между элементами на основе 3 важных факторов:
- Поддержка: вероятность того, что X и Y встретятся.
- Уверенность: условная вероятность того, что Y связан с X. Другими словами, как часто встречается Y, когда X появляется первым.
- Подъем: отношения между поддержкой и уверенностью. Увеличение на 2 означает, что вероятность покупки X и Y вместе в два раза выше, чем вероятность покупки только Y.
Априори использует подход «снизу вверх», при котором частые подмножества расширяются по одному элементу за раз (один шаг называется генерацией кандидатов), а группы кандидатов проверяются на основе данных. Алгоритм завершается, когда не будет найдено других успешных расширений.
Теперь я расскажу вам о решении задачи анализа рыночной корзины с помощью алгоритма Априори с использованием Python и машинного обучения.
Анализ рыночной корзины с помощью алгоритма Априори с использованием Python
Анализ рыночной корзины, также известный как изучение правил ассоциации или анализ сродства – это метод интеллектуального анализа данных, который может использоваться в различных областях, таких как маркетинг, биоинформатика, образование, ядерная наука и др.
Основная цель анализа рыночной корзины в маркетинге – предоставить розничному продавцу информацию, необходимую для понимания покупательского поведения, и это может помочь розничному продавцу принять неправильные решения.
Существуют разные алгоритмы анализа корзины. Существующие алгоритмы работают со статическими данными и не фиксируют изменения данных с течением времени. Но алгоритм Априори не только использует статические данные, но и предоставляет новый способ учета изменений, происходящих в данных.
Я начну эту задачу анализа рыночной корзины с помощью алгоритма Априори с импорта необходимых библиотек Python:
import numpy as np # linear algebra import pandas as pd # data processing import plotly.express as px import apyori from apyori import apriori
Теперь загрузим набор данных. Набор данных, который я использую в этой задаче, можно скачать отсюда:
1 data = pd.read_csv("Groceries_dataset.csv") 2 data.head()
Member_number |
Date |
itemDescription |
1808 |
21-07-2015 |
tropical fruit |
2552 |
05-01-2015 |
whole milk |
2300 |
19-09-2015 |
pip fruit |
1187 |
12-12-2015 |
other vegetables |
3037 |
01-02-2015 |
whole milk |
Исследование данных
Давайте сначала взглянем на 10 самых продаваемых товаров:
print("Top 10 frequently sold products(Tabular Representation)") x = data['itemDescription'].value_counts().sort_values(ascending=False)[:10] fig = px.bar(x= x.index, y= x.values) fig.update_layout(title_text= "Top 10 frequently sold products (Graphical Representation)", xaxis_title= "Products", yaxis_title="Count") fig.show()
Теперь давайте рассмотрим более высокие продажи:
data["Year"] = data['Date'].str.split("-").str[-1] data["Month-Year"] = data['Date'].str.split("-").str[1] + "-" + data['Date'].str.split("-").str[-1] fig1 = px.bar(data["Month-Year"].value_counts(ascending=False), orientation= "v", color = data["Month-Year"].value_counts(ascending=False), labels={'value':'Count', 'index':'Date','color':'Meter'}) fig1.update_layout(title_text="Exploring higher sales by the date")
fig1.show()
Наблюдения:
Из представленных выше визуализаций мы можем заметить, что:
- Больше всего покупают молока, за ним идут овощи.
- Большинство покупок происходит в августе/сентябре, а февраль/март – наименее требовательные.
Реализация алгоритма Априори на Python
Теперь я реализую алгоритм Априори в машинном обучении, используя язык программирования Python для анализа рыночной корзины:
rules = apriori(transactions, min_support = 0.00030, min_confidence = 0.05, min_lift = 3, max_length = 2, target = "rules") association_results = list(rules) print(association_results[0])
Результат:
RelationRecord(items=frozenset({'liver loaf', 'fruit/vegetable juice'}), support=0.00040098910646260775, ordered_statistics=[OrderedStatistic(items_base=frozenset({'liver loaf'}), items_add=frozenset({'fruit/vegetable juice'}), confidence=0.12, lift=3.5276227897838903)])
for item in association_results: pair = item[0] items = [x for x in pair] print("Rule : ", items[0], " -> " + items[1]) print("Support : ", str(item[1])) print("Confidence : ",str(item[2][0][2])) print("Lift : ", str(item[2][0][3])) print("=============================")
Результат:
Rule : liver loaf -> fruit/vegetable juice
Support : 0.00040098910646260775
Confidence : 0.12
Lift : 3.5276227897838903
=============================
Rule : ham -> pickled vegetables
Support : 0.0005346521419501437
Confidence : 0.05970149253731344
Lift : 3.4895055970149254
=============================
Rule : roll products -> meat
Support : 0.0003341575887188398
Confidence : 0.06097560975609757
Lift : 3.620547812620984
=============================
Rule : misc. beverages -> salt
Support : 0.0003341575887188398
Confidence : 0.05617977528089888
Lift : 3.5619405827461437
=============================
Rule : spread cheese -> misc. beverages
Support : 0.0003341575887188398
Confidence : 0.05
Lift : 3.170127118644068
=============================
Rule : soups -> seasonal products
Support : 0.0003341575887188398
Confidence : 0.10416666666666667
Lift : 14.704205974842768
=============================
Rule : spread cheese -> sugar
Support : 0.00040098910646260775
Confidence : 0.06
Lift : 3.3878490566037733
=============================
Надеюсь, вам понравилась эта статья об алгоритме Априори в машинном обучении с использованием языка программирования Python.