1 Pendahuluan

1.1 Latar Belakang

Data transaksi belanja merupakan salah satu sumber data yang sangat kaya dengan informasi pada bisnis retail. Setidaknya dalam data tersebut, terdapat informasi berupa waktu berbelanja, barang yang dibelanjakan, dan berapa nominal yang dibayarkan oleh pelanggan.

Jika kita bisa mengeksplorasi dan mengeksploitasi data tersebut, kita bisa mendapatkan insight(s) yang menarik dan berguna bagi kelangsungan bisnis retail.

Kali ini kita akan mengeksplorasi data sales harian dari ApakahMart cabang Bekasi.


1.2 Tujuan

Salah satu pertanyaan yang biasa terjadi pada bisnis retail adalah bagaimana cara kita menentukan produk mana saja yang bisa dijual secara bundling?


1.3 Data yang Digunakan

Data yang digunakan adalah data transaksi sales harian selama Januari 2020 hingga April 2020.


2 Sebelum Mulai Menghitung Produk Bundling

Sebelum masuk ke dalam algoritma apriori, saya akan cari beberapa informasi yang ada dalam data transaksi ini. Tujuannya adalah untuk mengecek apakah data transaksi ini bisa digunakan untuk membangun analisa produk bundling atau tidak.

Langkah pertama yang saya lakukan adalah menghapus sku PLAS TIK dari data transaksi karena sku tersebut bukanlah barang yang ‘dijual’.

Kemudian saya coba hitung berapa jenis sku yang dibeli oleh pelanggan. Hal yang dihitung adalah berapa jenisnya, bukan qty-nya yah.

Misalkan ada seorang pelanggan datang membeli:

  • 5 bungkus Indomie Ayam Bawang
  • 1 bungkus Indomie Kari Ayam
  • 1 kg telur

Maka dalam transaksi tersebut ada 3 jenis sku.

Sekarang kita akan hitung terlebih dahulu, ada berapa banyak jenis sku yang dibeli oleh pelanggan selama Januari 2020 - April 2020.

Ternyata setelah kita lihat, 45.8% dari semua transaksi dilakukan dengan hanya membeli 1 jenis sku saja. Sedangkan 22.2% dari semua transaksi dilakukan dengan membeli 2 jenis sku saja.

Mayoritas dari semua transaksi (68%) hanya membeli 1-2 jenis sku saja.

Mengapa informasi ini diperlukan?

Dalam membuat produk bundling, diperlukan data kombinasi sku yang dibeli oleh pelanggan dalam jumlah yang cukup.

Oleh karena jumlah data yang ada relatif terbatas, maka kita akan cek kemudian ada berapa banyak paket bundling yang bisa di-generate dari analisa ini.

Untuk lebih jelasnya, silakan dibaca penjelasan mengenai dasar teori analisa ini.


3 Dasar Teori

Ada berbagai macam cara untuk bisa melihat kesamaan dari beberapa produk yang dibeli oleh pelanggan. Umbrella terms dari teknik-teknik tersebut disebut dengan analisa association.

Output dari analisa ini disebut dengan rules yaitu:

predict the occurrence of an item based on the occurrences of other items in the transaction.

Penjelasan yang lebih mudah lagi adalah:

if this, then that…

Perlu diingat bahwa rules dibangun berdasarkan data transaksi yang ada.

3.1 a little bit of math

Misalkan:

  • Item produk saya tuliskan sebagai: \(I = \{i_1,i_2,i_3,...,i_n\}\)
  • Transaksi saya tuliskan sebagai: \(T = \{t_1,t_2,t_3,...,t_n\}\)
  • Setiap transaksi di \(T\) memiliki unique transaction id dan berisi item produk di \(I\).

Definisi resmi dari rules adalah:

if a user buys an item in the item set on the left hand side, then the user will likely buy the item on the right hand side too

