Identification Market Basket Analysis for Transaction Data in Python

salwa putrillah
6 min readMay 13, 2024

Pendahuluan

MBA ( Market Basket Analysis ) adalah pola transaksi yang tidak disengaja bahwa pembelian beberapa produk akan mempengaruhi pembelian produk lain. MBA ( Market Basket Analysis ) digunakan untuk memprediksi produk apa yang diminati pelanggan dan memahami hubungan antara produk atau item yang dibeli oleh pelanggan sehingga bisnis dapat mengambil tindakan yang tepat, seperti strategi penjualan lintas atau penempatan produk yang lebih efektif di toko.

MBA (Market Basket Analysis) juga digunakan untuk mengetahui barang apa sajakah yang sering dibeli bersama (bundling) atau ditempatkan pada keranjang atau tempat yang sama oleh pelanggan (cross selling).

Market basket analysis dapat diterapkan dalam berbagai industri, termasuk ritel, e-commerce, layanan keuangan, dan perhotelan, untuk membantu bisnis meningkatkan penjualan, meningkatkan kepuasan pelanggan, dan mengoptimalkan pengalaman belanja.

Studi Kasus

Mengidentifikasi pola pembelian barang oleh pelanggan dan merumuskan strategi pemasaran berdasarkan aturan asosiasi yang dihasilkan dari Data Transaksi.

Pengumpulan Data

Dataset yang digunakan adalah dataset mengenai data transaksi yang diperoleh dari Transaction Data pada Kaggle. Setelah mengunduh data transaksi maka terdapat 8 variabel, yaitu :

  • UserId — berisi ID unik untuk semua pelanggan
  • TransactionId — berisi ID unik transaksi
  • TransactionTime — berisi waktu transaksi
  • ItemCode -berisi kode barang yang akan dibeli
  • ItemDescription -berisi deksripsi barang
  • NumberOfItemPurchased — berisi jumlah total barang yang dibeli
  • CostPerltem -Berisi biaya barang yang dibeli
  • Country -negara tempat pembelian barang

Pemrosesan Data Awal

  1. Impor dataset transaksi ke dalam environment
# Memanggil library pandas
import pandas as pd
#  Membaca file csv
transaction = pd.read_csv("/content/transaction_data.csv", delimiter=',')
transaction

2. Membersihkan data dari nilai yang hilang atau tidak konsisten

Membersihkan data dari nilai yang hilang atau tidak konsisten dan menghilangkan duplikasi baris.

# 2 Pemrosesan data awal
## membersihkan data
transaction.dropna()
transaction.drop_duplicates(inplace = True)
transaction.info()
<class 'pandas.core.frame.DataFrame'>
Index: 536572 entries, 0 to 1081501
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 UserId 536572 non-null int64
1 TransactionId 536572 non-null int64
2 TransactionTime 536572 non-null object
3 ItemCode 536572 non-null int64
4 ItemDescription 535118 non-null object
5 NumberOfItemsPurchased 536572 non-null int64
6 CostPerItem 536572 non-null float64
7 Country 536572 non-null object
dtypes: float64(1), int64(4), object(3)
memory usage: 36.8+ MB

Berdasarkan hasil pembersihan data dapat diketahui bahwa tidak ada data transaksi yang null ( hilang ) atau tidak konsisten serta tidak ada baris yang terduplikasi

3. Menggunakan nilai positif dari jumlah barang yang terjual

transaction_plus = transaction[transaction['NumberOfItemsPurchased']>=0]
transaction_plus.info()
<class 'pandas.core.frame.DataFrame'>
Index: 525986 entries, 0 to 1081501
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 UserId 525986 non-null int64
1 TransactionId 525986 non-null int64
2 TransactionTime 525986 non-null object
3 ItemCode 525986 non-null int64
4 ItemDescription 525394 non-null object
5 NumberOfItemsPurchased 525986 non-null int64
6 CostPerItem 525986 non-null float64
7 Country 525986 non-null object
dtypes: float64(1), int64(4), object(3)
memory usage: 36.1+ MB

