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:

  1. Date, yaitu peubah yang menerangkan tanggal terjadinya transaksi

  2. PIC, yaitu peubah yang menerangkan penanggung jawab—dalam konteks ini adalah kasir—yang bertugas dalam tiap transaksi

  3. 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,

colSums(is.na(raw_data))
## 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,

dataset <- data[,-c(1,2)]
head(dataset)
##   ...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>
write.csv(dataset, "dataset.csv", row.names = FALSE)

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
summary(dataset2)
## 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.

  1. 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.

  2. 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.

itemFrequencyPlot(dataset2, topN=10, col="yellow",
                  main="Frekuensi Relatif Item Transaksi")

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.

rules <- apriori(data = dataset2, 
                 parameter = list(support = 0.05, confidence = 0.8))
## 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.

inspect(sort(rules, by = 'lift'))
##     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.

  1. 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.

  2. 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.

  3. 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:

  1. 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

  2. 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

  3. 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.