Persaingan di dunia bisnis menuntut para pengembang untuk menemukan suatu strategi apa yang sebenarnya diinginkan oleh konsumennya terutama dalam memberikan kemudahan memilih barang. Salah satu metode yang seringkali digunakan dalam teknologi information mining adalah metode asosiasi atau affiliation rule mining. Di dalam bidang usaha metode affiliation rule mining ini dikenal dengan istilah Analisa Keranjang Belanja atau Market basket Evaluation. Market basket evaluation merupakan sebuah analisis terhadap kebiasaan buyer berbelanja untuk menemukan asosiasi dan korelasi di antara berbagai macam objects yang akan di beli.
Knowledge yang digunakan pada analisis ini adalah information yang bersumber dari kaggle tentang transaksi pembelian barang.
Deskripsi information:
- UserId : ID unik untuk semua
- TransactionId : ID transaksi
- TransactionTime : Waktu transaksi
- ItemCode : Kode barang yang akan dibeli
- ItemDescription : Deskripsi barang
- NumberOfItemPurchased : Jumlah whole barang yang dibeli
- CostPerltem : Biaya setiap barang yang dibeli
- Nation : Negara tempat barang dibeli
Obtain dataset disini.
Import library
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
Enter dataset
market = pd.read_csv("/content material/drive/MyDrive/UTS_MPML/transaction_data.csv")
market
Dihasilkan output sebagai berikut.
Melihat struktur dataset
market.data()
Dihasilkan output sebagai berikut.
Berdasarkan output di atas, dataset tersebut memiliki baris sebanyak 1083818 dengan 3 tipe information yaitu integer, float, dan object.
Identifikasi information yang hilang
market.isnull().sum()
Dihasilkan output sebagai berikut.
Berdasarkan output, terdapat 2908 nilai yang hilang pada variabel ItemDescription.
Hapus nilai yang hilang
market.dropna()
Dihasilkan output sebagai berikut.
Filter information NumberOfItemPurchased
Kolom NumberOfItemPurchased berisi jumlah whole merchandise yang Dibeli. Terkadang transaksi dibatalkan atau refund.
market=market[market['NumberOfItemsPurchased']>=0]
Agregat information
Agregat information berdasarkan TransactionId untuk mendapatkan daftar barang setiap transaksi.
transaction=(market.groupby(['TransactionId','ItemDescription'])['NumberOfItemsPurchased'].sum().unstack().reset_index().fillna(0).set_index('TransactionId'))
transaction
Sehingga didapatkan output sebagai betikut.
Encode information
Jumlah setiap barang yang dibeli tidak terlalu penting. Yang terpenting suatu barang terbeli atau tidak. Mengkodekan barang apakah barang terbeli atau tidak dengan kode 1 untuk barang yang terbeli dan kode 0 untuk barang yang tidak terbeli.
def encode_units(x):
if x<=0:
return 0
if x>= 1:
return 1transaction_encode = transaction.applymap(encode_units)
transaction_encode
Sehingga didapatkan output seperti berikut.
Filter barang yang dibeli lebih dari 1
Dalam analisis keranjang pasar, mencari hubungan antara 2 atau lebih barang yang dibeli secara bersamaan berdasarkan information transaksi. Sehingga dibutuhkan filter barang yang dibeli lebih dari 1.
transaction_filter = transaction_encode[(transaction_encode > 0).sum(axis=1) >= 2]
transaction_filter
Sehingga didapatkan output sebagai berikut.
Menerapkan algoritma apriori
Gunakan algoritma apriori untuk menemukan barang yang sering muncul. Sebelum menggunakan algoritma, import “apriori” dari library “mlxtend”.
from mlxtend.frequent_patterns import apriori
Setelah import library apriori, selanjutnya implementasi algoritma tersebut menggunakan code berikut.
# Menerapkan algoritma apriori
transaction_itemset = apriori(transaction_filter, min_support=0.03,
use_colnames=True).sort_values('help', ascending=False).reset_index(drop=True)# Tambah kolom untuk jumlah barang terbeli setiap merchandise
transaction_itemset['length'] = transaction_itemset['itemsets'].apply(lambda x: len(x))
transaction_itemset
Didapatkan output sebagai berikut.
Dengan menerapkan algoritma apriori, information frekuensi yang diinginkan dapat ditentukan dengan menentukan nilai help. Dalam hal ini, mendefinisikan barang yang sering dibeli menjadi barang yang dibeli tiga kali setiap transaksi. Artinya memberikan nilai help sebesar 0,03.
Mencari pasangan barang yang sering dibeli
Setelah Anda menerapkan algoritme apriori untuk menemukan merchandise yang sering dibeli, sekarang saatnya menerapkan aturan asosiasi. Aturan asosiasi mencari barang mana yang lebih efektif untuk dijual bersama. Untuk mengguanakan aturan asosiasi, import “asosiation_rules” dari library “mlxtend”.
from mlxtend.frequent_patterns import association_rules
Setelah import library asosiaction_rules, selanjutnya implementasi algoritma tersebut menggunakan code berikut.
association_rules(transaction_itemset, metric='raise',
min_threshold=1).sort_values('raise', ascending=False).reset_index(drop=True)
Sehingga didapatkan output seperti berikut.
Berdasarkan output di atas, raise dan confidence yang tinggi menunjukkan hubungan yang kuat antar barang. Berdasarkan output di atas, PINK REGENCY TEACUP AND SAUCER serta GREEN REGENCY TEACUP AND SAUCER memiliki nilai raise dan confidence yang tinggi sehingga dapat dijadikan rekomendasi strategis.
- Bundling product antara PINK REGENCY TEACUP AND SAUCER serta GREEN REGENCY TEACUP AND SAUCER dengan harga yang lebih rendah dibandingkan harga gabungan setiap produk.
- Posisikan barang dengan meletakkan PINK REGENCY TEACUP AND SAUCER serta GREEN REGENCY TEACUP AND SAUCER secara berdekatan atau ditempatkan dengan rekomendasi ketika salah satu produk dibeli untuk penjualan secara on-line.
- Beri diskon dan tempatkan di dekat kasir untuk menarik pembeli pada produk PINK REGENCY TEACUP AND SAUCER serta GREEN REGENCY TEACUP AND SAUCER.
- Hasil juga menunjukkan hubungan antara PINK REGENCY TEACUP AND SAUCER serta ROSES REGENCY TEACUP AND SAUCER utnuk dilakukan promosi-promosi produk sama.
KUMAR, V. (2020). Knowledge Transaksi. Retrieved from kaggle: https://www.kaggle.com/datasets/vipin20/transaction-data/data
Wijaya, Ok. N. (2017). Analisa Pola Frekuensi Keranjang Belanja dengan Algoritma Apriori. Retrieved from https://core.ac.uk/download/pdf/235044793.pdf