Pembersihan data untuk kolom NumberOfItemsPurchased yang menunjukan bahwa jumlah barang yang terjual setiap transaksi atau berdasarkan kolom TransactionId. Tindakan ini diambil agar tidak ada nilai negatif pada kolom yang menunjukkan bahwa suatu barang dibatalkan untuk dibeli, karena MBA (Market Basket Analysis) bertujuan untuk mengidentifikasi barang-barang yang sebenarnya dibeli oleh pelanggan.

4. Melakukan agregat berdasarkan kolom TransactionId

# agregat
transactionplus=(transaction_plus.groupby(['TransactionId','ItemDescription'])['NumberOfItemsPurchased'].sum().unstack().reset_index().fillna(0).set_index('TransactionId'))
transactionplus

Dalam dataset transaksi, dilakukan proses agregasi dengan menggunakan perintah group by () untuk mengelompokkan data berdasarkan kriteria tertentu, seperti TransactionId, ItemDescription, dan NumberofPurchased. Tujuannya adalah untuk mendukung analisis yang lebih terperinci dan memfasilitasi pemahaman pola data dengan lebih baik.

Mining Association Rules

Mining Association Rules adalah teknik dalam analisis data yang digunakan untuk menemukan hubungan atau asosiasi antara variabel dalam kumpulan data. Tujuan utamanya adalah untuk mengidentifikasi aturan yang menggambarkan hubungan antara satu set item atau variabel dengan item atau variabel lainnya dalam kumpulan data.

  1. Encode data

Pengkodean data diperlukan dalam MBA (Market Basket Analysis) karena jumlah setiap item yang dibeli memiliki nilai penting sama yang mana fokusnya adalah apakah suatu item dibeli atau tidak.

Sehingga dilakukan pengkodean data kedalam bentuk biner yang mana jika barang tersebut terbeli maka dikodekan dengan (1) dan jika barang itu tidak terbeli maka dikodekan dengan (0).

# 3
def encode_units(x):
if x <= 0:
return 0
if x >= 1:
return 1
transaction_encode = transactionplus.applymap(encode_units)
transaction_encode

Berdasarkan hasil pengkodean data tersebut, bahwa data transaksi sudah berubah menjadi bentuk biner yang mana barang tersebut terbeli maka dikodekan dengan (1) dan jika barang itu tidak terbeli maka dikodekan dengan (0).

2. Melakukan filter data transaksi

transaction_filter = transaction_encode[(transaction_encode>0).sum(axis=1)>=2]
transaction_filter

Berdasarkan hasil filterisasi data transaksi, ada 18338 transaksi yang membeli lebih dari 1 item.

3. Menerapkan algoritma apriori

Apriori digunakan untuk mengidentifikasi item yang paling umum dibeli. Dalam aplikasinya, apriori mengelompokkan asosiasi dalam dataset dengan menggunakan ukuran dukungan.

##apriori
from mlxtend.frequent_patterns import apriori
frequent_itemsets_plus = apriori(transaction_encode, min_support=0.03,
use_colnames=True).sort_values('support', ascending=False).reset_index(drop=True)

frequent_itemsets_plus['length'] = frequent_itemsets_plus['itemsets'].apply(lambda x: len(x))

frequent_itemsets_plus

Berdasarkan hasil algoritma apriori, dapat dilihat bahwa terdapat 136 transaksi yang teridentifikasi sebagai barang yang sering dibeli oleh pelanggan. Hal ini ditunjukkan bahwa White Hanging Heart T — Light Holder adalah barang yang sering dibeli oleh pelanggan dengan nilai support sebesar 0.112237.

Analisis dan Interpretasi Aturan

Mengidentifikasi aturan dengan lift yang tinggi dan confidence yang tinggi sebagai rekomendasi strategis. Lift dihitung sebagai perbandingan antara kepercayaan aturan asosiasi dengan dukungan item. Lift di atas 1 menunjukkan asosiasi positif, sedangkan di bawah 1 menunjukkan asosiasi negatif.

