Association Rules — Market Basket Analysis dengan Python

Sriyanda Afrida W
10 min readJul 16, 2021

--

Photo by Stevepb on Pixaby

Analisis asosiasi atau association rule mining adalah teknik data mining untuk menemukan aturan assosiatif antara suatu kombinasi item (Mengetahui hubungan antara satu atribut dengan yang lainnya). Contoh aturan assosiatif dari analisa pembelian di suatu pasar swalayan contohnya adalah dapat diketahuinya berapa besar kemungkinan seorang pelanggan membeli roti bersamaan dengan susu. Dengan pengetahuan tersebut pemilik pasar swalayan dapat dengan mudah mengatur penempatan barangnya atau merancang kampanye pemasaran dengan memakai kupon diskon untuk kombinasi barang tertentu.

Beberapa hal yang perlu diperhatikan dalam aturan assosiatif, diantaranya. Dua parameter berupa Support dan Confidence. Support atau nilai penunjang yang merupakan persentase kombinasi item tersebut dalam database sedangkan confidence atau nilai kepastian yaitu kuatnya hubungan antar item dalam aturan assosiatif.

Contoh market basket analytics menggunakan algoritma apriori dengan aturan asosiasi di python — Process Life Cycle:

1. Define Problem Statement

  • Ruang Lingkup yang digunakan adalah Product Purchases.
  • Permasalahan yang ingin di selesaikan adalah membantu pihak retail dalam menentukan product bundling dan product placement dari data transaksi yang hendak digunakan.
  • Algoritma yang digunakan adalah Algoritma apriori. Algoritma ini digunakan agar komputer dapat mempelajari aturan asosiasi, mencari pola hubungan antar satu atau lebih item dalam suatu dataset.

2. Data Collection

  • Data collection merupkan proses pengumpulan data dari berbagai sumber internal maupun eksternal, dan memastikan bahwa informasi pada variable of interest (subjek yang akan dilakukan uji coba) pada data dapat digunakan secara sistematis yang memungkinkan seseorang dapat menjawab pertanyaan yang telah diidentifikasi sebelumnya.
  • Dataset yang digunakan pada project ini merupakan data transaksi penjualan dan distribusi berbagai macam produk dari tangan supplier, distributor kepada kustomer.

Klik link dibawah untuk mendownload dataset yang digunakan.

https://bit.ly/2USHhwA

Variable-variable dalam dataset yang digunakan:

  • InvoiceDate = Tanggal dan waktu pembelian barang
  • BRANCH_SPLR = ID dari cabang suplier
  • BRANCHNAME_SPLR = Merupakan kota cabang dari suplier
  • warehouseProductsID = Merupakan kode Gudang stok dari sebuah barang
  • BARCODEID = Merupakan kode barcode distribusi dari sebuah barang
  • StockCode = Merupakan kode stok dari sebuah barang
  • PRODUCT = Deskripsi dari produk
  • PRODUCT_CATEGORY = Kategori dari produk
  • Quantity = Jumlah barang yang dibeli pada sebuah transaksi
  • UnitPrice = Harga per unit barang dalam satuan dolar
  • UnitPriceRupiah = Harga per unit barang dalam satuan rupiah
  • oldCUSTID = ID lama dari pelanggan
  • CustomerID = ID dari pelanggan
  • CUSTNAME = Nama dari pelanggan
  • ADDRESS = Deskripsi alamat
  • KOTA = Deskripsi kota
  • PROVINSI = Deskripsi provinsi
  • NEGARA = Deskripsi Negara
  • CHANNELID_SPLR = ID dari suplier
  • CHANNELNAME_SPLR = Jenis channel suplier
  • SUBDISTID = ID dari distributor
  • SUBDIST_NAME = Nama dari distributor

3. Data Modeling

  • Data modeling adalah hubungan berbagai elemen data berbeda untuk mengetahui informasi yang dibutuhkan serta menekankan pada data apa yang dibutuhkan dan apa yang akan dilakukan pada data tersebut untuk suatu keperluan bisnis.
  • Pada data transaksi penjualan terdapat 4 variable utama yang akan digunakan dalam menyelesaikan project market basket analytics menggunakan algoritma apriori dengan aturan asosiasi, yaitu variable provinsi, Invoice No, Product Category dan Quantity.
  • Konsep logika database yang digunakan dalam project ini di desain kedalam 3 thapan yaitu Conceptual Design, Logical Design, dan Physical Design. Penggambaran desain database ini dibuat berdasarkan aturan DBMS (Database management system).

