Contoh membuat data transaksi dari list (menggunakan data dari Tabel
1)
transaksi_list <- list(
c("Roti", "Selai", "Susu"),
c("Roti", "Mentega"),
c("Roti", "Selai", "Mentega"),
c("Susu", "Kopi"),
c("Roti", "Selai", "Susu", "Kopi")
)
# Memberi nama pada transaksi (opsional tapi baik untuk inspeksi)
names(transaksi_list) <- paste("T", 1:length(transaksi_list),
sep="")
# Menginstal dan memuat paket arules jika belum terinstal
library(arules)
## Loading required package: Matrix
##
## Attaching package: 'arules'
## The following objects are masked from 'package:base':
##
## abbreviate, write
# Mengkonversi list menjadi objek transactions
data_transaksi <- as(transaksi_list, "transactions")
# Melihat ringkasan data transaksi
summary(data_transaksi)
## transactions as itemMatrix in sparse format with
## 5 rows (elements/itemsets/transactions) and
## 5 columns (items) and a density of 0.56
##
## most frequent items:
## Roti Selai Susu Kopi Mentega (Other)
## 4 3 3 2 2 0
##
## element (itemset/transaction) length distribution:
## sizes
## 2 3 4
## 2 2 1
##
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.0 2.0 3.0 2.8 3.0 4.0
##
## includes extended item information - examples:
## labels
## 1 Kopi
## 2 Mentega
## 3 Roti
##
## includes extended transaction information - examples:
## transactionID
## 1 T1
## 2 T2
## 3 T3
# Menginspeksi beberapa transaksi pertama
inspect(data_transaksi[1:5])
## items transactionID
## [1] {Roti, Selai, Susu} T1
## [2] {Mentega, Roti} T2
## [3] {Mentega, Roti, Selai} T3
## [4] {Kopi, Susu} T4
## [5] {Kopi, Roti, Selai, Susu} T5
Menginspeksi semua aturan yang dihasilkan
## lhs rhs support confidence coverage lift
## [1] {Mentega} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [2] {Mentega} => {Roti} 0.4 1.0000000 0.4 1.2500000
## [3] {Roti} => {Mentega} 0.4 0.5000000 0.8 1.2500000
## [4] {Kopi} => {Susu} 0.4 1.0000000 0.4 1.6666667
## [5] {Susu} => {Kopi} 0.4 0.6666667 0.6 1.6666667
## [6] {Kopi} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [7] {Kopi} => {Roti} 0.2 0.5000000 0.4 0.6250000
## [8] {Susu} => {Selai} 0.4 0.6666667 0.6 1.1111111
## [9] {Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111
## [10] {Susu} => {Roti} 0.4 0.6666667 0.6 0.8333333
## [11] {Roti} => {Susu} 0.4 0.5000000 0.8 0.8333333
## [12] {Selai} => {Roti} 0.6 1.0000000 0.6 1.2500000
## [13] {Roti} => {Selai} 0.6 0.7500000 0.8 1.2500000
## [14] {Mentega, Selai} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [15] {Mentega, Roti} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [16] {Kopi, Susu} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [17] {Kopi, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [18] {Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## [19] {Kopi, Susu} => {Roti} 0.2 0.5000000 0.4 0.6250000
## [20] {Kopi, Roti} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [21] {Roti, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## [22] {Kopi, Selai} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [23] {Kopi, Roti} => {Selai} 0.2 1.0000000 0.2 1.6666667
## [24] {Selai, Susu} => {Roti} 0.4 1.0000000 0.4 1.2500000
## [25] {Roti, Susu} => {Selai} 0.4 1.0000000 0.4 1.6666667
## [26] {Roti, Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111
## [27] {Kopi, Selai, Susu} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [28] {Kopi, Roti, Susu} => {Selai} 0.2 1.0000000 0.2 1.6666667
## [29] {Kopi, Roti, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [30] {Roti, Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## count
## [1] 1
## [2] 2
## [3] 2
## [4] 2
## [5] 2
## [6] 1
## [7] 1
## [8] 2
## [9] 2
## [10] 2
## [11] 2
## [12] 3
## [13] 3
## [14] 1
## [15] 1
## [16] 1
## [17] 1
## [18] 1
## [19] 1
## [20] 1
## [21] 1
## [22] 1
## [23] 1
## [24] 2
## [25] 2
## [26] 2
## [27] 1
## [28] 1
## [29] 1
## [30] 1
# Mengurutkan aturan berdasarkan confidence
aturan_urut_conf <- sort(aturan, by = "confidence", decreasing =
TRUE)
inspect(aturan_urut_conf)
## lhs rhs support confidence coverage lift
## [1] {Mentega} => {Roti} 0.4 1.0000000 0.4 1.2500000
## [2] {Kopi} => {Susu} 0.4 1.0000000 0.4 1.6666667
## [3] {Selai} => {Roti} 0.6 1.0000000 0.6 1.2500000
## [4] {Mentega, Selai} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [5] {Kopi, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [6] {Kopi, Roti} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [7] {Kopi, Selai} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [8] {Kopi, Roti} => {Selai} 0.2 1.0000000 0.2 1.6666667
## [9] {Selai, Susu} => {Roti} 0.4 1.0000000 0.4 1.2500000
## [10] {Roti, Susu} => {Selai} 0.4 1.0000000 0.4 1.6666667
## [11] {Kopi, Selai, Susu} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [12] {Kopi, Roti, Susu} => {Selai} 0.2 1.0000000 0.2 1.6666667
## [13] {Kopi, Roti, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [14] {Roti} => {Selai} 0.6 0.7500000 0.8 1.2500000
## [15] {Susu} => {Kopi} 0.4 0.6666667 0.6 1.6666667
## [16] {Susu} => {Selai} 0.4 0.6666667 0.6 1.1111111
## [17] {Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111
## [18] {Susu} => {Roti} 0.4 0.6666667 0.6 0.8333333
## [19] {Roti, Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111
## [20] {Mentega} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [21] {Roti} => {Mentega} 0.4 0.5000000 0.8 1.2500000
## [22] {Kopi} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [23] {Kopi} => {Roti} 0.2 0.5000000 0.4 0.6250000
## [24] {Roti} => {Susu} 0.4 0.5000000 0.8 0.8333333
## [25] {Mentega, Roti} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [26] {Kopi, Susu} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [27] {Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## [28] {Kopi, Susu} => {Roti} 0.2 0.5000000 0.4 0.6250000
## [29] {Roti, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## [30] {Roti, Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## count
## [1] 2
## [2] 2
## [3] 3
## [4] 1
## [5] 1
## [6] 1
## [7] 1
## [8] 1
## [9] 2
## [10] 2
## [11] 1
## [12] 1
## [13] 1
## [14] 3
## [15] 2
## [16] 2
## [17] 2
## [18] 2
## [19] 2
## [20] 1
## [21] 2
## [22] 1
## [23] 1
## [24] 2
## [25] 1
## [26] 1
## [27] 1
## [28] 1
## [29] 1
## [30] 1
# Mengurutkan aturan berdasarkan lift
aturan_urut_lift <- sort(aturan, by = "lift", decreasing = TRUE)
inspect(aturan_urut_lift)
## lhs rhs support confidence coverage lift
## [1] {Kopi} => {Susu} 0.4 1.0000000 0.4 1.6666667
## [2] {Kopi, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [3] {Kopi, Roti} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [4] {Kopi, Roti} => {Selai} 0.2 1.0000000 0.2 1.6666667
## [5] {Roti, Susu} => {Selai} 0.4 1.0000000 0.4 1.6666667
## [6] {Kopi, Roti, Susu} => {Selai} 0.2 1.0000000 0.2 1.6666667
## [7] {Kopi, Roti, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667
## [8] {Susu} => {Kopi} 0.4 0.6666667 0.6 1.6666667
## [9] {Mentega} => {Roti} 0.4 1.0000000 0.4 1.2500000
## [10] {Roti} => {Mentega} 0.4 0.5000000 0.8 1.2500000
## [11] {Selai} => {Roti} 0.6 1.0000000 0.6 1.2500000
## [12] {Roti} => {Selai} 0.6 0.7500000 0.8 1.2500000
## [13] {Mentega, Selai} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [14] {Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## [15] {Roti, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## [16] {Kopi, Selai} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [17] {Selai, Susu} => {Roti} 0.4 1.0000000 0.4 1.2500000
## [18] {Kopi, Selai, Susu} => {Roti} 0.2 1.0000000 0.2 1.2500000
## [19] {Roti, Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.2500000
## [20] {Susu} => {Selai} 0.4 0.6666667 0.6 1.1111111
## [21] {Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111
## [22] {Roti, Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111
## [23] {Mentega} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [24] {Kopi} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [25] {Roti} => {Susu} 0.4 0.5000000 0.8 0.8333333
## [26] {Mentega, Roti} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [27] {Kopi, Susu} => {Selai} 0.2 0.5000000 0.4 0.8333333
## [28] {Susu} => {Roti} 0.4 0.6666667 0.6 0.8333333
## [29] {Kopi} => {Roti} 0.2 0.5000000 0.4 0.6250000
## [30] {Kopi, Susu} => {Roti} 0.2 0.5000000 0.4 0.6250000
## count
## [1] 2
## [2] 1
## [3] 1
## [4] 1
## [5] 2
## [6] 1
## [7] 1
## [8] 2
## [9] 2
## [10] 2
## [11] 3
## [12] 3
## [13] 1
## [14] 1
## [15] 1
## [16] 1
## [17] 2
## [18] 1
## [19] 1
## [20] 2
## [21] 2
## [22] 2
## [23] 1
## [24] 1
## [25] 2
## [26] 1
## [27] 1
## [28] 2
## [29] 1
## [30] 1
# Memfilter aturan, misalnya yang mengandung "Susu" di consequent
(rhs)
## nonstandardGenericFunction for "rhs" defined from package "arules"
##
## function (x)
## {
## standardGeneric("rhs")
## }
## <bytecode: 0x000001769742f2d8>
## <environment: 0x00000176974224a0>
## Methods may be defined for arguments: x
## Use showMethods(rhs) for currently available ones.
aturan_susu_rhs <- subset(aturan, rhs %in% "Susu")
inspect(aturan_susu_rhs)
## lhs rhs support confidence coverage lift count
## [1] {Kopi} => {Susu} 0.4 1.0000000 0.4 1.6666667 2
## [2] {Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111 2
## [3] {Roti} => {Susu} 0.4 0.5000000 0.8 0.8333333 2
## [4] {Kopi, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667 1
## [5] {Kopi, Roti} => {Susu} 0.2 1.0000000 0.2 1.6666667 1
## [6] {Roti, Selai} => {Susu} 0.4 0.6666667 0.6 1.1111111 2
## [7] {Kopi, Roti, Selai} => {Susu} 0.2 1.0000000 0.2 1.6666667 1
# Memfilter aturan dengan lift > 1
aturan_lift_tinggi <- subset(aturan, lift > 1)
inspect(aturan_lift_tinggi)
## lhs rhs support confidence coverage lift
## [1] {Mentega} => {Roti} 0.4 1.0000000 0.4 1.250000
## [2] {Roti} => {Mentega} 0.4 0.5000000 0.8 1.250000
## [3] {Kopi} => {Susu} 0.4 1.0000000 0.4 1.666667
## [4] {Susu} => {Kopi} 0.4 0.6666667 0.6 1.666667
## [5] {Susu} => {Selai} 0.4 0.6666667 0.6 1.111111
## [6] {Selai} => {Susu} 0.4 0.6666667 0.6 1.111111
## [7] {Selai} => {Roti} 0.6 1.0000000 0.6 1.250000
## [8] {Roti} => {Selai} 0.6 0.7500000 0.8 1.250000
## [9] {Mentega, Selai} => {Roti} 0.2 1.0000000 0.2 1.250000
## [10] {Kopi, Selai} => {Susu} 0.2 1.0000000 0.2 1.666667
## [11] {Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.250000
## [12] {Kopi, Roti} => {Susu} 0.2 1.0000000 0.2 1.666667
## [13] {Roti, Susu} => {Kopi} 0.2 0.5000000 0.4 1.250000
## [14] {Kopi, Selai} => {Roti} 0.2 1.0000000 0.2 1.250000
## [15] {Kopi, Roti} => {Selai} 0.2 1.0000000 0.2 1.666667
## [16] {Selai, Susu} => {Roti} 0.4 1.0000000 0.4 1.250000
## [17] {Roti, Susu} => {Selai} 0.4 1.0000000 0.4 1.666667
## [18] {Roti, Selai} => {Susu} 0.4 0.6666667 0.6 1.111111
## [19] {Kopi, Selai, Susu} => {Roti} 0.2 1.0000000 0.2 1.250000
## [20] {Kopi, Roti, Susu} => {Selai} 0.2 1.0000000 0.2 1.666667
## [21] {Kopi, Roti, Selai} => {Susu} 0.2 1.0000000 0.2 1.666667
## [22] {Roti, Selai, Susu} => {Kopi} 0.2 0.5000000 0.4 1.250000
## count
## [1] 2
## [2] 2
## [3] 2
## [4] 2
## [5] 2
## [6] 2
## [7] 3
## [8] 3
## [9] 1
## [10] 1
## [11] 1
## [12] 1
## [13] 1
## [14] 1
## [15] 1
## [16] 2
## [17] 2
## [18] 2
## [19] 1
## [20] 1
## [21] 1
## [22] 1