from mlxtend.frequent_patterns import association_rules
association_rules(frequent_itemsets_plus, metric='lift',
min_threshold=1).sort_values('lift', ascending=False).reset_index(drop=True)

Berdasarkan hasil diatas, dapat dilihat bahwa nilai dengan lift yang tinggi yaitu, Pink Reegency Teacup and Saucer dan Green Regency Teacup and Saucer adalah barang yang memiliki nilai lift paling tinggi yaitu sebesar 16.3939893 atau dalam persentase sebesar 16.4%. Semakin tinggi nilai angkat, semakin tinggi hubungan antara barang-barang yang ada. Jika nilai lift lebih dari 1, cukup untuk mengatakan bahwa kedua item itu terkait satu sama lain. Dalam hal ini, nilai tertinggi adalah 16.394 yang sangat tinggi, artinya kedua barang ini sangat bagus untuk dijual bersama.

Selain itu jika dilihat dari nilai support Pink Reegency Teacup and Saucer dan Green Regency Teacup and Saucer adalah yang paling tinggi yaitu sebesar 0.050407% artinya terdapat 50,4% dari total transaksi kedua barang ini dijual secara bersama.

Mengidentifikasi berdasarkan nilai confidence tinggi yang dapat dilihat bahwa nilai antecedent dan consequent dengan aturan :

  1. Jika nilai antecedent lebih tinggi dibandingkan nilai consequent, maka akan digunakan aturan pertama.
  2. Jika nilai consequent lebih tinggi dibandingkan nilai atecedent, maka akan digunakan aturan kedua.

Sehingga, Dalam hasil dataset Apriori yang menggunakan lift ini, karena Pink Regency Teacup and Saucer dan Green Regency Teacup and Saucer memiliki nilai antecedent yang lebih tinggi daripada consequent, maka 𝐺𝑅𝐸𝐸𝑁 𝑅𝐸𝐺𝐸𝑁𝐶𝑌 𝑇𝐸𝐴𝐶𝑈𝑃 𝐴𝑁𝐷 𝑆𝐴𝑈𝐶𝐸𝑅 → PINK 𝑅𝐸𝐺𝐸𝑁𝐶𝑌 𝑇𝐸𝐴𝐶𝑈𝑃 𝐴𝑁𝐷 𝑆𝐴𝑈𝐶𝐸𝑅. Ini menunjukkan bahwa pelanggan lebih cenderung membeli Pink Regency Teacup and Saucer setelah membeli Green Regency Teacup and Saucer. Dengan informasi ini, kita dapat menerapkan sistem diskon untuk Pink Regency Teacup and Saucer jika pelanggan telah membeli Green Regency Teacup and Saucer sebelumnya.

Kesimpulan Strategi Pemasaran

Berdasarkan hasil MBA ( Market Basket Analysis ) dapat digunakan untuk strategi pemasaran dan pengambilan keputusan berbasis data. Dalam kumpulan data ini, kami dapat menghasilkan beberapa wawasan bisnis sebagai berikut :

  1. Penempatan Barang, kita bisa meletakkan Pink Regency Teacup and Saucer dan Green Regency Teacup and Saucer di tempat yang lebih dekat, mungkin di rak yang sama atau tempat lain yang lebih dekat.
  2. Bundling Produk, kita bisa menempatkan Pink Regency Teacup and Saucer dan Green Regency Teacup and Saucer secara bundling atau satu bundel produk dengan harga lebih rendah dibandingkan dengan setiap harga gabungan. Dengan cara ini akan menarik lebih banyak penjualan dan menghasilkan lebih banyak pendapatan. Penjualan bundling ini juga dapat dilakukan secara online karena akan menarik perhatian pembeli.
  3. Rekomendasi dan Diskon Pelanggan, kita bisa menempatkan Pink Regency Teacup dan Saucer ditempat strategis misalnya seperti didekat kasir atau pintu kedatangan sehingga setiap kali pelanggan membeli Green Regency Teacup dan Saucer, kita dapat menawarkan dan merekomendasikan mereka untuk membeli Pink Regency Teacup dan Saucer dengan harga lebih murah.

--

--