BELAJAR ANALISIS DAN BAHASA PEMROGRAMAN

Market Basket Analysis Menggunakan R Part 1

 1. Introduction

Hai! Di kernel ini kita akan menggunakan algoritma Apriori untuk melakukan Market basket analysis. Market apa? Merupakan teknik yang digunakan oleh pengecer besar untuk mengungkap asosiasi antar item. Ini bekerja dengan mencari kombinasi item yang sering terjadi bersamaan dalam transaksi, memberikan informasi untuk memahami perilaku pembelian. Hasil dari jenis teknik ini, secara sederhana, adalah seperangkat aturan yang dapat dipahami sebagai "jika ini, maka itu". 

Pertama, penting untuk menentukan algoritma Apriori, termasuk beberapa konsep statistik (support, confidence, lift dan conviction) untuk memilih aturan yang menarik. Kemudian kita akan menggunakan kumpulan data yang berisi lebih dari 6.000 transaksi dari toko roti/Bread untuk menerapkan algoritma dan menemukan kombinasi produk yang dibeli bersama.

2 Association rules

Algoritme Apriori menghasilkan aturan asosiasi atau asosciation rule untuk kumpulan data tertentu. Asosciation rule menyiratkan bahwa jika item A muncul, maka item B juga terjadi dengan probabilitas tertentu. Mari kita lihat contohnya,

Transaction

Items

t1

{T-shirt, Trousers, Belt}

t2

{T-shirt, Jacket}

t3

{Jacket, Gloves}

t4

{T-shirt, Trousers, Jacket}

t5

{T-shirt, Trousers, Sneakers, Jacket, Belt}

t6

{Trousers, Sneakers, Belt}

t7

{Trousers, Belt, Sneakers}

Pada tabel di atas kita dapat melihat tujuh transaksi dari sebuah toko pakaian. Setiap transaksi menunjukkan barang yang dibeli dalam transaksi itu. Kita dapat mewakili itemnya sebagai item set seperti berikut:

I={i1,i2,...,ik}

Dalam kasus kita, ini mirip seperti :

I={T-shirt,Trousers,Belt,Jacket,Gloves,Sneakers}

Transaction diwakili oleh ekspresi berikut:

T={t1,t2,...,tn}

Contohnya :

t1={T-shirt,Trousers,Belt}

Kemudian, association rule didefinisikan sebagai implikasi dari bentuk:

XY, where XIYI and XY=0

Contohnya:

{T-shirt,Trousers}{Belt}

Pada bagian berikutnya kita akan mendefinisikan empat metrik untuk mengukur ketepatan rule.

2.1 Support

Support adalah indikasi seberapa sering kumpulan item muncul dalam kumpulan data.

supp(XY)=|XY|n

Dengan kata lain, ini adalah jumlah transaksi dengan X dan Y dibagi dengan jumlah total transaksi. rule tidak berguna untuk nilai support rendah. Mari kita lihat contoh yang berbeda menggunakan transaksi toko pakaian dari tabel sebelumnya.

supp(T-shirtTrousers)=37=43%
supp(TrousersBelt)=47=57%
supp(T-shirtBelt)=27=28%
supp({T-shirt,Trousers}{Belt})=27=28%

2.2 Confidence

Untuk rule/aturan X⇒Y, confidence menunjukkan persentase Y dibeli dengan X. Ini merupakan indikasi seberapa sering rule tersebut terbukti benar. 

conf(XY)=supp(XY)supp(X)

Misalnya, rule T-shirt⇒Trousers memiliki tingkat convidence 3/4, yang berarti bahwa untuk 75% transaksi yang berisi kaos, rule tersebut benar (75% dari frekuensi pelanggan membeli kaos, celana panjang juga dibeli). Tiga contoh lagi:

conf(TrousersBelt)=4/75/7=80%
conf(T-shirtBelt)=2/74/7=50%
conf({T-shirt,Trousers}{Belt})=2/73/7=66%

2.3 Lift

Aturan/ rule lift adalah rasio support yang diamati dengan yang diharapkan jika X dan Y independen, dan didefinisikan sebagai

lift(XY)=supp(XY)supp(X)supp(Y)

Nilai lift yang lebih tinggi menunjukkan asosiasi/associations yang lebih kuat. Mari kita lihat beberapa contohnya:

lift(T-shirtTrousers)=3/7(4/7)(5/7)=1.05
lift(TrousersBelt)=4/7(5/7)(4/7)=1.4
lift(T-shirtBelt)=2/7(4/7)(4/7)=0.875
lift({T-shirt,Trousers}{Belt})=2/7(3/7)(4/7)=1.17

2.4 Conviction

