Market Basket Analysis Using R

IRSYIFA MAYZELA AFNAN
6 min readJan 15, 2021

--

Assalamualaikum wr.wb. Hello data scientist!

Market Basket Analysis adalah salah satu teknik utama yang digunakan oleh pengecer besar untuk mengungkapkan asosiasi antar item. Ini bekerja dengan mencari kombinasi item yang sering terjadi bersamaan dalam transaksi. Dengan kata lain, ini memungkinkan pengecer untuk mengidentifikasi hubungan antara barang yang dibeli orang.

Aturan Asosiasi banyak digunakan untuk menganalisis keranjang ritel atau data transaksi, dan dimaksudkan untuk mengidentifikasi aturan-aturan kuat yang ditemukan dalam data transaksi menggunakan ukuran-ukuran yang menarik, berdasarkan konsep aturan yang kuat.

Bagaimana cara menggunakannya?

Dalam ritel, sebagian besar pembelian dibeli secara spontan. Market Basket Analysis memberikan petunjuk tentang apa yang mungkin telah dibeli pelanggan jika ide itu muncul pada mereka. Oleh karena itu, sebagai langkah awal,Market Basket Analysis dapat digunakan untuk menentukan lokasi dan promosi barang di dalam toko. Jika, seperti yang telah diamati, pembeli boneka Barbie lebih cenderung membeli permen, maka permen dengan margin tinggi dapat ditempatkan di dekat pajangan boneka Barbie.

Aturan Asosiasi

Ada banyak cara untuk melihat kesamaan antar item. Ini adalah teknik yang termasuk dalam payung umum dari asosiasi. Hasil dari jenis teknik ini, dalam istilah sederhana, adalah seperangkat aturan yang dapat dipahami sebagai “jika ini, maka itu”.

Aplikasi

Jadi barang apa yang sedang kita bicarakan? Ada banyak penerapan asosiasi, diantaranya :

Ø Rekomendasi produk — seperti “pelanggan yang membeli itu, juga membeli ini”

Ø Rekomendasi musik — seperti rekomendasi artis Last FM

Dalam postingan ini kita akan fokus pada aplikasi ritel — itu sederhana, intuitif, dan dataset dikemas dengan R sehingga dapat diulang.

The Groceries Dataset

Data dapat di download di Groceries dataset

Bayangkan 10.000 kwitansi ada di meja Anda. Setiap tanda terima mewakili transaksi dengan barang yang dibeli. Tanda terima adalah representasi dari barang-barang yang masuk ke keranjang pelanggan — dan karena itu ‘Market Basket Analysis’.

Itulah isi Kumpulan Data Bahan Makanan: kumpulan tanda terima dengan setiap baris mewakili 1 tanda terima dan item yang dibeli. Setiap baris disebut transaksi dan setiap kolom dalam satu baris mewakili item.

A little bit of Math

Saya telah membahas konsep Item dan Item Sets. Yang dapat dibaca sebagai “jika pengguna membeli item di set item di sisi kiri, maka pengguna kemungkinan akan membeli item di sisi kanan juga”. Contoh yang lebih dapat dibaca manusia adalah:

{kopi, gula} => {susu}

Jika pelanggan membeli kopi dan gula, mereka juga cenderung membeli susu.

Dengan ini kita dapat memahami tiga rasio penting; support,confidence, dan lift. Kami menjelaskan pentingnya hal ini dalam poin-poin berikut, tetapi jika Anda tertarik dengan definisi matematika formal, Anda dapat menemukannya di wikipedia.

· Support: Bagian dari kumpulan item kami yang ada di dataset kami.

· Confidence: probabilitas bahwa aturan benar untuk transaksi baru dengan item di sebelah kiri.

· Lift: Rasio yang menurut keyakinan suatu aturan melebihi keyakinan yang diharapkan.

Catatan: jika lift adalah 1 itu menunjukkan bahwa barang-barang di kiri dan kanan tidak saling terkait.

Apriori Recommendation with R

Pertama, dimulai dengan menginstall packages berikut :

# install Packages
install.packages("arules")
install.packages("arulesViz")
install.packages("datasets")

setelah ketiga packages ter- Install , kemudian panggil libraries dan data set dengan menggunakan syntax berikut:

# Load the Libraries
library(arules)
library(arulesViz)
library(datasets)
#Load the data set
data(Groceries)

Mari kita mencoba meng-explore data dalam bentuk plot untuk melihat grafik dari data Groceries.

