Apriori Algorithm: Analisis Pola Transaksi Penjualan
Pendahuluan
Perkembangan penggunaan data yang sangat cepat di era modern telah merambah ke berbagai sektor esensial dalam kehidupan manusia. Bughin et al (2016) melalui laporannya pada tahun 2011 memperkirakan adanya potensi besar penggunaan data pada lima sektor utama, yaitu sektor publik, kesehatan, manufaktur, bisnis retail, dan sektor berbasis lokasi. Per tahun 2016, dari kelima sektor tersebut, bisnis menjadi salah satu sektor dengan progres pemanfaatan data yang paling cepat di antara sektor lainnya dengan peningkatan di kisaran 30-40%.
Peningkatan pesat yang dialami sektor bisnis tak dapat dipisahkan dari tujuan utama bisnis itu sendiri, yaitu untuk terus berkembang dan meluaskan skala bisnisnya. Analisis data dalam dunia bisnis dapat meningkatkan keakuratan pengambilan keputusan yang berbasis pada informasi sesungguhnya (Alfiansyah et al. 2020). Perubahan kecenderungan pengambilan keputusan bisnis menjadi data-driven diharapkan dapat mempermudah penentuan strategi bisnis, utamanya jika harus bergantung pada data transaksi dalam volume yang besar.
Pemanfaatan ilmu data mining dapat digunakan untuk menganalisis data transaksi bisnis. Salah satu metode yang sering kali digunakan dalam ilmu data mining adalah metode asosiasi yang dapat mengidentifikasi pola interaksi di antara item-item yang ada dalam dataset (Putrawansyah 2023). Dalam rangka menganalisis data transaksi bisnis dengan volume besar dan pola dengan frekuensi tinggi, algoritma Apriori dapat digunakan sebagai salah satu metode affinity analysis atau market basket analysis (Putra et al. 2018).
Pra-processing Data
Impor Data
Data yang digunakan merupakan data dummy transaksi yang terjadi pada sebuah lini bisnis yang terdiri atas 3 (tiga) peubah sebagai berikut:
Date, yaitu peubah yang menerangkan tanggal terjadinya transaksi
PIC, yaitu peubah yang menerangkan penanggung jawab—dalam konteks ini adalah kasir—yang bertugas dalam tiap transaksi
Code, yaitu peubah yang menerangkan kode item dalam tiap transaksi
Proses impor data berformat .csv ke
software R dapat dilakukan dengan menggunakan fungsi
read_csv dengan terlebih dahulu memanggil library
readr. Cuplikan data yang digunakan dapat dilihat sebagai
berikut,
library(readr)
raw_data <- read_csv("C:/Users/Asus/Downloads/Warehouse Stock Dummy - Sheet2.csv")
head(raw_data)## # A tibble: 6 × 3
## Date PIC Code
## <chr> <chr> <chr>
## 1 26/08/2022 Ross A-02
## 2 26/08/2022 Ross A-03
## 3 26/08/2022 Ross A-07
## 4 26/08/2022 Ross A-01
## 5 30/08/2022 Mith A-02
## 6 30/08/2022 Mith A-11
Praproses data dilanjutkan dengan menyesuaikan format data sesuai
dengan format yang dibutuhkan—dalam hal ini berformat data frame—dengan
menggunakan fungsi as.data.frame. Pengondisian format
tanggal juga perlu dilakukan pada peubah Date
menggunakan library dplyr. Ringkasan sederhana keseluruhan
data dapat diamati sebagai berikut,
raw_data <- as.data.frame(raw_data)
library(dplyr)
raw_data <- raw_data %>%
mutate(Date = as.Date(Date, format = "%d/%m/%Y"))
summary(raw_data)## Date PIC Code
## Min. :2022-05-12 Length:731 Length:731
## 1st Qu.:2022-11-25 Class :character Class :character
## Median :2023-06-16 Mode :character Mode :character
## Mean :2023-05-02
## 3rd Qu.:2023-08-30
## Max. :2023-11-15
Identifikasi Missing Value
Identifikasi data hilang dalam data perlu dilakukan guna mengantisipasi adanya kebiasan dan salah pendugaan dalam hasil analisis yang hendak dilakukan (Hendrawati 2015). Data yang hilang perlu ditangani melalui beberapa metode, salah satunya proses imputasi. Jika data yang digunakan tidak mengandung data hilang, proses analisis dapat dilanjut menuju tahap selanjutnya. Proses pendeteksian data hilang dapat dilakukan sebagai berikut,
## Date PIC Code
## 0 0 0
Cleaning Data
Langkah cleaning dan tidying data selanjutnya
dilakukan dengan menyesuaikan format yang dibutuhkan. Dalam proses
analisis kali ini, diperlukan data transaksi unik yang dirinci secara
horizontal. Proses perapian data transaksi dapat dilakukan menggunakan
library tidyr dan dplyr dengan melakukan
proses pengelompokan item transaksi berdasarkan kombinasi unik antara
data dalam peubah Date dan PIC. Format
data yang diinginkan tersebut dapat didapati dan diamati melalui
rangkaian sintaks sebagai berikut,
library(tidyr)
library(dplyr)
tidy_data <- raw_data %>%
group_by(Date, PIC) %>%
summarize(transposed_values = list(Code)) %>%
unnest_wider(transposed_values)
data <- data.frame(tidy_data)
head(data)## Date PIC ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11
## 1 2022-05-12 Michael A-03 A-03 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 2022-08-26 Ross A-02 A-03 A-07 A-01 <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 3 2022-08-30 Mith A-02 A-11 A-20 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 4 2022-08-30 Ross A-13 A-01 A-11 A-17 A-10 A-21 A-13 A-12 <NA> <NA> <NA>
## 5 2022-08-31 Nadia A-02 A-07 A-08 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 6 2022-08-31 Rasmus A-04 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## ...12 ...13 ...14 ...15 ...16 ...17 ...18 ...19 ...20 ...21 ...22 ...23 ...24
## 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 3 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 4 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 5 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 6 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## ...25 ...26 ...27 ...28 ...29 ...30 ...31 ...32 ...33 ...34 ...35 ...36 ...37
## 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 3 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 4 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 5 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 6 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## ...38
## 1 <NA>
## 2 <NA>
## 3 <NA>
## 4 <NA>
## 5 <NA>
## 6 <NA>
Selanjutnya dibuat suatu gugus data khusus untuk proses analisis pola transaksi dengan menyisakan daftar item tiap transaksi. Gugus data baru yang meniadakan peubah Date dan PIC kemudian dapat diamati sebagai berikut,
## ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11 ...12 ...13 ...14
## 1 A-03 A-03 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 A-02 A-03 A-07 A-01 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 3 A-02 A-11 A-20 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 4 A-13 A-01 A-11 A-17 A-10 A-21 A-13 A-12 <NA> <NA> <NA> <NA> <NA> <NA>
## 5 A-02 A-07 A-08 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 6 A-04 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## ...15 ...16 ...17 ...18 ...19 ...20 ...21 ...22 ...23 ...24 ...25 ...26 ...27
## 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 3 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 4 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 5 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 6 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## ...28 ...29 ...30 ...31 ...32 ...33 ...34 ...35 ...36 ...37 ...38
## 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 3 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 4 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 5 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 6 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
Eksplorasi Data
Time Series: Transaksi Tiap Bulan
Pertama-tama, ingin dilihat tren transaksi yang terjadi tiap bulan
dalam rangka mengetahui pola yang mungkin terdapat akibat adanya efek
waktu. Satuan waktu yang digunakan dalam konteks eksplorasi kali ini
adalah bulan yang dirasa lebih memberikan gambaran lebih riil daripada
hari maupun minggu. Grafik deret waktu yang ingin dibentuk terlebih
dahulu dibuat dalam suatu ringkasan frekuensi transaksi per bulan dan
dilanjutkan dengan menggunakan fungsi plot sebagai
berikut.
data_bulan <- format(data$Date, "%Y-%m")
transaksi_perbulan <- as.data.frame(table(data_bulan))
transaksi_perbulan$data_bulan <- as.Date(paste0(transaksi_perbulan$data_bulan,
"-01"))
transaksi_perbulan## data_bulan Freq
## 1 2022-05-01 1
## 2 2022-08-01 6
## 3 2022-09-01 12
## 4 2022-10-01 28
## 5 2022-11-01 18
## 6 2022-12-01 11
## 7 2023-02-01 5
## 8 2023-05-01 7
## 9 2023-06-01 11
## 10 2023-07-01 19
## 11 2023-08-01 25
## 12 2023-09-01 25
## 13 2023-10-01 20
## 14 2023-11-01 10
plot(transaksi_perbulan$data_bulan, transaksi_perbulan$Freq, type="b", las=2,
xlab="", ylab="Jumlah Transaksi", ylim=c(0,32),
main="Total Transaksi per Bulan")
abline(v = as.Date("2023-01-01"), col = "red")
text(as.Date("2023-01-01"), 20, "Tahun Baru 2023", adj = c(-0.1, 1.5),
col = "blue", cex = 0.8, srt = 90)
text(transaksi_perbulan$data_bulan, transaksi_perbulan$Freq,
labels = transaksi_perbulan$Freq, pos = 3, cex = 0.8, col = "black")
axis.Date(side = 1, at = transaksi_perbulan$data_bulan,
format = "%Y-%m", las=2)Berdasarkan grafik deret waktu di atas, dapat diamati adanya tren peningkatan frekuensi transaksi pada kuartal ketiga (bulan Juli-September), baik pada tahun 2022 maupun 2023. Hal ini mengindikasikan bahwa kuartal ketiga menjadi periode waktu utama konsumen untuk melakukan transaksi dalam rangka pemenuhan kebutuhan logistik yang dapat dipenuhi dari proses transaksi jual-beli. Setelah periode kuartal ketiga, teramati adanya penurunan tren frekuensi transaksi hingga akhir tahun yang mengindikasikan adanya penurunan kebutuhan logistik melalui proses jual-beli menjelang peralihan menuju tahun baru.
Treemap: Frekuensi PIC Transaksi
Eksplorasi data kedua yang menarik untuk diamati adalah PIC dengan
frekuensi transaksi tertinggi. Frekuensi ini dapat menunjukkan adanya
kualitas performa dari masing-masing PIC transaksi yang bertugas dan
dapat menjadi pertimbangan perusahaan dalam memberikan apresiasi yang
sesuai kepada masing-masing pekerjanya. Terlebih dahulu diamati sejumlah
PIC dengan frekuensi transaksi tertinggi untuk melihat cuplikan
informasi yang kemudian dilanjut dengan visualisasi secara menyeluruh
dengan treemap menggunakan fungsi treemap sebagai
berikut.
freq_PIC <- data %>%
count(PIC) %>%
arrange(desc(n)) %>%
rename(Frequency = n)
freq_PIC <- data.frame(freq_PIC)
head(freq_PIC)## PIC Frequency
## 1 Grace 24
## 2 Doom 23
## 3 Ross 22
## 4 Michael 21
## 5 Kane 20
## 6 Nadia 13
library(treemap)
treemap(freq_PIC, index = c("PIC","Frequency"), type = "manual",
vSize = "Frequency", vColor = "Frequency", palette = "RdYlGn",
range = c(0, 25), fontsize.labels = c(12,8),
align.labels = list(c("center","center"), c("left", "top")),
title = "Frekuensi PIC Transaksi")Berdasarkan treemap di atas, dapat diamati bahwa intensitas transaksi tiap PIC dapat teramati dari skala luas bidang (semakin luas bidang, maka semakin sering melakukan transaksi) dan warna sesuai dengan legenda yang tertera pada grafik di atas. Nama-nama PIC yang terpampang berwarna hijau dapat dimaknai sebagai PIC dengan performa kerja yang baik karena tercatat melayani transaksi lebih baik dibandingkan dengan nama-nama lainnya. Sementara itu, nama-nama PIC yang terpampang berwarna oranye hingga merah perlu dievaluasi oleh perusahaan karena performa berdasarkan frekuensi transaksi yang dilayani tergolong rendah.
Analisis Apriori Algorithm
Setelah melakukan eksplorasi, didapat beberapa poin awal guna
mengenali pola data yang hendak dianalisis. Selanjutnya, dilakukan
proses analisis asosiasi menggunakan algoritma Apriori. Dalam
software R, analisis tersebut dapat dilakukan menggunakan
library arules. Terlebih dahulu diamati ringkasan singkat
dari data transaksi menggunakan fungsi summary sebagai
berikut.
library('arules')
library(knitr)
library(arulesViz)
dataset2 <- read.transactions("C:/Users/Asus/Downloads/dataset.csv",
sep = ',', rm.duplicates = T)## distribution of transactions with duplicates:
## items
## 25 26 27 28 29 30 31 32 33 34 35 36
## 1 1 1 4 7 7 12 12 28 38 32 55
## transactions as itemMatrix in sparse format with
## 199 rows (elements/itemsets/transactions) and
## 114 columns (items) and a density of 0.03041523
##
## most frequent items:
## A-53 A-42 A-04 A-01 A-08 (Other)
## 46 43 37 34 32 498
##
## element (itemset/transaction) length distribution:
## sizes
## 1 2 3 4 5 6 7 8 9 10 12 38
## 55 32 38 28 12 12 7 7 4 1 2 1
##
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 3.000 3.467 4.000 38.000
##
## includes extended item information - examples:
## labels
## 1 ...1
## 2 ...10
## 3 ...11
Pada hasil ringkasan data di atas, dapat diamati beberapa hal terkait dengan karakteristik data yang hendak dianalisis sebagai berikut.
Pertama, teramati lima jenis item (yang diidentifikasi melalui kode) yang paling sering muncul dalam proses transaksi jual-beli, yaitu A-53, A-42, A-04, A-01, dan A-08. Informasi ini dapat menjadi gambaran awal bagi analis untuk memahami pola data yang ada.
Kedua, dapat teramati pula karakteristik banyaknya item yang terdapat dalam satu kali proses transaksi. Melalui ringkasan data di atas, teramati bahwa konsumen paling sering (55 kali) membeli satu item saja dalam sekali transaksi, disusul dengan transaksi yang melibatkan dua dan tiga item sekaligus. Selain itu, dapat diamati juga adanya satu data janggal, yaitu adanya satu transaksi yang melibatkan 38 item sekaligus. Mengenai data ini, analis perlu melakukan proses cross-check pada data sesungguhnya karena berpotensi berupa anomali data.
Selanjutnya dilakukan perhitungan frekuensi relatif pada keseluruhan data transaksi. Frekuensi relatif (sering kali disebut juga sebagai parameter support) adalah rasio adanya suatu item X pada keseluruhan transaksi. Nilai yang didapat dari rasio frekuensi relatif ini juga menunjukkan banyaknya kebutuhan akan suatu item. Secara matematis, frekuensi relatif (support) dapat dirumuskan sebagai berikut.
\[ \text{Support}(X) = \frac{\text{Banyaknya Transaksi yang Melibatkan Item } X}{\text{Banyaknya Transaksi}} \]
Mengacu pada formula di atas, frekuensi relatif item-item pada data
transaksi dapat diamati menggunakan fungsi
itemFrequencyPlot sebagai berikut.
Berdasarkan grafik di atas, teramati adanya 10 item dengan nilai frekuensi relatif yang paling tinggi. Kesepuluh item di atas tercatat memiliki nilai support sebesar lebih dari 0,1. Hal ini menunjukkan bahwa, mengacu pada 10 item di atas, setidaknya ada 1 item tersebut dalam setiap 10 kali transaksi. Nilai support ini dapat dimaknai pula sebagai salah satu parameter pentingnya atau larisnya suatu item dalam proses transaksi jual-beli yang terjadi.
Selanjutnya akan dilakukan analisis asosiasi menggunakan algoritma
Apriori dengan fungsi apriori. Sesuai dengan metode yang
hendak digunakan—asosiasi—, analisis yang diinginkan adalah analisis
yang memperlihatkan hubungan antara dua atau lebih jenis item dalam
setiap transaksi sehingga perlu diatur parameter support yang
sesuai dengan konteks tersebut. Sebelumnya telah diketahui bahwa 10
nilai support tertinggi berada di angka lebih dari 0,1.
Berdasarkan hal tersebut, nilai support yang representatif
secara intuitif untuk kombinasi dua atau lebih item adalah \(\frac {0,1}{2}\), yaitu 0,05.
Parameter kedua yang akan diatur dalam proses analisis adalah confidence. Parameter confidence sendiri dapat dimaknai sebagai ketergantungan suatu item jika terlebih dahulu (prior) diketahui keberadaan item lain. Dalam konteks transaksi, nilai parameter ini bermakna hubungan dibelinya suatu item jika konsumen sebelumnya telah membeli barang lain. Secara matematis, parameter confidence dapat dirumuskan sebagai berikut.
\[ \text{Confidence}(Y|X) = \frac{\text{Banyaknya Transaksi yang Melibatkan Item } X \text { dan } Y}{\text{Banyaknya Transaksi yang Melibatkan Item } X} \]
Mengacu pada rumus di atas, nilai parameter confidence yang tinggi antara sejumlah item dapat dimaknai sebagai keberadaan hubungan asosiatif yang erat antara item-item tersebut. Oleh karena itu, dalam proses analisis, perlu diatur nilai parameter confidence yang cukup tinggi. Secara default pada software R, nilai confidence yang ditetapkan sebesar 0,8 dirasa cukup tinggi dan dapat digunakan da;am proses analisis sebagai berikut.
## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.8 0.1 1 none FALSE TRUE 5 0.05 1
## maxlen target ext
## 10 rules TRUE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 9
##
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[114 item(s), 199 transaction(s)] done [0.00s].
## sorting and recoding items ... [24 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 done [0.00s].
## writing ... [2 rule(s)] done [0.00s].
## creating S4 object ... done [0.00s].
Pada sintaks di atas, dapat teramati adanya output yang bertuliskan “writing … [2 rule(s)] done [0.00s]”. Hal ini bermakna bahwa proses analisis asosiatif menggunakan algoritma Apriori dengan nilai parameter support = 0,05 dan confidence = 0,8 berhasil menghasilkan dua kombinasi asosiasi antaritem. Selanjutnya, akan ditampilkan hasil analisis dengan mengurutkan kombinasi-kombinasi yang terbentuk berdasarkan nilai lift. Nilai lift sendiri dapat dimaknai sebagai rasio munculnya kombinasi item relatif terhadap rata-rata munculnya salah satu item. Secara matematis, nilai lift dapat diformulasikan sebagai berikut.
\[ \text{Lift}(X→Y) = \frac{\text{Confidence} (X→Y)}{\text{Support}(Y)} \]
Mengacu pada rumus di atas, nilai lift yang semakin tinggi bermakna bahwa kombinasi item yang diingikan adalah kombinasi yang penting dan sering muncul serta menunjukkan adanya hubungan yang erat antara item-item yang ada dalam kombinasi tersebut. Dengan demikian, hasil analisis dapat diamati sebagai berikut.
## lhs rhs support confidence coverage lift count
## [1] {A-24} => {A-01} 0.05025126 0.8333333 0.06030151 4.877451 10
## [2] {A-43} => {A-42} 0.05025126 0.9090909 0.05527638 4.207188 10
Hasil analisis di atas menunjukkan adanya dua kombinasi item dalam transaksi yang memenuhi parameter-paramater yang telah ditentukan. Analisis terhadap kedua kombinasi tersebut dapat dimaknai sebagai berikut.
Berdasarkan nilai support, terdapat 0,0503 (5,03%) transaksi yang mengandung item A-24 dan A-01 sekaligus. Di sisi lain, item A-43 dan A-42 secara sekaligus dapat juga diamati dengan rasio sama pada keseluruhan transaksi.
Berdasarkan nilai confidence, dalam satu transaksi yang sama, 0,8333 (83,33%) konsumen akan membeli item A-24 jika diketahui ia membeli item A-01 juga. Dengan cara yang sama, dapat dimaknai pula bahwa 0,9091 (90,91%) konsumen diketahui akan membeli item A-43 jika diketahui ia membeli item A-42 juga dalam satu transaksi yang sama.
Berdasarkan nilai lift, kombinasi pembelian item A-24 dan A-01 pada satu transaksi yang sama muncul 4,88 kali lebih sering dibandingkan pembelian item yang mengandung item A-01. Hal ini dapat dimaknai juga pada kombinasi pembelian item A-43 dan A-42 yang teridentifikasi muncul 4,21 kali lebih sering dibandingkan transaksi yang mengandung item A-42 saja.
Kesimpulan dan Saran
Eksplorasi yang dilakukan pada data transaksi menunjukkan adanya tren kenaikan frekuensi transaksi jual-beli pada kuartal ketiga dan mengalami tren penurunan pada periode kuartal keempat menjelang awal tahun baru. Analisis asosiatif menggunakan algoritma Apriori kemudian dilakukan dalam rangka mengidentifikasi pola transaksi yang terjadi. Hasil analisis menunjukkan adanya hubungan yang erat pada dua kombinasi item, yaitu A-24 dan A-01 serta A-43 dan A-42. Kedua kombinasi item ini diidentifikasi terkandung dalam 5,03% data transaksi, dengan ketergantungan pembelian antara satu item terhadap item lainnya cukup tinggi—83,33% dan 90,91%—, dan >4 kali lebih sering dibeli dibandingkan transaksi yang mengandung salah satu itemnya saja.
Dengan memperhatikan hasil analisis yang telah dilakukan, dapat diajukan beberapa saran sebagai berikut:
Menjaga persediaan item-item yang memiliki nilai frekuensi relatif (support) tinggi—sebagai contoh adalah item A-53, A-42, A-04, A-01, dan A-08
Memposisikan outlet penjualan yang dapat mengakomodasi konsumen untuk mengambil item-item yang teridentifikasi memiliki ketergantungan pembelian yang kuat antara satu sama lain (nilai confidence yang tinggi)—sebagai contoh adalah item A-24 dan A-01 serta A-43 dan A-42—dalam posisi yang dekat
Meningkatkan persediaan item pada periode kuartal ketiga dan sebaliknya melakukan pengurangan persediaan pada periode kuartal keempat menjelang awal tahun baru guna menghindari situasi oversupply dan undersupply
Daftar Pustaka
Alfianzah R, Handayani RI, Murniyati. 2020. Implementation of apriori algorithm data mining for increase sales. Sinkron: Jurnal Penelitian Teknik Informatika. 5(1): 17-25. doi: doi.org/10.33395/sinkron.v5i1.10587.
Bughin J, Manyika J, Woetzel J. 2016. The Age of Analytics: Competing in a Data-Driven World.. Brussels (BEL): McKinsey & Company.
Hendrawati T. 2015. Kajian metode imputasi dalam menangani missing data. Prosiding Seminar Nasional Matematika dan Pendidikan Matematika. Surakarta (IDN): Universitas Muhammadiyah Surakarta.
Putra PBIS, Suryani NPSM, Aryani S. 2018. Analysis of apriori algorithm on sales transactions to arrange placement of goods on minimarket. International Journal of Engineering and Emerging Technology. 3(1): 13-17.
Putrawansyah F. 2023. Application of the apriori algorithm to purchase patterns. Indonesian Journal of Computer Science. 12(2): 553-561.