# Data Prep
a <- read.table('forests.txt', sep="\t")
dim(a)
## [1] 246 1
a$V1 <- gsub(' ', ',', a$V1)
colnames(a) <- 'itemList'
write.csv(a, 'Forest.csv', row.names = T)
# Read Data
require(arules)
fTxn <- read.transactions('Forest.csv', format = 'basket',
sep = ',', cols = 1, rm.duplicates = F, skip = 1)
fTxn
## transactions in sparse format with
## 246 transactions (rows) and
## 246 items (columns)
# Apriori
min_sup <- 1/246 # sup = at least 1 instance out of 246 (0.4%)
apriori_Rules <- apriori(fTxn, parameter = list(sup = min_sup, conf = 0.0001))
## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support
## 1e-04 0.1 1 none FALSE TRUE 5 0.004065041
## minlen maxlen target ext
## 1 10 rules FALSE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 1
##
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[246 item(s), 246 transaction(s)] done [0.00s].
## sorting and recoding items ... [246 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 done [0.00s].
## writing ... [246 rule(s)] done [0.00s].
## creating S4 object ... done [0.00s].
length(apriori_Rules) # length = transactions !! Each forest has unique combination of trees !!
## [1] 246
# Eclat
eclat_itemSets <- eclat(fTxn, parameter = list(sup = min_sup)) # 0 frequent sets
## Eclat
##
## parameter specification:
## tidLists support minlen maxlen target ext
## FALSE 0.004065041 1 10 frequent itemsets FALSE
##
## algorithmic control:
## sparse sort verbose
## 7 -2 TRUE
##
## Absolute minimum support count: 1
##
## eclat - zero frequent items
eclat_itemSets_1 <- eclat(fTxn, parameter = list(sup = 0.004))
## Eclat
##
## parameter specification:
## tidLists support minlen maxlen target ext
## FALSE 0.004 1 10 frequent itemsets FALSE
##
## algorithmic control:
## sparse sort verbose
## 7 -2 TRUE
##
## Absolute minimum support count: 0
##
## create itemset ...
## set transactions ...[246 item(s), 246 transaction(s)] done [0.00s].
## sorting and recoding items ... [246 item(s)] done [0.00s].
## creating sparse bit matrix ... [246 row(s), 246 column(s)] done [0.00s].
## writing ... [246 set(s)] done [0.00s].
## Creating S4 object ... done [0.00s].
# 246 sets => 'support' parameter in eclat considers only values greater than specified value
# while 'support' parameter in apriori considers values greater than or equal to specified value