# Create an item frequency plot for the top 20 items
itemFrequencyPlot(Groceries,topN=20,type="absolute")

Dari rasio yang telah dijelaskan sebelumnya bahwa kita harus melebihi support dan confidence minimum yang diperlukan.

- Support minimum ditetapkan menjadi 0,001
- confidence minimum ditetapkan menjadi 0,8
- Kami kemudian menunjukkan 5 rules teratas

# Get the rules
rules <- apriori(Groceries, parameter = list(supp = 0.001, conf = 0.8))

# Show the top 5 rules, but only 2 digits
options(digits=2)
inspect(rules[1:5])

maka output dapat dilihat pada gambar dibawah ini.

ini dapat dibaca dengan mudah, misalnya pada baris [3]: jika seseorang membeli yogurt dan sereal, mereka 81% cenderung membeli susu murni juga. Sehingga kita mendapatkan ringkasan tentang aturan yang memberi kita beberapa informasi menarik seperti:
Ø Jumlah aturan yang dihasilkan: 410
Ø Distribusi aturan berdasarkan panjang: aturan terbanyak terdiri dari 4 item
Ø Ringkasan ukuran kualitas: menarik untuk melihat rentang dari support, lift, dan confidence.
Ø The information on the data mined: total data mined, and minimum parameters.

Memilah barang

Masalah pertama yang kita lihat di sini adalah aturan tidak diurutkan. Seringkali kita menginginkan aturan yang paling relevan terlebih dahulu. Katakanlah kami ingin memiliki aturan yang paling mungkin.

Kita dapat dengan mudah mengurutkan berdasarkan confidence dengan menjalankan syntax berikut

rules<-sort(rules, by="confidence", decreasing=TRUE)

Sekarang 5 hasil teratas kami akan diurutkan berdasarkan keyakinan dan oleh karena itu aturan yang paling relevan akan muncul seperti pada gambar berikut.

Redundansi
Terkadang, aturan akan berulang. Redundansi menunjukkan bahwa satu item mungkin diberikan. Sebagai seorang analis, Anda dapat memilih untuk melepaskan item dari dataset. Atau, Anda dapat menghapus aturan redundan yang dibuat. Kita dapat menghilangkan aturan berulang ini menggunakan syntax berikut :

subset.matrix <- is.subset(rules, rules)
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA
redundant <- colSums(subset.matrix, na.rm=T) >= 1
rules.pruned <- rules[!redundant]
rules<-rules.pruned

Targeting Items

Sekarang kita tahu cara membuat aturan, membatasi output, katakanlah kita ingin menargetkan item untuk menghasilkan aturan. Ada dua jenis target yang mungkin diminati yang diilustrasikan dengan contoh “whole milk”:
1. Apa yang kemungkinan besar akan dibeli pelanggan sebelum membeli susu murni?
2. Apa yang kemungkinan besar akan dibeli pelanggan jika mereka membeli susu murni?

Menjawab pertanyaan pertama kita menyesuaikan fungsi apriori () kita sebagai berikut:

rules<-apriori(data=Groceries, parameter=list(supp=0.001,conf = 0.08), 
appearance = list(default="lhs",rhs="whole milk"),
control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:5])

Maka output terlihat seperti pada gambar berikut.

Demikian juga, kita dapat mengatur sisi kiri menjadi “whole milk”, Perhatikan hal-hal berikut:
Ø Kami menetapkan kepercayaan menjadi 0,15 karena kami tidak mendapatkan aturan dengan 0,8
ØKami menetapkan panjang minimal 2 untuk menghindari item sisi kiri kosong

rules<-apriori(data=Groceries, parameter=list(supp=0.001,conf = 0.15,minlen=2), 
appearance = list(default="rhs",lhs="whole milk"),
control = list(verbose=F))
rules<-sort(rules, decreasing=TRUE,by="confidence")
inspect(rules[1:6])

Maka output terlihat seperti pada gambar berikut.

Visualization

Langkah terakhir yaitu visualisasi. Saya ingin ingin memetakan aturan dalam grafik. Kita dapat melakukannya dengan menggunakan library yang disebut “arulesViz”.

library(arulesViz)
plot(rules,method="graph",interactive=TRUE,shading=NA)

Maka kita akan mendapatkan grafik bagus yang dapat Anda gerakkan agar terlihat seperti ini:

Semoga artikel ini bermanfaat. Selamat mencoba dan Terima kasih !

Referensi

https://medium.com/@yolandawiyono98/market-basket-analysis-with-r-8001417a8e29

--

--