Hai hai Sobat Exsight! Pada artikel sebelumnya telah dibahas tentang apa itu Market Basket Analysis #1. Selanjutnya pada artikel ini akan dibahas terkait Tutorial Market Basket Analysis menggunakan Python.
Tutorial Python
Studi Kasus
Studi kasus yang akan kita gunakan dalam hal ini menggunakan data Groceries data, yang didapatkan dari situs Kaggle
* Tidak terdapat missing value pada data.
* Data terdiri atas 7 variabel dan 38.765 observasi.
Load Library Python
Tahapan paling awal sebelum running syntax di Python yaitu melakukan load library . Apabila kamu masih belum memiliki library untuk market basket analysis , maka dapat menginstall terlebih dahulu dengan cara
pip install (nama library nya)
Adapun beberapa library yang digunakan terdiri atas:
import pandas as pd
import numpy as np
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
import plotly.express as px
from mlxtend.preprocessing import TransactionEncoder
Load Data
Kemudian melakukan load data di Python. Data yang diinput diberi nama sebagai data yang berasal dari file Groceries data. Perlu diperhatikan untuk jenis file data yang diinput dalam format CSV, hal ini dengan tujuan untuk mempermudah pengguna. Syntax yang digunakan adalah sebagai berikut
data = pd.read_csv('Groceries data.csv')
data
Exploratory Data Analysis
Sebelum melakukan market basket analysis, terlebih dahulu kita dapat menganalisis exploratory data analysis (EDA) untuk mengetahui karakteristik serta visualisasi data.
Identifikasi Unique Value pada Variabel
print(len(data['Member_number'].unique()))
print(len(data['itemDescription'].unique()))
Berdasarkan hasil running syntax di atas diketahui bahwa terdapat 3898 uniqe value pada variabel Member_number serta 167 unique value pada variabel itemDescription.
Identifikasi Jumlah Barang yang Dibeli
# plot a bar chart to see the top sold items
fig = px.bar(data_frame=freq_items.head(20), title='Top 20 Items', color=freq_items.head(20),
labels={
"index": "Items",
"values": "Quantity",
'lift': 'Lift'
})
fig.update_layout(title_x=0.5, title_y=0.86)
fig.show()
Visualisasi bar chart di atas menunjukkan top 20 barang dengan jumlah pembelian terbanyak, dimana dalam hal ini produk whole milk menduduki peringkat pertama, lalu other vegetables pada peringkat kedua, dan rolls/buns pada peringkat ketiga.
Melakukan Data Encoding Berdasarkan “itemDescription”
Tahapan berikutnya melakukan data encoding, dimana jika tidak membeli produk maka ditandai dengan False sedangkan jika membeli produk ditandai dengan True.
user_id = data['Member_number'].unique()
items = [list(data.loc[data['Member_number'] == id, 'itemDescription']) for id in user_id]
# create a item matrix
TE = TransactionEncoder()
TE.fit(items)
item_transformed = TE.transform(items)
item_matrix = pd.DataFrame(item_transformed, columns = TE.columns_)
item_matrix
Berdasarkan hasil encoding pada tabel di atas dapat dilihat, misalnya untuk transaksi pembelian pertama (baris ke 0), pembeli tidak membeli produk (False) Instant food products, UHT-milk, abrasive cleaner dll ,namun membeli produk (True) whole milk.
Association Rule
Perhitungan Nilai Support
Perhitungan nilai support pada market basket analysis menggunakan algoritma Apriori. Perhitungan dilakukan menggunakan nilai minimum support sebesar 0,01. Syntax beserta hasil output yang didapatkan adalah sebagai berikut.
# get the support value by Apriori algorithm
freq_items = apriori(item_matrix, min_support=0.01, use_colnames=True, max_len=2)
freq_items.sort_values(by = "support", ascending = False)
Perhitungan Association Rules
Tahapan berikutnya pada market basket analysis yaitu membuat sebuah variabel (variabel rules) berdasarkan association rules dari masing-masing barang. Variabel rules merupakan hasil dari fungsi yang mencari asosiasi dimana data yang digunakan berasal dari frequent_items
, dengan nilai minimum dari confidence nya adalah 0.
# create a datafram with product support, confidence , and lift values
rules = association_rules(freq_items, metric = "confidence", min_threshold = 0)
rules
Berdasarkan hasil output pada Gambar 4. diketahui bahwa, misal untuk (baris ke 2251) produk yogurt
biasanya terbeli bersamaan dengan produk whole milk
dengan nilai support 0,150590.
Analisis Lanjutan Market Basket Analysis
Apabila kita tinjau kembali terkait nilai Support pada Gambar 3. diketahui bahwa produk whole milk memiliki nilai support tertinggi sebesar 0,458184. Berdasarkan hal tersebut, kita akan melakukan analisis lanjutan, untuk mengetahui produk apa saja yang biasanya terbeli bersamaan dengan produk whole milk.
# regarding the whole mike has the highest support, choose it as the item for the basket analysis
rules_sel = rules[rules["antecedents"].apply(lambda x: "whole milk" in x)]
rules_sel.sort_values('confidence', ascending=False)
Gambar 5. menunjukkan produk yang dibeli bersamaan dengan whole milk .
Sekarang kita akan mencari tau 5 produk teratas yang paling sering dibeli bersamaan dengan produk whole milk. Syntax yang digunakan adalah sebagai berikut.
# get the most important 5 items that customers would buy after purchasing whole milk
rules_support = rules_sel['support'] >= rules_sel['support'].quantile(q = 0.95)
rules_confi = rules_sel['confidence'] >= rules_sel['confidence'].quantile(q = 0.95)
rules_lift = rules_sel['lift'] > 1
rules_best = rules_sel[rules_support & rules_confi & rules_lift]
rules_best
Hasil pada Gambar 6. menunjukkan bahwa 5 produk teratas yang paling sering dibeli bersamaan dengan produk whole milk yaitu other vegetables, rolls/buns, soda, tropical fruit, dan yogurt.
Referensi
Sekian penjelasan terkait Tutorial Market Basket Analysis dengan Python. Jika masih terdapat hal-hal yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.