Jika kita sudah menginstal library(arules) maka kita dapat memanggilnya dengan perintah,
library(Matrix)
library(arules)
##
## Attaching package: 'arules'
## The following objects are masked from 'package:base':
##
## %in%, write
kemudian dapat kita lihat posisi library(arules) dalam direktori kita
search()
## [1] ".GlobalEnv" "package:arules" "package:Matrix"
## [4] "package:stats" "package:graphics" "package:grDevices"
## [7] "package:utils" "package:datasets" "package:methods"
## [10] "Autoloads" "package:base"
terlihat bahwa posisi package(arules) ada di nomor 2, sehingga untuk mengetahui apa saja perintah di dalam package(arules) bisa digunakan perintah,
ls(2)
## [1] "%ain%" "%in%"
## [3] "%pin%" "addComplement"
## [5] "affinity" "aggregate"
## [7] "apriori" "coerce"
## [9] "coverage" "crossTable"
## [11] "decode" "discretize"
## [13] "dissimilarity" "duplicated"
## [15] "eclat" "encode"
## [17] "generatingItemsets" "image"
## [19] "info" "info<-"
## [21] "initialize" "inspect"
## [23] "interestMeasure" "intersect"
## [25] "is.closed" "is.element"
## [27] "is.maximal" "is.subset"
## [29] "is.superset" "itemFrequency"
## [31] "itemFrequencyPlot" "itemInfo"
## [33] "itemInfo<-" "itemIntersect"
## [35] "itemLabels" "itemLabels<-"
## [37] "items" "items<-"
## [39] "itemSetdiff" "itemsetInfo"
## [41] "itemsetInfo<-" "itemUnion"
## [43] "labels" "lhs"
## [45] "lhs<-" "LIST"
## [47] "match" "merge"
## [49] "nitems" "predict"
## [51] "quality" "quality<-"
## [53] "random.patterns" "random.transactions"
## [55] "read.PMML" "read.transactions"
## [57] "recode" "rhs"
## [59] "rhs<-" "ruleInduction"
## [61] "sample" "setdiff"
## [63] "setequal" "show"
## [65] "size" "sort"
## [67] "SORT" "subset"
## [69] "summary" "support"
## [71] "supportingTransactions" "t"
## [73] "tidLists" "transactionInfo"
## [75] "transactionInfo<-" "union"
## [77] "unique" "write"
## [79] "WRITE" "write.PMML"
ada banyak perintah di dalam package(arules) diantaranya adalah algoritma ‘apriori’. Untuk mengetahui secara detil algoritma apriori bisa diketikkan help(apriori).
Mari kita coba menggunakan package(arules) dengan algoritma apriori ini.
Memasukkan data,
data<-list(c("roti","susu","daging","buah"),
c("roti","popok","bir","daging"),
c("sosis","bir","popok"),
c("payung","bir","popok","sambal"),
c("payung","bir","jus","buah"))
kemudian kita panggil data yang telah kita masukkan,
data
## [[1]]
## [1] "roti" "susu" "daging" "buah"
##
## [[2]]
## [1] "roti" "popok" "bir" "daging"
##
## [[3]]
## [1] "sosis" "bir" "popok"
##
## [[4]]
## [1] "payung" "bir" "popok" "sambal"
##
## [[5]]
## [1] "payung" "bir" "jus" "buah"
di dalam package(arules) ini maka data transaksi harus ditransformasikan dalam data berbentuk data transaksi
data.tran<-as(data,"transactions")
data.tran
## transactions in sparse format with
## 5 transactions (rows) and
## 10 items (columns)
terlihat data sebanyak 5 transaksi dan terdiri dari 10 item barang.
class(data.tran)
## [1] "transactions"
## attr(,"package")
## [1] "arules"
perintah diatas untuk mengetahui kelas dari data.tran
data transaksi juga dilihat dalam bentuk matriks(0,1)
as(data.tran,"matrix")
## bir buah daging jus payung popok roti sambal sosis susu
## 1 0 1 1 0 0 0 1 0 0 1
## 2 1 0 1 0 0 1 1 0 0 0
## 3 1 0 0 0 0 1 0 0 1 0
## 4 1 0 0 0 1 1 0 1 0 0
## 5 1 1 0 1 1 0 0 0 0 0
kemudian kita bisa melihat data.tran sebagai data frame
as(data.tran,"data.frame")
## items
## 1 {buah,daging,roti,susu}
## 2 {bir,daging,popok,roti}
## 3 {bir,popok,sosis}
## 4 {bir,payung,popok,sambal}
## 5 {bir,buah,jus,payung}
untuk melihat grafik histogram dari data transaksi ini maka dapat digunakan perintah
itemFrequencyPlot(data.tran,type="absolute")
dengan perintah ‘apriori’ maka ingin dicari barang yang dibeli secara bersamaan
data.ap<-apriori(data.tran)
##
## Parameter specification:
## confidence minval smax arem aval originalSupport support minlen maxlen
## 0.8 0.1 1 none FALSE TRUE 0.1 1 10
## target ext
## rules FALSE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
## Warning in apriori(data.tran): You chose a very low absolute support count of 0. You might run out of memory! Increase minimum support.
## apriori - find association rules with the apriori algorithm
## version 4.21 (2004.05.09) (c) 1996-2004 Christian Borgelt
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[10 item(s), 5 transaction(s)] done [0.00s].
## sorting and recoding items ... [10 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 4 done [0.00s].
## writing ... [70 rule(s)] done [0.00s].
## creating S4 object ... done [0.00s].
package(arules) telah mengerjakan perintah ‘apriori’ dari data yang dimasukkan, namun belum memperlihatkan pola aturan dari item barang yang ada di transaksi.
Perintah berikut menampilkan pola aturan dari barang yang terbeli,
inspect(head(sort(data.ap,by="support"),n=6))
## lhs rhs support confidence lift
## 1 {} => {bir} 0.8 0.8 1.000000
## 2 {popok} => {bir} 0.6 1.0 1.250000
## 3 {daging} => {roti} 0.4 1.0 2.500000
## 4 {roti} => {daging} 0.4 1.0 2.500000
## 5 {payung} => {bir} 0.4 1.0 1.250000
## 6 {sosis} => {popok} 0.2 1.0 1.666667
keterangan: lhs = left hand-side rhs = right hand-side
nilai minimum support dan nilai (n) aturan asosiasi yang terbentuk dapat dirubah-rubah seperti contoh berikut,
data.ap1<-apriori(data.tran,parameter=list(supp=0.4,maxlen=3))
##
## Parameter specification:
## confidence minval smax arem aval originalSupport support minlen maxlen
## 0.8 0.1 1 none FALSE TRUE 0.4 1 3
## target ext
## rules FALSE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## apriori - find association rules with the apriori algorithm
## version 4.21 (2004.05.09) (c) 1996-2004 Christian Borgelt
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[10 item(s), 5 transaction(s)] done [0.00s].
## sorting and recoding items ... [6 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 done [0.00s].
## writing ... [5 rule(s)] done [0.00s].
## creating S4 object ... done [0.00s].
kemudian untuk melihat aturannya,
inspect(head(sort(data.ap1,by="support"),n=20))
## lhs rhs support confidence lift
## 1 {} => {bir} 0.8 0.8 1.00
## 2 {popok} => {bir} 0.6 1.0 1.25
## 3 {daging} => {roti} 0.4 1.0 2.50
## 4 {roti} => {daging} 0.4 1.0 2.50
## 5 {payung} => {bir} 0.4 1.0 1.25
sehingga kita bisa mengambil kesimpulan terdapat 5 aturan dan ada beberapa yang cukup sedikit ‘aneh’ misalnya,
jika membeli ‘popok’ maka membeli ‘bir’ dengan nilai support = 0.6 dan nilai confident = 1. Artinya dari data transaksi terdapat 60% nya membeli popok dan bir secara bersamaan dan jika seseorang membeli popok maka pasti akan membeli bir. Menurut jurnalnya maka diketahui bahwa yang membeli popok dan bir secara bersamaan adalah orang laki-laki(suami) yang berbelanja untuk kebutuhan rumah tangganya.
Salam,
RB Fajriya Hakim email hakimf@uii.ac.id
Dept of Statistics Universitas Islam Indonesia