Machine Learning: Apriori

Machine Learning: Apriori

STUDI KASUS

Kali ini kita diminta tolong oleh seorang pemilik supermarket di ibukota. Ia memiiki semua data pembelian pelanggan. Kita diberikan 7500 data penjualan terakhir. Di datanya kita bisa tahu barang-barang apa saja yang dibeli. Tentunya pencatatan ini dilakukan secara otomatis ke database ketika kasir me-scan barcode dari produk layaknya di supermarket secara umum.

Kita akan memecahkannya dengan dua bahasa yaitu Python dan R.

Sebelum memulai, silakan download dataset dan script apriorinya di link 1 dan link 2. Untuk script apriori, setelah didownload harus di ekstract dulu (unzip/unrar) dan letakkan dalam 1 folder bersama dengan datasetnya.

Barangkali ada yang bertanya, mengapa harus kita tambahkan script apyori ini? Karena tidak ada package bawaan pyton khusus untuk teknik apriori yang bisa diimpor melalui spyder. Dengan menempatkannya satu folder, maka kita seperti mengimpor sebuah package, yang nanti cukup kita impor di script, efeknya sama seperti kita mengimpor library numpy, matplotlib, dan lain-lain.


Bahasa Python

# Mengimpor library
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Mengimpor dataset
dataset = pd.read_csv('optimisasi_retail.csv', header = None)

# Preprocessing
transaksi = []
for i in range(0, len(dataset)):
    transaksi.append([str(item) for item in dataset.values[i,:] if str(item)!='nan'])

# Melatih algoritma apriori ke dataset
from apyori import apriori
batasan = apriori(transaksi, min_support = 0.004, min_confidence = 0.25, min_lift = 4, min_length = 2)

# Visualisasi hasil apriori versi 1
hasil = list(batasan)
analisis_hasil = []
for i in range(0, len(hasil)):
    analisis_hasil.append('RULE:\t{}\nSUPP:\t{}\nCONF:\t{}\nLIFT:\t{}\n'.format(list(hasil[i][0]), str(hasil[i][1]), str(hasil[i][2][0][2]), str(hasil[i][2][0][3])))

Penjelasan:

  • Line 2-4 mengimpor library yang diperlukan.
  • Line 7 mengimpor datasetnya.
  • Line 10 membuat list kosong dengan nama transaksi.
  • Line 11 mengeluarkan data yang berisi NaN (data kosong).

Jika kita klik variabel transaksi setelah dikeluarkan nilai NaN di dalamnya, maka tampilannya sebagai berikut:

Tampilan variabel Transaksi. Tampak ada 7501 data pembelian di dalamnya.
  • Line 15 mengimpor fungsi apriori dari script apyori. Script harus diletakkan satu folder dengan datasetnya.
  • Line 16 mendefinisikan variabel batasan, dilengkapi dengan parameter algoritma apriori. Perlu diperhatikan, bahwa parameter ini bisa diganti-ganti sesuai keinginan. Tips: Untuk mengetahui parameter apa saja dan penjelasannya, maka arahkan kursor pada apriori kemudian ketik CTRL+i di keyboard. Tampilannya sebagai berikut:
Tampilan parameter apriori di spyder
  • Line 19 merubah variabel batasan di line 16 sebagai sebuah list.
  • Line 20 mendefinisikan variabel analisis_hasil sebagai list kosong.
  • Line 21 adalah looping dari baris pertama di list hasil, dan merubahnya sebagai string satu demi satu. Dengan demikian, kita bisa melihat isinya seperti support, confidence, dan lift. Jika dijalankan maka tampilannya sebagai berikut:
Hasil hubungan apriori yang dihasilkan

Berdasarkan parameter yang kita tentukan di atas, sekarang kita memiliki 5 hubungan yang ada.

Hal yang perlu diperhatikan adalah di Python urutannya bukan berdasarkan pada nilai lift saja, melainkan gabungan antara nilai lift secara umum dan urutan abjad. Walau demikian, peringkat 5 pertama ini sudah sangat baik.

Untuk mengaplikasikannya, bukan berarti urutan no 1 adalah yang harus diaplikasikan terlebih dahulu (ayam dan krim harus didekatkan misalnya). Melainkan harus dikonsultasikan dulu dengan pengambil keputusan (level manager atau pemilik perusahaan), dari alternatif-alternatif ini mana yang paling memungkinkan (feasible).

Untuk melanjutkan membaca, silakan klik lanjut ke halaman selanjutnya di bawah ini.

Pages: 1 2 3 4

Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments