Photo by Franki Chamaki on Unsplash

Market Basket Analysis (Tutorial Python) #2

DW ADS

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.

market basket analysis

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
Market Basket Analysis _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()
Gambar 1. Top 20 Product Items

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
Gambar 2. Output Data Encoding

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)
Gambar 3. Output Nilai Support
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
Gambar 4. Output Association 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. Association Rules (whole milk)

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
Gambar 6. Top 5 Association Rules (whole milk)

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

Han, J., Kamber, M., & Pei, J. (2012). Data Mining: Concepts and Techniques Third Edition. USA: Elsevier Inc.

Witten, I., Frank, E., & Hall, M. (2011). Data Mining: Practical Machine Learning Tools and Techniques Third Edition. USA: Elsevier Inc.

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.

Sstt...
Mau Kiriman Artikel Terbaru Exsight
Tanpa Biaya Langganan? ????

Nama Kamu

Email Kamu

Dapatkan Akses Informasi Terupdate Seputar Dunia Data dan Statistika 🙂

Exsight ADS

Leave a Comment

Hubungi Admin
Halo, selamat datang di Exsight! 👋

Hari ini kita ada DISKON 20% untuk semua transaksi. Klaim sekarang!