4. Data Quality Check and Remediation

  • Proses ini merupakan tahap yang berhubungan dengan mendiagnosis serta mengevaluasi masalah kualitas data. Proses ini dekat kaitannya dengan melakukan profiling terhadap data, memeriksa kualitas informasi yang terdapat pada data, mengidentifikasi dan menghilangkan informasi yang redudant atau kecatatan lainnya yang telah teridentifikasi sebelumnya.
  • Pre-coding, beberapa library python yang wajib ada dan digunakan pada project ini diantaranya pandas, mlxtend, dan apyori.
  • Data Pre-processing, merupakan proses mengubah data mentah atau biasa dikenal dengan raw data yang dikumpulkan dari berbagai sumber menjadi informasi yang lebih bersih dan bisa digunakan untuk pengolahan selanjutnya.

Data Cleansing mencakup proses membuang duplikasi data, memeriksa data yang inkonsisten, dan memperbaiki kesalahan yang ada pada data.

Data Transformation merupakan proses transformasi pada data yang telah dipilih. Lebih lanjut dari itu, proses transformasi data merupakan proses mengubah data kedalam format operasional tertentu, mengkonversi tipe data, melakukan beberapa perhitungan, penyaringan data yang tidak relevan, dan meringkasnya (tergantung pada jenis atau pola informasi yang akan dicari dalam basis data).

5. Exploratory Data Analysis

  • Secara definitive exploratory data analysis mengacu pada proses kritis dalam melakukan investigasi awal pada data untuk menemukan pola, untuk menemukan anomali, untuk menguji hipotesis dan untuk memeriksa asumsi dengan bantuan statistik ringkasan dan representasi grafis.

6. Data mining

  • Setelah melakukan EDA, kita dapat lebih memahami kondisi dataset yang dimiliki. Sehingga, kita dapat memulai pembentukan model machine learning dengan lebih baik. Pembuatan model machine learning ini dapat masuk kedalam tahap data mining.
  • Data mining sendiri adalah proses mencari pola atau informasi menarik dalam data terpilih dengan menggunakan teknik atau metode tertentu. Teknik, metode, atau algoritma dalam data mining sangat bervariasi. Pemilihan metode atau algoritma yang tepat sangat bergantung pada tujuan dan proses data mining secara keseluruhan.

7. Data Communication

  • Proses pengiriman dan penerimaan data secara elektronik dari dua atau lebih alat yang terhubung kedalam sebuah jaringan (network) melalui suatu media.
  • Interpretation / evalution yang merupakan pola informasi yang dihasilkan dari proses data mining perlu ditampilkan dalam bentuk yang mudah dimengerti oleh pihak yang berkepentingan. Tahap ini mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesis yang ada sebelumnya.

Outline

Market basket analysis merupakan suatu analisa atas perilaku konsumen secara spesifik dari suatu golongan / kelompok tertentu yang bersumber dari data transaksi penjualan barang, kartu kredit, kartu lotere, kupon diskon, maupun panggilan keluhan pelanggan. Market basket analysis umumnya dimanfaatkan sebagai titik awal pencarian pengetahuan dari suatu transaksi data ketika kita tidak mengetahui pola spesifik apa yang kita cari. Kebutuhan market basket analysis berawal dari keakuratan dan manfaat yang dihasilkannya dalam wujud aturan assosiasi (association rules). Yang dimaksud dengan association rules adalah pola-pola keterkaitan data dalam basis data.

Data hasil proses market basket analysis dapat dimanfaatkan untuk menentukan product bundling maupun product placement dari toko retail maupun online yang kita miliki. Pada project kali ini dataset yang digunakan berasal dari data transaksi penjualan dan distribusi berbagai macam produk/barang dari tangan supplier, distributor kepada customer tahun 2020 dan 2021. Dataset data rental 2 memiliki total 541.909 baris x 23 kolom.

Pre-Coding

Pertama, langkah awal yang harus kita lakukan adalah import library python. Beberapa library yang dibutuhkan diantaranya pandas, apyori, dan mlxtend. Silahkan melakukan installasi apabila package library belum tersedia dengan cara

pip install…

Gambar 1 — Import python libraries to your python notebook

Data Collection

Berikutnya adalah membaca file excel data_retail2.xlsx menggunakan library pandas. Berikut input serta output dari proses yang ada pada Data Collection kali ini, beserta keterangan variable-variable dari dataset data retail 2.

Gambar 2 — Dataset Data Retail 2

