# Name: Feng-Li Lian, Reg. No. B01921001
# Unit: U13 - Data Connection
# Date: 12/27, 2016

# 軟體套件 核心函數 資料集

# include package = arules
install.packages("arules")

# load library = arules
library( arules )

# obtain dataset = Groceries
data( "Groceries" )
summary( "Groceries" )
inspect( Groceries[ 1:10 ] )
# look at 1:10 data

# rule 0: support = 0.001, confidence = 0.5
rules0 <- apriori( Groceries, parameter = list( support = 0.001, confidence = 0.5 ) )
rules0
inspect( rules0[ 1:10 ] )

# 對規則的控制
# 透過支持度，可靠度共同控制

# rule 1: support: 0.001 -> 0.005
rules1 <- apriori( Groceries, parameter = list( support = 0.005, confidence = 0.5 ) )
rules1

# rule 2: confidence: 0.5 -> 0.6
rules2 <- apriori( Groceries, parameter = list( support = 0.005, confidence = 0.6 ) )
rules2

# rule 3: confidence: 0.6 -> 0.64
rules3 <- apriori( Groceries, parameter = list( support = 0.005, confidence = 0.64 ) )
rules3
inspect( rules3 )

# 主要透過支持度控制

rules.sorted_sup <- sort( rules0, by = "support" )
inspect( rules.sorted_sup[ 1:5 ] )

# 主要透過可靠度控制

rules.sorted_con <- sort( rules0, by = "confidence" )
inspect( rules.sorted_con[ 1:5 ] )

# 主要透過提升度控制

rules.sorted_lift <- sort( rules0, by = "lift" )
inspect( rules.sorted_lift[ 1:5 ] )

# 想要瞭解芥末 (mustard) 的連結規則？

rules4 <- apriori( Groceries, parameter = list( maxlen = 2, support = 0.001, confidence = 0.1 ), appearance = list( rhs = "mustard", default = "lhs" ) )
rules4
inspect( rules4 )


# 改變輸出結果形式
# 想要知道銷售量最高的商品？

itemsets_apr <- apriori( Groceries, parameter = list( support = 0.001, target = "frequent itemsets" ), control = list( sort = -1 ) )
itemsets_apr
inspect( itemsets_apr[ 1:5 ]  )

# 想要知道綑綁銷售策略在哪些商品中作用最顯著？

itemsets_ecl <- eclat( Groceries, parameter = list( minlen = 1, maxlen = 3, support = 0.001, target = "frequent itemsets" ), control = list( sort = -1 ) )
itemsets_ecl
inspect( itemsets_ecl[ 1:5 ]  )

# 連結規則的視覺化

install.packages( "arulesViz" )
library( arulesViz )

rules5 <- apriori( Groceries, parameter = list( support = 0.002, confidence = 0.5 ) )
rules5

# 散點圖：支持度 vs 可靠度
plot( rules5 )

# 散點圖：支持度 vs 提升度
plot( rules5, measure = c( "support", "lift" ), shading = "confidence" )

# 互動散點圖
plot( rules5, interactive = T )

# Two-key 散點圖 (點的顏色越深，商品的種類越多）
plot( rules5, control = list( main = "Two key plot" ), shading = "order" )


#  群組圖：大小 (size): support, 顏色 (color): lift
plot( rules5, method = "group" )

plot( rules5[ 1:50 ], method = "matrix" , measure = "lift" )

plot( rules5[ 1:50 ], method = "matrix3D" , measure = "lift" )

plot( rules5[ 1:50 ], method = "paracoord" )