Secara matematis dinotasikan sebagai: \(X \implies Y\), dimana \(X,Y \subseteq I\)

  • Setiap rules berisi dua himpunan item produk, yakni \(X\) dan \(Y\).
  • Sebagai contoh, rules akan ditulis sebagai berikut: \(\{i_1,i_2\} \implies \{i_k\}\).
  • Bagian kiri, yakni himpunan produk \((X)\) ditulis lhs.
  • Bagian kanan, yakni himpunan produk \((Y)\) ditulis rhs.

3.2 Contoh Sederhana

Misalkan saya memiliki data transaksi sebagai berikut:

Maka, himpunan item produk yang adalah sebagai berikut: \(I=\{Milk,Bread,Butter,Beer,Diaper\}\).

Sedangkan himpunan transaksi adalah sebagai berikut: \(T=\{1,2,3,4,5\}\).

Salah satu contoh rules dari data di atas adalah:

If a consumer buys butter and bread, then they are also likely to buy milk. Dinotasikan: \(\{Butter,Bread\} \implies \{Milk\}\)

Catatan Penting:

Implication means co-occurrence, not causality!


3.3 Association Rules Parameter

Dalam analisa asosiasi, ada tiga parameter utama yang akan kita hitung, yakni:

3.3.1 Support

Definisi:

Support is an indication of how frequently the itemset appears in the dataset.

Notasi: \(supp(X)=\frac{|\{t \in T,X \subseteq T\}|}{|T|}\)

Contoh:

Jika \(X=\{Beer,Diapers\}\), maka memiliki nilai support sebesar 20% (produk beer dan diapers bersamaan ditemukan pada 1 dari 5 transaksi)


3.3.2 Confidence

Definisi:

Confidence is an indication of how often the rule has been found to be true.

Confidence dari suatu rule \(X \implies Y\) dari data transaksi dihitung dari proporsi transaksi yang mengandung \(X\) dan juga mengandung \(Y\).

Notasi: \(conf(X \implies Y)=\frac{supp(X \cup Y)}{supp(X)}\)

Confidence bisa dilihat sebagai conditional probability \(P(E_Y|E_X)\), yakni peluang mendapatkan rhs pada saat transaksi mengandung lhs.

Contoh:

Rule \(\{Bread,Butter\} \implies \{milk\}\) memiliki nilai confidence = 100%.

Cara hitungnya:

\[conf(\{Bread,Butter\} \implies \{milk\})=\frac{supp(X \cup Y)}{supp(X)}\]

\[conf(\{Bread,Butter\} \implies \{milk\})=\frac{supp(\{Bread,Butter,Milk\})}{supp(\{Milk\})}\]

\[conf(\{Bread,Butter\} \implies \{milk\})=\frac{1/5}{1/5}=100\%\]

Kesimpulan dari contoh: setiap ada transaksi yang mengandung itemset \(\{Bread,Butter\}\) pasti selalu mengandung itemset \(\{milk\}\).


3.3.3 Lift

Definisi:

Rasio yang menunjukan apakah itemset \(X\) dan itemset \(Y\) independen atau tidak.

Jika:

  1. \(lift<100\%\), artinya lhs dan rhs saling meniadakan (barang substitusi).
  2. \(lift=100\%\), artinya lhs dan rhs independen (saling bebas).
  3. \(lift>100\%\), artinya lhs dan rhs saling bergantung.

Notasi: \(lift(X \implies Y)=\frac{supp(X \cup Y)}{supp(X)*supp(Y)}\)

Contoh:

Rule \(\{Milk, Bread\} \implies \{Butter\}\) memiliki nilai lift = 125%

Cara hitungnya:

\[lift(\{Milk, Bread\} \implies \{Butter\})=\frac{supp(X \cup Y)}{supp(X)*supp(Y)}\]

\[lift(\{Milk, Bread\} \implies \{Butter\})=\frac{supp(\{Milk, Bread,Butter\})}{supp(\{Milk, Bread\})*supp(\{Butter\})}\]

