# 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