Market Basket Analysis (MBA) dengan Association Rules

Assalamu’alaikum Mate….

What’s Up Data Enthusiast !!

today, I’m going to share pengetahuan ana terkait dengan Associatioan Rule (aturan asosiasi). Pasti semua pembaca yang membaca tulisan ini pernah dong ya main ke supermarket, dan membeli beberapa kebutuhan disana. Pernah gak sih mate mikir kalau terdapat beberapa barang yang kayaknya ditaruh sengaja berdekatan, misal sikat gigi dan odol atau buku dan pulpen. Hal ini emang sengaja ditata demikian oleh pemilik supermarket tersebut.

Selain barang yang berdekatan, suka ada promo atau diskon semisal beli sepatu gratis kaos kaki, dan lain sebagainya. Naah… hal semacam ini dapat kita pelajari di MBA ini, tujuannya untuk mengetahui pola belanja konsumen di suatu supermarket.

MBA ini salah satu tujuannya untuk melihat pola belanja konsumen yang bisa sangat bermanfaat untuk penataan barang didalam supermarket. Pola belanja konsumen ini nanti akan dilihat dari barang yang dibeli, dengan itulah nanti kita dapat mempelajari bagaimana pola belanja konsumen, pola pemasaran hingga bagaimana peta pemetaan barang yang akan dijual didalam supermarket, agar barang-barang yang sering dibeli oleh konsumen itu saling berdekatan, dan hal ini sangat berguna untuk pemilik supermarket ini. Selain itu informasi dari analisis ini dapat digunakan untuk iklan pembelian barang, misal beli sepatu gratis kaos kaki dan lain sebagainya.

Udah bisa kebayang dong skarang ? …

kalau udah, let’s do it !!

Seperti biasa, langkah pertama adalah persiapkan segala package yang dibutuhin didalam analisis kali ini.

library(arules)
library(arulesViz)

Selanjutnya adalah import data into R

groceries <- read.transactions("http://www.sci.csueastbay.edu/~esuess/classes/Statistics_6620/Presentations/ml13/groceries.csv",
sep = ",")
summary(groceries)

Berdasarkan output pada gambar ada beberpa informasi yang dapat kita simpulkan adalah, ada sebanyak 9835 transaksi dan 169 item. terdapat 5 produk yang banyak dibeli oleh para konsumen yaitu whole milk sebanyak 2513, other vegetables 1903, 1809 rolls/buns soda sebanyak 1715 dan yogurt sebanyak 1372.

terdapat 1 barang yang dibeli sebanyak 2159 kali, terbeli 2 kali sebanyak 1643 dan setrusnya.

Most frequent items juga dapat disajikan dengan barchart sebagai berikut

itemFrequencyPlot(groceries,typpe="absolute", topN=10)

Berikutnya, ana ingin melihat jumlah barang saat dibeli dari data transaksi, sebagai berikut

tabel <- crossTable(groceries, sort=TRUE)
tabel[1:5,1:5]

Berdasarkan ouptu cross tabulasi diatas, dapat dijelaskan bahwa konsumen yang membeli whole milk dan vegetables 736, membeli yogurt dan whole milk sebanyak 551 dan sebagainya.

rules <- apriori(groceries, parameter = list(supp = 0.03, conf = 0.2))
rules
# set of 26 rules

sehingga yang terjadi adalah 26 aturan ketika menggunakan support 0.03 dan confidance 0,2, barangkali akan menjadi lebih banyak aturan jika nilai supportnya lebih diperkecil lagi menjadi 0,001 artinya ada 1 barang terbeli dalam 1000 transaksi.

inspect(sort(rules))

ini adalah hasil dari Arule metode apriori, dapat dijelaskan bahwa saat seseorang membeli other vegetables maka dia akan membeli whole milk dengan support dukungan data sebanyak 25,5% atau sekitar 25 per seratus barang kedua barang tersebut terbeli bersamaan dengan tingkat kepercayaan 25,5% dan nilai lift ratio 1,51 dengan jumlah sebanyak 736.

hint: jika nilai lift ratio jika > 1, maka menunjukan informasi yang positif atau berpengaruh, jika lift ratio = 1 maka artinya sama, dan jika < 1 maka artinya informasi yang didapatkan tidak terlalu berpengaruh.

ada banyak barang lain yang informasi cukup berpengaruh dari output diatas, seperti saat seseorang membeli pastry dia akan membeli whole milk, mungkin para konsumen hobinya santai sore nunggu sunset sambil menikmati kue kering dan segelas susu murni :D.

ada juga yang menarik adalah saat membeli sausage maka konsumen akan membeli rolls/buns, ini pasti emak emak super power yang mau buat sosis gulung buat keluarganya dirumah.

crossTable(groceries, measure = "chi", sort = T)[1:5,1:5]
crossTable(groceries, measure = "chi", sort = T)[1:5,1:5]

dari kelima barang diatas, dapat dilihat bahwa hampir semuanya mempunyai nilai lift ratio > 1 artinya informasi yang didapatkan berpengaruh atau cukup mengangkat. Namun tidak untuk pembelian soda dan whole milk, dan pembelian soda dan other vegetables mempunyai nilai lift rasio < 1 sehingga informasinya kurang berpengaruh.

namun dari pengujian chi square atau independensi antar barang, semua pasangan barang yang dibeli mempunyai nilai chi square < 5% artinya tidak ada independensi atau ada ketergantungan antar barang.

hint : nilai chi square ini sangat membantu memperkuat pendapat kita saat melakukan pengujian dengan melihat nilai lift ratio, sehingga banyak sekali pertimbangan yang dapat dilakukan untuk menentukan apakah kedua barang itu dapat dipasangkan secra bersamaan atau berada di rak penjualan yang saling berdekatan.

Selanjutnya adalah melakukan visualisasi (biar enak dilihat)

plot(sort(rules, by="lift"), method = "graph", control = list(type="items"))

Berdasarkan plot informasi menarik yang dapat kita simpulkan adalah hampirr semua barang yang dibeli akan membeli whole milk karena mempunyai bulatan yang paling besar yang menunjukan nilai support yang tinggi. Sedangakan root vegerables dan other vegetables mempunyai ikatan yang kuat (warnya paling merah) artinya nilai liftnya tinggi atau kedua barang tersebut selalu dibeli secara bersamaan.

here we are, mungkin sekian dulu tutorial singkat ini, harapannya para mate mulai sedikit memahami pengaplikasian dari MBA ini, kalau ada yang ingin di diskusikan jangan sungkan untuk menghubungi melalui email berikut

email : 16611081@students.uii.ac.id
linkedIn : https://www.linkedin.com/in/alfazrin-banapon-657428171/

--

--

I’m a Data Scientist who never stop learning.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store