Mechine Studying: Identifikasi Pola Pembelian Barang Menggunakan Market Basket Evaluation (MBA)
Assalamualaikum Warrahmatullahi Wabarakatuh
Pada kesempatan kali ini, kita akan mengidentifikasi pola pembelian barang pada information transaksi. Sebelum itu, dataset dapat diunduh pada laman berikut https://www.kaggle.com/datasets/vipin20/transaction-data?select=transaction_data.csv
Pada analisis kali ini, kita menggunakan Market Basket Evaluation. Sebelumnya, kita perlu tahu bahwa Market Basket Evaluation adalah analisis information penjualan dalam jumlah besar. Hasil analisis MBA dapat menampilkan barang apa saja yang dibeli oleh sebagian besar konsumen. Selain itu, analisis ini juga mampu memberikan hubungan antara barang satu dengan barang lain yang memiliki korelasi sehingga kemungkinan bisa direkomendasikan pada pelanggan.
Pada penerapan MBA, dapat dilakukan langkah-langkah sebagai berikut:
- Import libraries
#import libraries
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
import matplotlib.pyplot as plt
import seaborn as sns
2. Import dataset transaction
#import dataset
transaction = pd.read_csv('/content material/sample_data/transaction_data.csv')
print(transaction.head())
print(transaction.information())
Seperti yang dapat kita lihat, information set ini memiliki 8 fitur dengan 1083818 baris.
3. Bersihkan information dari nilai null
#drop na values
transaction = transaction.dropna()
transaction.information()
Proses ini akan menghapus suatu baris yang memiliki nilai null pada salah satu kolomnya, baris tersebut akan dihapus secara keseluruhan dari information body. Hal ini berguna untuk membersihkan information dari nilai yang hilang atau duplikat sebelum dilakukan analisis lebih lanjut atau pemodelan.
4. Agregat information berdasarkan kolom TransactionId dan ItemDescription
#Agregat
transaction_agg = data3.groupby(['TransactionId','ItemDescription'])['NumberOfItemsPurchased'].sum().unstack().reset_index().fillna(0).set_index('TransactionId')
transaction_agg
Proses ini bertujuan untuk melihat pengelompokkan daftar barang yang dibeli tiap transaksi.
5. Pengkodean Knowledge
#Encode the information
def encode_units(x):
if x<=0:
return 0
if x>= 1:
return 1transaction_encode_plus = transaction_agg.applymap(encode_units)
transaction_encode_plus
Pada Market Basket Evaluation, jumlah pembelian tidak begitu penting, yang terpenting adalah apakah suatu barang terbeli atau tidak. Dari syntax di atas, bila suatu barang terbeli akan dikodekan dengan 1, dan apabila tidak terbeli akan dikodekan dengan 0.
6. Seleksi information transaksi : Pembelian Lebih dari 1 Barang
#Filter The Transaction
transaction_filter_plus = transaction_encode_plus[(transaction_encode_plus > 0).sum(axis=1) >= 2]
transaction_filter_plus
Pada Market Basket Evaluation, kita ingin mengetahui hubungan atau asosiasi antara 2 atau lebih barang yang dibeli berdasarkan information yang ada. Hal ini menunjukkan bahwa merchandise atau barang tersebut cenderung dibeli bersamaan. Oleh karena itu, pada proses ini kita menyeleksi information pembelian yang membeli lebih dari 1 barang.
7. Aplikasi algoritma apriori
#Apriori algorithm
frequent_itemsets_plus = apriori(basket_encode_plus, min_support=0.03,
use_colnames=True).sort_values('assist', ascending=False).reset_index(drop=True)frequent_itemsets_plus['length'] = frequent_itemsets_plus['itemsets'].apply(lambda x: len(x))
frequent_itemsets_plus
Fungsi dari algoritma apriori adalah untuk mencari merchandise yang sering dibeli. Dalam aplikasinya, kita dapat menentukan information yang sering muncul yang kita inginkan berdasarkan assist worth. Pada analisis kali ini, kita akan mendefinisikan barang yang sering dibeli apabila barang tersebut dibeli setidaknya 3% dari seluruh transaksi.
Seperti yang dapat dilihat, terdapat 80 barang yang dianggap sering dibeli. Produk White Hanging Coronary heart T — Gentle Holder adalah barang yang paling sering dibeli dengan nilai assist sebesar 0.092449.
8. Asosisasi atau hubungan
#Affiliation
association_rules(frequent_itemsets_plus, metric='carry',
min_threshold=1).sort_values('carry', ascending=False).reset_index(drop=True)
9. Grafik
# Membuat pivot desk untuk menampilkan korelasi antara merchandise
pivot_table = guidelines.pivot(index='antecedents', columns='consequents', values='carry')# Plot heatmap
plt.determine(figsize=(10, 8))
sns.heatmap(pivot_table, annot=True, cmap='coolwarm', fmt=".2f", cbar=True)
plt.title('Affiliation Guidelines')
plt.xlabel('Consequents')
plt.ylabel('Antecedents')
plt.present()
Berdasarkan hasil asosiasi dan grafik di atas, dapat kita lihta bahwa Inexperienced Regency Tea Cup and Saucer dan Roses Regency Teacup and Saucer memiliki asosisasi tertinggi karena kedua merchandise ini memiliki nilai “carry” paling tinggi. Semakin tinggi nilai carry, maka semakin tinggi pula asosiasi antar merchandise merchandise tersebut. Jika nilai carry lebih dari 1, maka dapat dikatakan bahwa kedua merchandise tersebut berhubungan satu sama lain. Dalam analisis kali ini, nilai carry tertinggi adalah 17.351850. Artinya, Inexperienced Regency Tea Cup and Saucer dan Roses Regency Teacup and Saucer akan sangat bagus bila dijual bersama.
Dari hasil asosiasi di atas, dapat dilihat pula bahwa nilai confidence Roses Regency Teacup and Saucer akan dibeli setelah membeli Inexperienced Regency Tea Cup and Saucer adalah 0.756650. Sedangkan nilai confidence Inexperienced Regency Tea Cup and Saucer akan dibeli setelah Roses Regency Teacup and Saucer adalah 0.720450. Artinya, seseorang akan cenderung membeli Inexperienced Regency Tea Cup and Saucer sebelum membeli Roses Regency Teacup and Saucer.
Dari analisis di atas, jika kita menjadi pebisnis, kita dapat memberikan diskon pada Roses Regency Teacup and Saucer jika pelanggan membeli Inexperienced Regency Tea Cup and Saucer. Selain itu, kita dapat menggabung kedua produk tersebut dan dijual dengan harga yang lebih rendah. Strategi lainnya, kita juga bisa meletakkan kedua produk tersebut dalam satu rak yang sama.