Variable-variable penyusun:

  • InvoiceDate = Tanggal dan waktu pembelian barang
  • BRANCH_SPLR = ID dari cabang suplier
  • BRANCHNAME_SPLR = Merupakan kota cabang dari suplier
  • warehouseProductsID = Merupakan kode Gudang stok dari sebuah barang
  • BARCODEID = Merupakan kode barcode distribusi dari sebuah barang
  • StockCode = Merupakan kode stok dari sebuah barang
  • PRODUCT = Deskripsi dari produk
  • PRODUCT_CATEGORY = Kategori dari produk
  • Quantity = Jumlah barang yang dibeli pada sebuah transaksi
  • UnitPrice = Harga per unit barang dalam satuan dolar
  • UnitPriceRupiah = Harga per unit barang dalam satuan rupiah
  • oldCUSTID = ID lama dari pelanggan
  • CustomerID = ID dari pelanggan
  • CUSTNAME = Nama dari pelanggan
  • ADDRESS = Deskripsi alamat
  • KOTA = Deskripsi kota
  • PROVINSI = Deskripsi provinsi
  • NEGARA = Deskripsi Negara
  • CHANNELID_SPLR = ID dari suplier
  • CHANNELNAME_SPLR = Jenis channel suplier
  • SUBDISTID = ID dari distributor
  • SUBDIST_NAME = Nama dari distributor

Data Pre-processing

Data pre-processing merupakan proses mengubah data mentah atau biasa dikenal dengan raw data yang dikumpulkan dari berbagai sumber menjadi informasi yang lebih bersih dan bisa digunakan untuk pengolahan selanjutnya. Dalam proses data pre-processing terdapat istilah data cleansing dan data transformation. Pada tahap data cleansing atau membersihkan data hal yang dilakukan diantaranya menghapus variable tertentu di kolom invoiceNO yang kosong, menghilangkan transaksi yang diawali dengan huruf C pada kolom atau attribute invoiceNo. Untuk tahap data transformation prosesnya lebih dekat dengan mengubah data kedalam format operasional tertentu, mengkonversi tipe data, melakukan beberapa perhitungan, penyaringan data yang tidak relevan, dan meringkasnya. Beberapa proses yang dilakukan pada tahap ini adalah mengganti tipe data pada kolom periode menjadi format datetime, melakukan grouping kolom InvoiceNo, PRODUCT_CATEGORY, Quantity, dan Province (dikarenakan 4 variable atau kolom tersebutlah yang akan digunakan dalam penerapan aassociation rule ini), dan melakukan proses encoding. Proses encoding sendiri singkatnya adalah proses mengubah data ke dalam bentuk angka, agar sistem atau komputer dapat memahami informasi dari dataset. Contohnya dimana jika barang kurang dari sama dengan 0 maka sistem perhitungan keranjang tersebut akan bernilai 0 dan jika nilai lebih dari 1 maka sistem perhitungan kerjang akan memberi output (nilai ) 1, sehingga jika sebuah nota membeli barang A sebanyak 10 buah maka hanya akan dihitung 1.

Gambar 3.1 — Data Cleansing Process
Gambar 3.2 — Data Transformation Process

Data Mining

Data mining atau dapat dikenal dengan istilah data exploration, merupakan proses mencari pola atau informasi menarik dalam data terpilih dengan menggunakan teknik atau metode tertentu. Teknik, metode, atau algoritma dalam data mining sangat bervariasi. Pemilihan metode atau algoritma yang tepat sangat bergantung pada tujuan dan proses data mining secara keseluruhan.

Pada tahap ini kita dapat membuat variable dimana terdiri dari beberapa barang yang sering terbeli atau ada pada transaksi menggunakan perintah apriori. Dengan data yang digunakan berasal dari dataframe basket_Sets dengan minimum nilai support 0.1 / 10%.

Gambar 4.1 — Build up the frequent items, the rules, and model
Gambar 4.1 — Frequent item’s result

Aturan assosiatif biasanya dinyatakan dalam bentuk : {roti, mentega} {susu} (support = 40%, confidence = 50%).

Yang artinya : “50% dari transaksi di database yang memuat item roti dan mentega juga memuat item susu. Sedangkan 40% dari seluruh transaksi yang ada di database memuat ketiga item itu.”

Dapat juga diartikan : “Seorang konsumen yang membeli roti dan mentega punya kemungkinan 50% untuk juga membeli susu. Aturan ini cukup signifikan karena mewakili 40% dari catatan transaksi selama ini”.

Analisis asosiasi didefinisikan suatu proses untuk menemukan semua aturan assosiatif yang memenuhi syarat minimum untuk support (minimum support) dan syarat minimum untuk confidence (minimum confidence).

