Bahasa R
# Menginstall package arules
install.packages('arules')
library(arules)
# Mengimpor dataset
dataset = read.csv('optimisasi_retail.csv', header = FALSE)
dataset = read.transactions('optimisasi_retail.csv', sep = ',', rm.duplicates = TRUE)
summary(dataset)
itemFrequencyPlot(dataset, topN = 10)
# Training apriori ke dataset
rules = apriori(data = dataset, parameter = list(support = 0.004, confidence = 0.25))
# Visualisasi hasil apriori
inspect(sort(rules, by = 'lift')[1:10])
Penjelasan:
- Line 2 menginstall package arules. Package ini khusus dibuat untuk metode apriori (arules artinya association rules). Jika di Rstudio sudah terinstall package ini, maka abaikan saja line 2.
- Line 3 menjalankan package arules yang sudah diinstall di line 2.
- Line 6 mengimpor datasetnya. Kita set header = FALSE agar kolom paling atas di dataset bukanlah barang belanjaan yang dibeli, melainkan hanya kolom kosong. Jika sudah coba klik 2x pada dataset, maka tampilannya sebagai berikut:

- Line 7 sama seperti line 6, hanya saja kita menggunakan perintah dari package arules yaitu read.transactions. Mengapa tidak langsung menggunakan dataset yang dihasilkan dari line 6? Karena kita tidak bisa menggunakan format di atas. Kita harus menggunakan format khusus untuk package arules. Kita set parameter sep=’,’ (separatornya adalah koma), dan rm.duplicates=TRUE (artinya kita tidak ingin ada duplikat 2 item dalam 1 transaksi, misalnya kasir tidak sengaja scan barcode keju sebanyak 2x, padahal barangnya hanya 1 buah saja misalnya).
Note: Sebenarnya line 6 tidak perlu. Untuk memudahkan para pembaca melihat isi datasetnya di R, maka kita cukup tulis read.csv. Hasil dari line 7 adalah format dari package arules. Tampilannya sebagai berikut:

- Line 8 adalah perintah untuk melihat ringkasan dari dataset. Jika dieksekusi, maka tampilannya adalah sebagai berikut:

Bisa dilihat dari tampilan di atas bahwa kita memiliki 7501 baris dan 117 kolom. berarti ada 7501 transaksi dan 117 item-item yang dibeli. Density yang dimiliki adalah 0.033 (3%) yang artinya proporsi itemnya kosong adalah 3%. Kemudian kita melihat frekuensi item yang dibeli, yang tertinggi adalah air mineral, diikuti telur, dan seterusnya.
- Line 9 adalah perintah untuk menampilan item apa saja yang sudah dibeli oleh pelanggan yang diurutkan mulai dari yang terbanyak. Kita ingin menampilkan 10 item terbanyak saja (topN = 10). Jika ingin item lebih banyak yang ditampilkan, cukup ganti nilai topN nya. Tampilan untuk 10 item adalah sebagai berikut:

- Line 12 adalah perintah untuk mentraining datasetnya dan mengaplikasi algoritma apriori. Kita definisikan variabel rules untuk modelnya, dan kita gunakan perintah apriori (dari package arules). Untuk melihat parameter apa saja yang diperlukan, cukup arahkan kursor ke apriori dan ketik F1 di keyboard, maka tampilannya sebagai berikut:

Untuk parameter apriori kita tetapkan parameternya berupa list(support = 0.004, confidence = 0.2). Artinya nilai minimum support yang kita ijinkan untuk membuat hubungan apriori adalah 0.004 dan confidence nya 0.25.
- Line 15 adalah melihat hubungan apriori yang dihasilkan. Kita urutkan berdasarkan nilai lift-nya. Hasilnya tampak sebagai berikut:

Dengan demikian kita mengetahui bahwa orang yang membeli krim, kemungkinan besar ia membeli ayam. Mereka yang membeli pasta, juga membeli daging tanpa tulang, dan seterusnya.
Perlu diperhatikan bahwa penjualan tertinggi bukan berarti pasti memiliki apriori. Seperti pada line 9, kita bisa melihat bahwa air mineral adalah item dengan penjualan tertinggi. Walau demikian kecenderungan apriorinya bukan 5 peringkat pertama (ia peringkat ke 6 air mineral, rempah-rempah –> daging sapi giling).
Lalu keputusan dan langkah apa yang bisa kita ambil setelah mendapatkan hasil di atas? Anggap saja kita menggunakan 5 hubungan apriori teratas, maka kita tidak langsung mendekatkan produk-produk tersebut saling berdasarkan berdasarkan hubungan apriorinya masing-masing. Kita harus tanyakan dulu ke lantai produksi (mereka yang mendesain layout supermarket) mana yang paling memungkinkan untuk dilakukan?
Ada hal-hal yang harus dipertimbangkan oleh pengambil keputusan. Misalnya, apakah ada alasan logis krim harus dekat dengan keju? Bagaimana jika krim dan keju justru harus dijauhkan, agar mereka setelah memberi krim dan saat mau mencari keju, biarkan pembeli jalan-jalan dulu (putar-putar mencari keju) sehingga ada kemungkinan ia juga mengambil produk-produk lain di antara keduanya (krim – keju).
Semua keputusan harus betul-betul masak dan penuh pertimbangan. Mengapa demikian, karena dalam dunia bisnis kita harus mempertimbangkan banyak aspek, misal kesan konsumen terhadap layout baru kita, bagaimana image kita di hadapan konsumen setelah perubahan layout, dan sebagainya.
Saya harap metode apriori ini yang merupakan bagian dari ARL bisa memberikan pembaca gambaran bahwa AI dan ML bisa diaplikasikan dalam dunia bisnis, khususnya ritel. Semoga pembaca juga bisa mengaplikasikan apriori untuk permasalahan di dunia nyata lainnya.
Pantau terus web saya ini, karena saya akan terus berbagi teknik AI lainnya beserta aplikasinya.
Terima kasih dan semoga bermanfaat!