\[lift(\{Milk, Bread\} \implies \{Butter\})=\frac{1/5}{2/5*2/5}=125\%\]

Kesimpulan dari contoh: itemset lhs dan rhs saling bergantung.


4 Menentukan Produk Bundling

Setelah membaca penjelasan di atas, maka untuk menentukan produk apa saja yang akan di-bundling, kita akan melihat setidaknya dua parameter utama, yakni: confidence dan lift dengan syarat sebagai berikut:

  1. Support harus relatif besar, artinya kemunculan rules ini cukup banyak terjadi. Pada hasil output, nanti kita bisa melihat parameter bernama count.
  2. Confidence tinggi, misalkan \(>80\%\).
  3. Lift harus \(>100\%\)

4.1 Proses Perhitungan

Untuk menghitung semua kombinasi rules beserta parameternya, saya akan gunakan algoritma apriori.


5 Hasil Perhitungan

5.1 Overall Output

Algoritma apriori menghasilkan 36 buah rules sebagai berikut:

## set of 36 rules
## 
## rule length distribution (lhs + rhs):sizes
##  2  3  4 
## 19 15  2 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.000   2.000   2.000   2.528   3.000   4.000 
## 
## summary of quality measures:
##     support            confidence        coverage             lift       
##  Min.   :0.0005440   Min.   :0.4000   Min.   :0.001088   Min.   : 15.23  
##  1st Qu.:0.0006994   1st Qu.:0.4500   1st Qu.:0.001477   1st Qu.: 20.34  
##  Median :0.0010103   Median :0.4711   Median :0.001865   Median : 27.27  
##  Mean   :0.0015629   Mean   :0.4973   Mean   :0.003266   Mean   : 64.37  
##  3rd Qu.:0.0018068   3rd Qu.:0.5281   3rd Qu.:0.003478   3rd Qu.: 91.22  
##  Max.   :0.0080044   Max.   :0.7200   Max.   :0.019428   Max.   :211.82  
##      count       
##  Min.   :  7.00  
##  1st Qu.:  9.00  
##  Median : 13.00  
##  Mean   : 20.11  
##  3rd Qu.: 23.25  
##  Max.   :103.00  
## 
## mining info:
##  data ntransactions support confidence
##    tr         12868  0.0005        0.4

5.2 Detailed Rules

Mari kita lihat detail semua rules yang ada sebagai berikut:

Angka \(support\) akan berbanding lurus dengan \(count\), oleh karena itu bisa dipilih salah satu saja untuk menentukan rules mana yang banyak terjadi.

Dari rules yang ada, kita bisa lakukan beberapa analisa terkait nilai \(lift\).


5.2.1 Barang Substitusi

Ternyata kita dapatkan bahwa beberapa rules memiliki nilai \(lift \leq 100\%\), yakni:

Berdasarkan informasi ini, mungkin kita bisa menyusun strategi jika sku’s yang ada pada rules tersebut sedang habis atau limited stock. Terutama pada rules dengan \(count\) yang banyak.


5.2.2 Bundling Produk

Sekarang kita akan mengambil rules dengan nilai \(lift \geq 100\%\), yakni:

Didapatkan ada 9 buah rules yang bisa dijadikan calon bundling produk. Namun, ada beberapa catatan terkait temuan ini:

  1. \(count\) dari rules yang ada tergolong kecil. Artinya real cases dari rules ini relatif jarang terjadi.
  2. \(confidence\) yang ada juga masih di \(\leq 50\%\).

Berikut visualisasi dari rules tersebut:

6 Kesimpulan dan Saran

Saya pribadi menilai rules yang dihasilkan belum cukup konklusif untuk dijadikan produk bundling yang robust (ajeg).

Salah satu indikasi penyebabnya adalah minimnya jumlah kombinasi produk yang dimiliki pada data transaksi.

Oleh karena itu, jika data yang dikumpulkan semakin banyak, bisa jadi ke depannya bisa dihasilkan analisa yang lebih baik lagi.

ikanx101.github.io