Selanjutnya adalah membangun sebuah variabel function yang memiliki aturan aturan asosiasi dari masing-masing barang, variabel rules merupakan hasil dari fungsi yang mencari asosiasi dimana data yang di gunakan berasal dari frequent_items, dengan nilai minium threshold dari metric lift ratio nya adalah 1.

Gambar 4.3 — Build variable function of assoctiation rule
Gambar 4.4 — Build variable function of assoctiation rule

Support atau nilai dukungan adalah probabilitas pelanggan membeli beberapa produk secara bersamaan dari seluruh transaksi.

Confidence atau tingkat kepercayaan merupakan probabilitas kejadian beberapa produk dibeli secara bersamaan, dimana salah satu produk sudah pasti dibeli.

Minimum Support merupakan parameter yang digunakan sebagai batasan frekuensi kejadian atau support count yang harus dipenuhi oleh suatu kelompok data untuk dijadikan aturan.

Minimum Confidence adalah parameter yang mendefinisikan minimum level dari confidence yang harus dipenuhi oleh aturan yang berkualitas.
Itemset yaitu kelompok produk.

Support Count adalah frekuensi kejadian untuk sebuah kelompok produk atau itemset dari seluruh transaksi.

Minimum threshold adalah nilai batas ambang yang harus diperoleh untuk mendapatkan perwakilan produk-produk yang dibeli bersamaan.

Lift rasio adalah jenis pengujian yang digunakan untuk melihat kuat tidaknya aturan asosiasi dalam data mining khususnya pada Algoritma A Priori. Lift sendiri sebenarnya adalah sebuah angka ratio yang menunjukkan berapa banyak kemungkinan menemukan sebuah atribut yang muncul bersamaan dengan atribut lainnya dibandingkan dengan seluruh kejadian adanya atribut yang terpenuhi. Nilai lift ratio lebih besar dari 1 menunjukkan adanya manfaat dari aturan tersebut. Lebih tinggi nilai lift ratio, lebih besar kekuatan asosiasi.

Gambar 4.5 — Variable function of associon rule result

Bisa dilihat pada result table di atas, barang Parfum, Sabun, Shampoo biasanya terbeli bersamaan dengan Kosmetik dengan nilai support 0.102081.

Leverage adalah nilai yang mengukur banyaknya item antecedent dan consequence yang dijual secara bersamaan dalam suatu data set yang lebih dari yang diharapkan. Nilai 0 menunjukkan antecedent dan consequent independent.

Conviction adalah perhitungan untuk menentukan nilai akurasi minimum pada metode association rules.Nilai range pada conviction ini berada pada 0.5 sampai 1 sampai ∞ atau tak hingga. Dengan ketentuan conviction dianggap memiliki nilai tak hingga (infinite) apabila nilai dari confidence (A→B) sama dengan 1. Jika conviction menghasilkan nilai rules yang semakin menjauh dari 1 bahkan sampai tak hingga, maka akan di anggap
semakin akurat.

Kemudian selanjutnya adalah melakukan filter untuk nilai lift ratio minimal adalah 1 dan tingkat confidence minimal 0.8 / 80%

Gambar 4.6 — Melakukan filter

Data Communication — Conclusion and Interpretation

Gambar 5 — Association Rule Result

Dari result table yang telah di filter, dapat kita tarik kesimpulan bahwa produk-produk yang dibeli secara bersamaan oleh customer di daerah JAWA TENGAH terhadap rule asosiasi pada dataset dengan min_support 0.1 / 10%, min_threshold = 1, dan nilai lift sebesar lebih dari samadengan 1 serta tingkat confidence minimal yang diperhitungkan sebesar 0.8 (80%) diantaranya adalah:

  • sabun, shampoo, obat-obatan, parfum dengan kosmetik.
  • kosmetik, susu, obat-obatan dengan minuman.
  • kosmetik, alat rumah tangga, minuman dengan sabun dan samphoo.

*dan seterusnya…

Yang mana nilai conviction dari hasil-hasil yang didapat bernilai lebih dari 1, artinya hasil nilai rules yang dibangun dapat di anggap akurat.

Additional Note/Insight:

  • Produk atau barang yang menjadi kombinasi produk pertama untuk frekuensi yang paling banyak adalah kosmetik, minuman, sabun dan sampho.

Terima kasih telah membaca artikel ini! Jangan ragu untuk meninggalkan komentar pada postingan ini. Apabila anda memiliki pertanyaan lainnya jangan ragu untuk terhubung dan meninggalkan pesan di profil Linkedin saya, dan mari terhubung. Untuk akses code python serta rule lainnya secara lengkap silahkan klik link Google Colab dibawah.

--

--

Responses (1)