-
Notifications
You must be signed in to change notification settings - Fork 0
/
market_basket_analysis_using_apriori_algorithm.py
233 lines (162 loc) · 43.8 KB
/
market_basket_analysis_using_apriori_algorithm.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# -*- coding: utf-8 -*-
"""Market Basket Analysis Using Apriori Algorithm
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1l53tY3-pQ-ZpNKDxcZxtCl_t9VcpsNjN
# **Market Basket Analysis**
Market basket analysis adalah suatu metodologi untuk melakukan analisis buying habit konsumen dengan menemukan asosiasi antar beberapa item yang berbeda, yang diletakkan konsumen dalam shopping basket (keranjang belanja) yang dibeli pada suatu transaksi tertentu. Tujuan dari market basket analysis adalah untuk mengetahui produk-produk mana yang mungkin akan dibeli secara bersamaan
## **Algoritma Apriori**
Algoritma Apriori adalah suatu algoritma dasar yang diusulkan oleh Agrawal & Srikant pada tahun 1994 untuk penentuan frequent itemsets untuk aturan asosiasi boolean. Algoritma Apriori memberi kita sifat asosiatif dalam transaksi. Ini juga dikenal sebagai Aturan Asosiasi. Aturan asosiasi atau association rule adalah teknik untuk menemukan aturan asosiasi antara suatu kombinasi item. Terdapat 3 metrik untuk mengukur ketepatan aturan, yaitu :
### **1. Support**
Support adalah indikasi seberapa sering kumpulan item muncul pada dataset. Berikut perhitungan nilai support :
![support.png](data:image/png;base64,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)
### **2. Confidence**
Confidence adalah suatu ukuran yang menunjukkan hubungan antar dua item secara conditional (berdasarkan suatu kondisi tertentu). Berikut perhitungan nilai confidence :
![confidence.png](data:image/png;base64,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)
### **3. Lift**
Lift mengacu pada bagaimana peluang kedua item dibeli ketika item pertama dibeli. Berikut perhitungan nilai confidence :
![lift.png](data:image/png;base64,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)
---
# **Bakery Market Basket Analysis**
## **1. Import Library**
Pertama-tama mengimpor library yang akan kita gunakan untuk analisis eksplorasi data dan visualisasi data.
"""
# Commented out IPython magic to ensure Python compatibility.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# %matplotlib inline
"""## **2. Import Dataset**
Kita akan menggunakan data BreadBasket_DMS.csv yang bisa temen-temen download [disini](https://github.com/viktree/curly-octo-chainsaw/blob/ea4fbb632382c44af0d0b53c90f4e04496926b94/BreadBasket_DMS.csv)
Sekarang import data ke DataFrame dengan library pandas.
"""
# Commented out IPython magic to ensure Python compatibility.
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# %matplotlib inline
!wget https://raw.githubusercontent.com/viktree/curly-octo-chainsaw/ea4fbb632382c44af0d0b53c90f4e04496926b94/BreadBasket_DMS.csv -O dataset
# Menampilkan isi Datasets:
dataset = pd.read_csv('dataset')
dataset
"""Dari tabel diatas, menunjukkan jumlah data pada dataset terdapat 21293 baris dan 4 kolom
## **3. Data Preparation**
Pada tahapan ini kita akan memastikan tipe data yang digunakan sesuai, tidak ada nilai kosong
"""
# cek tipe data dari setiap kolom
df = pd.read_csv('dataset')
print(df.dtypes)
# mencetak 10 data pertama
print(df.head(10))
#Mencetak jumlah data item yang unik (memiliki nilai item berbeda)
jumlah_item_unik = df['Item'].nunique()
print("Jumlah data item yang unik:", jumlah_item_unik)
#Mencetak data item yang unik (memiliki nilai item berbeda)
data_item_unik = df['Item'].drop_duplicates()
print("Data item yang unik:")
for item in data_item_unik:
print(item)
# Cek missing value dan zeros
df = pd.read_csv('dataset')
print("Missing values :")
print(df.isnull().sum())
print("Zeros pada kolom :")
print((df == 0).sum())
"""Terlihat bahwa pada dataset tidak terdapat missing value dan zeros"""
# cek nilai "NONE" pada kolom Item
print("Nilai NONE pada kolom :", len(df[df['Item'] == 'NONE']))
"""Terdapat nilai 'NONE' di dataset kita. Ini bisa berarti bahwa ada item yang tidak dibeli, atau nama item tersebut tidak dicatat. Terdapat 786 data dengan nilai "None" dari total 21293. Karena data ini tidak berguna, maka bisa kita hapus saja."""
# menghapus baris dengan nilai Item = None
df = df[df['Item'] != 'NONE']
# cek perubahan yang terjadi
print("Jumlah baris setelah NONE dihapus :", len(df))
"""Jumlah baris setelah NONE dihapus : 20507
Seperti yang bisa kita lihat di atas, fitur Tanggal dan Waktu bukanlah tipe numerik. Untuk visualisasi dan pemahaman data yang lebih baik, kita bisa menambahkan beberapa fitur lagi ke DataFrame ini berdasarkan informasi dari dua fitur ini.
"""
# Year (ingat kembali penulisan function lambda)
df['Year'] = df['Date'].apply(lambda x: x.split("-")[0])
# Month
df['Month'] = df['Date'].apply(lambda x: x.split("-")[1])
# Day
df['Day'] = df['Date'].apply(lambda x: x.split("-")[2])
# cek kembali perubahan yang terjadi setelah nilai tahun, bulan dan hari ditampung di fitur baru (year, month, day)
print(df.info())
print(df.head())
"""## **4. Visualisasi dan Memahami Data**
Kita tahu bahwa dataset ini direkam dari 30/10/2016 hingga 09/04/2017. Sebelum kita masuk dalam pemodelan, kita harus mengeksplorasi dan memvisualisasikan penjualan dalam periode waktu ini. Barang apa yang paling banyak dibeli pelanggan? Bulan mana yang lebih sukses? Mari kita jawab ini secara visual.
"""
# Menghitung 20 data penjualan item terbanyak
top_items = df['Item'].value_counts().head(20)
# Mencetak 20 data penjualan item terbanyak
print("20 data penjualan item terbanyak:")
print(top_items)
transaction_count = df.groupby(by='Item')[['Transaction']].count().sort_values(by='Transaction', ascending=False)
def convert_to_percentage(x):
return 100 * x / float(x.sum())
transaction_percentage = transaction_count.apply(convert_to_percentage)
transaction_percentage.head()
# Visualisasikan data penjualan item terbanyak ke line chart dan bar chart
# Menghitung 20 data penjualan item terbanyak
top_items = df['Item'].value_counts().head(20)
# Menampilkan visualisasi data dalam bentuk line chart
plt.figure(figsize=(20,6))
plt.subplot(1,2,1)
plt.plot(top_items)
plt.title('Items Most Sold (Line Chart)')
# Menampilkan visualisasi data dalam bentuk bar chart
plt.subplot(1,2,2)
plt.barh(top_items.index, top_items.values)
plt.title('Items Most Sold (Bar Chart)')
plt.show()
"""Berdasarkan hasil visualisasi, sebutkan 3 barang yang paling banyak terjual !
=>
"""
#buat visualisasi data diagram batang dengan judul 'Monthly Sales' dengan sumbu x bulan dan sumbu y jumlah transaksi
monthly_sales = df['Month'].value_counts().sort_index()
plt.bar(monthly_sales.index, monthly_sales.values)
plt.xlabel('Month')
plt.ylabel('Number of Transactions')
plt.title('Monthly Sales')
plt.show()
"""Dari hasil visualisasi data penjualan perbulan, terlihat terjadi perbedaan penjualan yang drastis pada bulan 4 dan 10 ini disebut dengan outlier.
Untuk mengetahui lebih lanjut, kita bisa periksa untuk melihat apakah ada lebih sedikit transaksi harian yang dicatat untuk bulan-bulan ini dibandingkan dengan yang lain.
"""
print(df.groupby('Month')['Day'].nunique())
"""Pada Bulan 4 hanya tercatat 9 hari dan pada bulan 10 hanya tercatat 2 hari
## **5. Market Basket Analysis**
Pertama kita mengubah item list menjadi data transaksi dengan menggunakan TransactionEncoder.
Kita akan menggunakan frequent item-sets untuk menghasilkan aturan asosiasi dengan menggunakan algoritma Apriori.
"""
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import association_rules, apriori
"""kita membuat list transaction_list() yang unik sehingga kita dapat mengubah data kita ke dalam format yang benar"""
transaction_list = []
# For loop to create a list of the unique transactions throughout the dataset:
for i in df['Transaction'].unique():
tlist = list(set(df[df['Transaction']==i]['Item']))
if len(tlist)>0:
transaction_list.append(tlist)
print(len(transaction_list))
"""kita menggunakan TransactionEncoder untuk merubah bentuk transaction_list()"""
te = TransactionEncoder()
te_ary = te.fit(transaction_list).transform(transaction_list)
df2 = pd.DataFrame(te_ary, columns=te.columns_)
"""Sekarang kita terapkan Apriori. Kita akan menggunakan parameter min_threshold (nilai ambang batas yang ditentukan) dalam aturan asosiasi untuk metrik lift menjadi 1,0 karena jika kurang dari satu, maka kedua item tersebut kemungkinan tidak akan dibeli bersama. Kita akan mengurutkan nilai berdasarkan keyakinan untuk melihat kemungkinan suatu barang dibeli jika pendahulunya dibeli."""
frequent_itemsets = apriori(df2, min_support=0.01, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift" , min_threshold=1.0)
metrix = pd.DataFrame(rules)
metrix[['antecedents','consequents', 'support', 'confidence', 'lift']].sort_values('lift', ascending=False)
"""# **Kesimpulan**
Penjelasan nilai-nilai metrik (support, confidence, dan lift)!
**Berdasarkan analisis dengan nilai min_support sebesar 0.01, adapun hasil beberapa aturan asosiasi yang menunjukkan item yang sering dibeli bersamaan antara lain:**
1. Coffee dan Bread.
2. Medialuna dan Coffee.
3. Pastry dan Coffee.
4. Tea dan Coffee.
**Kesimpulannya secara garis besar:**
Aturan-aturan ini menunjukkan bahwa kombinasi produk-produk tersebut memiliki tingkat kejadian yang tinggi, dan pelanggan cenderung membeli item tersebut bersamaan. Ini dapat memberikan wawasan berharga untuk strategi pemasaran, penempatan produk di toko, atau penawaran bundel yang dapat meningkatkan penjualan dan kepuasan pelanggan. Karena Algoritma Apriori membantu mengidentifikasi aturan asosiasi yang dapat memberikan wawasan tentang kecenderungan pelanggan membeli produk bersamaan.
Refrensi Serupa:
https://www.kaggle.com/code/xvivancos/market-basket-analysis
"""