Conviction suatu aturan/rule didefinisikan sebagai
`
conv(XY)=1supp(Y)1conf(XY)

Hal ini dapat diartikan sebagai rasio frekuensi yang diharapkan bahwa X terjadi tanpa Y jika X dan Y independen dibagi dengan frekuensi pengamatan yang salah prediksi. Nilai yang tinggi berarti konsekuensinya sangat bergantung pada anteseden. Mari kita lihat beberapa contohnya:

conv(T-shirtTrousers)=15/713/4=1.14
conv(TrousersBelt)=14/714/5=2.14
conv(T-shirtBelt)=14/711/2=0.86
conv({T-shirt,Trousers}{Belt})=14/712/3=1.28

3 Loading Data
Pertama kita perlu memuat beberapa libraries dan import data kita. Kita bisa menggunakan fungsi read.transactions() dari library arules untuk membuat transactions object. Datanya bisa di download di sini

3.1 Transaction object

## transactions in sparse format with
##  6614 transactions (rows) and
##  104 items (columns)

3.2 Summary

## transactions as itemMatrix in sparse format with
##  6614 rows (elements/itemsets/transactions) and
##  104 columns (items) and a density of 0.02008705 
## 
## most frequent items:
##  Coffee   Bread     Tea    Cake  Pastry (Other) 
##    3188    2146     941     694     576    6272 
## 
## element (itemset/transaction) length distribution:
## sizes
##    1    2    3    4    5    6    7    8    9   10 
## 2556 2154 1078  546  187   67   18    3    2    3 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   1.000   2.000   2.089   3.000  10.000 
## 
## includes extended item information - examples:
##                     labels
## 1               Adjustment
## 2 Afternoon with the baker
## 3                Alfajores
## 
## includes extended transaction information - examples:
##   transactionID
## 1             1
## 2            10
## 3          1000

3.3 Structure

## Formal class 'transactions' [package "arules"] with 3 slots
##   ..@ data       :Formal class 'ngCMatrix' [package "Matrix"] with 5 slots
##   .. .. ..@ i       : int [1:13817] 11 63 80 19 80 11 93 14 45 11 ...
##   .. .. ..@ p       : int [1:6615] 0 1 3 5 7 9 11 15 16 17 ...
##   .. .. ..@ Dim     : int [1:2] 104 6614
##   .. .. ..@ Dimnames:List of 2
##   .. .. .. ..$ : NULL
##   .. .. .. ..$ : NULL
##   .. .. ..@ factors : list()
##   ..@ itemInfo   :'data.frame':  104 obs. of  1 variable:
##   .. ..$ labels: chr [1:104] "Adjustment" "Afternoon with the baker" "Alfajores" "Argentina Night" ...
##   ..@ itemsetInfo:'data.frame':  6614 obs. of  1 variable:
##   .. ..$ transactionID: chr [1:6614] "1" "10" "1000" "1001" ...

4. Data Dictionary

Kumpulan data berisi 15.010 observasi dan kolom ,
  • Date. Variabel kategori yang memberi tahu kita tanggal transaksi (format YYYY-MM-DD). Kolom tersebut mencakup tanggal dari 30/10/2016 hingga 09/04/2017.
  • Time. Variabel kategorikal yang memberi tahu kita waktu transaksi (format HH: MM: SS).
  • Transaction Variabel kuantitatif yang memungkinkan kita untuk membedakan transaksi. Baris yang memiliki nilai yang sama di bidang ini milik transaksi yang sama, itulah mengapa kumpulan data memiliki lebih sedikit transaction daripada observation.
  • Item. Variabel kategori yang berisi produk.
5. Data Analysis

Sebelum menerapkan algoritma Apriori pada kumpulan data, saya akan menunjukkan beberapa visualisasi untuk mempelajari lebih lanjut tentang transaksi. Misalnya, kita bisa menggunakan fungsi itemFrequencyPlot() untuk membuat plot bar frekuensi item, untuk melihat distribusi produk.

itemFrequencyPlot () memungkinkan kita menampilkan nilai absolut atau relatif. Jika absolut itu akan memplot frekuensi numerik dari setiap item secara independen. Jika relatif, ini akan menunjukkan berapa kali item tersebut muncul dibandingkan dengan yang lain, seperti yang ditunjukkan pada plot berikut.

Coffee adalah produk terlaris sejauh ini, diikuti oleh bread dan tea. Mari kita tampilkan beberapa visualisasi lain yang menjelaskan distribusi waktu menggunakan fungsi ggplot ().

Transaksi per bulan

Kumpulan data mencakup tanggal dari 30/10/2016 hingga 09/04/2017, itulah sebabnya kita memiliki sangat sedikit transaksi di bulan Oktober dan April.

Transaksi per hari kerja



Seperti yang bisa kita lihat, Sabtu adalah hari tersibuk di toko roti. Sebaliknya, Rabu adalah hari dengan transaksi yang lebih sedikit.

Transaksi per jam
Tidak banyak yang perlu dibicarakan dengan visualisasi ini. Hasilnya logis dan diharapkan.

Untuk Next Part kita akan bahas mengenai:
6.Apriori algorithm

Terimakasih



Market Basket Analysis Menggunakan R Part 1 Market Basket Analysis Menggunakan R Part 1 Reviewed by Jimmy Pujoseno on November 05, 2020 Rating: 5

No comments:

Recent Post

Powered by Blogger.