Project Machine Learning for Retail with R: Product Packaging
Halo-halo, hari ini saya mau berbagi hasil proyek dari belajar data science beberapa bulan lalu. Selama 2 bulan vakum karena ada beberapa kegiatan yang harus dilakukan. Benar juga, seberapa banyaknya ilmu yang sudah dimiliki, tetapi tidak dibagikan atau sekadar ditulis, maka ilmu itu akan tertanam begitu saja tanpa pelestarian lebih lanjut, seperti belajar sekarang ini. Kalau lama vakum, serasa belajar baru lagi. Ya namanya proses juga pasti ada up and down-nya.
Oke, langsung saja, saya akan menjelaskan secara singkat tentang proyek ini. Proyek ini bertujuan untuk membuat paket yang inovatif. Beberapa produk (products) yang dijual sebelumnya tidak laku, tetapi akan mempunyai nilai jual apabila ikut dipaketkan dengan produk lainnya. Tugas proyek ini untuk mengidentifikasi produk apa saja jika dipaketkan memiliki nilai jual sehingga dapat meningkatkan revenue dan menjaga hubungan (relationship) dari customer agar lebih loyal.
Proyek ini memiliki 3 tujuan, yaitu:
1. Mendapatkan insight top 10 dan bottom 10 dari produk yang terjual.
2. Mendapatkan daftar seluruh kombinasi paket produk dengan korelasi yang kuat.
3. Mendapatkan daftar seluruh kombinasi paket produk dengan item tertentu.
Step 1. Reading Dataset (Use Function write from packages arules)
Jalankan codes di bawah ini
Step 2. Viewing The Top 10 Products
Pada step 2, kita diuji untuk menampilkan 10 produk yang laku terjual. Clue-nya menggunakan function itemFrequency dan names untuk menampilkan seluruh produknya, serta sort dan data.frame untuk mennyortir 10 produk tertinggi penjualannya, jalankan codes berikut yang telah dirancang di R.
Jika berhasil menjalankan codes di atas, maka outputnya adalah sebagai berikut.
Dari output yang ditampilkan, ada 69 produk yang tersedia pada dataset tersebut. Kemudian, dilakukan penyortiran 10 produk teratas dengan function sort() dan ditampilkan 10 produk tersebut beserta jumlah yang telah terjual dari produk itu. Shampo Biasa memiliki jumlah penjualan tertinggi sebesar 2075 unit dan Wedges Hitam berada di posisi 10 dari jumlah penjualannya sebesar 849 unit.
Step 3. Viewing The Bottom 10 Products
Sama seperti step 2, kita akan menggunakan function sort dan data.frame untuk menampilkan 10 produk yang memiliki jumlah penjualan terendah. Jalankan codes berikut di R:
Jika codes yang diketikkan benar, maka output yang dihasilkan adalah berikut.
Dari output, produk yang memiliki jumlah penjualan terendah adalah Celana Jeans Sobek Pria sebesar 9 unit dan jumlah penjualan 10 terendah adalah produk Dompet Unisex sebesar 75 unit.
Step 4. Creating The Interesting Product Combinations
Kombinasi produk yang menarik memiliki pengertian sebagai berikut:
- Memiliki asosiasi atau hubungan erat.
- Kombinasi produk minimal 2 item, dan maksimum 3 item.
- Kombinasi produk itu muncul setidaknya 10 dari dari seluruh transaksi.
- Memiliki tingkat confidence minimal 50 persen.
Asosiasi yang kuat ditentukan oleh beberapa hal, yaitu:
support, nilai confidence, dan nilai lift.
- Support
Probabilitas pelanggan membeli beberapa produk secara bersamaan dari seluruh transaksi. Nilai support sebuah item dirumuskan sebagai berikut:
2. Confidence (Tingkat Kepercayaan)
Probabilitas kejadian beberapa produk dibeli bersamaan dengan sebuah produk. Contoh: jika ada n transaksi dimana A dibeli dan ada m transaksi dengan A dan B dibeli bersamaan, maka confidence dari aturan if A then B adalah m/n. Nilai confidence berada di rentang 0–1. Confidence = 0 berarti jika suatu pelanggan membeli produk A maka kemungkinan 0 % kemungkinan pelanggan tersebut membeli produk B (pada rules: A => B, dibaca jika A dibeli maka B dibeli). Semakin tinggi nilai confidence berarti semakin tinggi kemungkinan untuk membeli produk secara bersamaan.
3. Lift
Kekuatan aturan asosiasi dilihat dengan cara melihat nilai liftnya. Nilai lift lebih dari 1 mengindikasikan tingkat asosiasi yang positif apabila suatu produk dibeli secara bersamaan (Misalnya, jika produk A semakin banyak dibeli maka produk B kemungkinan juga semakin banyak dibeli). Jika nilai lift = 1 berarti tidak ada efek dari asosiasi A dan B, sedangkan jika nilai lift kurang dari 1 mengindikasikan bahwa tingkat asosiasi yang negatif (Misalnya, jika produk A yang dibeli semakin meningkat maka kemungkinan produk B yang dibeli semakin menurun dan sebaliknya).
Script R yang berhasil dibuat adalah berikut.
Jika codes yang diketikkan telah benar, maka output yang ditampilkan adalah sebagai berikut.
Salah satu cara baca dari output di atas: Jika Tas Makeup dan Tas Pinggang Wanita dibeli maka kemungkinan 87,8% pelanggan akan membeli Baju Renang Anak Perempuan dengan tingkat confidence 1,04% dari data transaksi yang melibatkan Tas Makeup dan Tas Pinggang Wanita. Aturan asosiasinya memiliki nilai lift > 1 mengindikasikan bahwa aturannya berpengaruh positif. Begitu juga cara baca untuk ke-9 rules lainnya.
Step 5. Packaging with Slow Moving Product
Slow-moving item adalah produk yang pergerakan penjualannya lambat atau kurang cepat. Ini akan bermasalah apabila item produk tersebut masih menumpuk. Dua item yang dimaksud adalah “Tas Makeup” dan “Baju Renang Pria Anak-anak”.
Masing-masing produk tersebut dikeluarkan 3 rules yang asosiasinya paling kuat, sehingga total ada 6 rules. Persyaratan-persyaratan asosiasi kuat ini masih sama dengan yang telah disebutkan sebelumnya, kecuali tingkat confidence dicoba pada tingkat minimal 0,1.
Adapun codes yang telah dibuat adalah sebagai berikut. Silakan dijalankan pada IDE masing-masing.
Adapun output yang dihasilkan
Sehingga hasil dari output:
Dalam memaketkan Tas Makeup agar penjualannya semakin cepat, maka rulesnya yang mungkin, yaitu:
- Jika Seorang Customer membeli Baju Renang Anak Perempuan dan Tas Pinggang Wanita maka kemungkinan 80% juga membeli Tas Makeup karena mewakili 1,04% dari penggunaan data transaksi yang melibatkan pembelian Baju Renang Anak Perempuan dan Tas Pinggang Wanita.
- Jika Seorang Customer membeli Baju Renang Anak Perempuan dan Tas Ransel Mini maka kemungkinan 79,59% juga membeli Tas Makeup karena mewakili 1,13% dari penggunaan data transaksi yang melibatkan pembelian Baju Renang Anak Perempuan dan Tas Ransel Mini.
- Jika Seorang Customer membeli Baju Renang Anak Perempuan dan Celana Pendek Green/Hijau maka kemungkinan 77,77% juga membeli Tas Makeup karena mewakili 1,01% dari penggunaan data transaksi yang melibatkan pembelian Baju Renang Anak Perempuan dan Celana Pendek Green/Hijau.
Dengan begini terdapat 3 pemaketan yang melibatkan Tas Makeup:
- Baju Renang Anak Perempuan-Tas Pinggang Wanita ->Tas Makeup.
- Baju Renang Anak Perempuan-Tas Ransel Mini -> Tas Makeup.
- Baju Renang Anak Perempuan-Celana Pendek Green/Hijau -> Tas Makeup.
Aturan asosiasi dari pemaketan Tas Makeup berpengaruh positif terhadap pembelian karena nilai lift > 1 dari ketiga rules yang tersedia.
Sedangkan, untuk pemaketan Baju Renang Pria Anak memiliki rules berikut:
- Jika seorang Customer membeli Gembok Koper dan Tas Waist Bag maka kemungkinan 27,4% juga membeli Baju Renang Pria Anak karena mewakili 0,4% dari penggunaan data transaksi yang melibatkan pembelian Gembok Koper dan Tas Waist Bag.
- Jika seorang Customer membeli Flat Shoes Ballerina dan Gembok Koper maka kemungkinan 18,67% juga membeli Baju Renang Pria Anak karena mewakili 0,4% dari penggunaan data transaksi yang melibatkan pembelian Flat Shoes Ballerina dan Gembok Koper.
- Jika seorang Customer membeli Celana Jeans Sobek Wanita dan Jeans Jumbo maka kemungkinan 12,1% juga membeli Baju Renang Pria Anak karena mewakili 0,5% dari penggunaan data traansaksi yang melibatkan pembelian Celana Jeans Sobek Wanita dan Jeans Jumbo.
Dengan begini terdapat 3 pemaketan yang melibatkan Baju Renang Pria:
- Gembok Koper-Tas Waist Bag ->Baju Renang Pria.
- Flat Shoes Ballerina-Gembok Koper -> Baju Renang Pria.
- Celana Jeans Sobek Wanita-Jeans Jumbo -> Baju Renang Pria.
Aturan asosiasi dari pemaketan Baju Renang Pria berpengaruh positif terhadap pembelian karena nilai lift > 1 dari ketiga rules yang tersedia.
R codes tersedia di link RPubs saya:
https://rpubs.com/Nurulfad/843686
Postingan belajar mengenai codes di Market Basket Analysis akan diposting di kemudian hari.