library(tidyverse)
library(arules)
library(arulesViz)
library(cluster)
library(factoextra)
df <- read.transactions("GroceryDataSet.csv", header=FALSE, sep=",")
summary(df)
## transactions as itemMatrix in sparse format with
##  9835 rows (elements/itemsets/transactions) and
##  169 columns (items) and a density of 0.02609146 
## 
## most frequent items:
##       whole milk other vegetables       rolls/buns             soda 
##             2513             1903             1809             1715 
##           yogurt          (Other) 
##             1372            34055 
## 
## element (itemset/transaction) length distribution:
## sizes
##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16 
## 2159 1643 1299 1005  855  645  545  438  350  246  182  117   78   77   55   46 
##   17   18   19   20   21   22   23   24   26   27   28   29   32 
##   29   14   14    9   11    4    6    1    1    1    1    3    1 
## 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   2.000   3.000   4.409   6.000  32.000 
## 
## includes extended item information - examples:
##             labels
## 1 abrasive cleaner
## 2 artif. sweetener
## 3   baby cosmetics
rules <- apriori(df, parameter=list(support=0.002, confidence=0.5))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##         0.5    0.1    1 none FALSE            TRUE       5   0.002      1
##  maxlen target  ext
##      10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 19 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[169 item(s), 9835 transaction(s)] done [0.00s].
## sorting and recoding items ... [147 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 4 5 done [0.00s].
## writing ... [1098 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
inspect(head(rules, n=10, by="lift"))
##      lhs                     rhs                      support confidence    coverage     lift count
## [1]  {butter,                                                                                      
##       hard cheese}        => {whipped/sour cream} 0.002033554  0.5128205 0.003965430 7.154028    20
## [2]  {beef,                                                                                        
##       citrus fruit,                                                                                
##       other vegetables}   => {root vegetables}    0.002135231  0.6363636 0.003355363 5.838280    21
## [3]  {citrus fruit,                                                                                
##       other vegetables,                                                                            
##       tropical fruit,                                                                              
##       whole milk}         => {root vegetables}    0.003152008  0.6326531 0.004982206 5.804238    31
## [4]  {citrus fruit,                                                                                
##       frozen vegetables,                                                                           
##       other vegetables}   => {root vegetables}    0.002033554  0.6250000 0.003253686 5.734025    20
## [5]  {beef,                                                                                        
##       other vegetables,                                                                            
##       tropical fruit}     => {root vegetables}    0.002745297  0.6136364 0.004473818 5.629770    27
## [6]  {bottled water,                                                                               
##       root vegetables,                                                                             
##       yogurt}             => {tropical fruit}     0.002236909  0.5789474 0.003863752 5.517391    22
## [7]  {herbs,                                                                                       
##       other vegetables,                                                                            
##       whole milk}         => {root vegetables}    0.002440264  0.6000000 0.004067107 5.504664    24
## [8]  {grapes,                                                                                      
##       pip fruit}          => {tropical fruit}     0.002135231  0.5675676 0.003762074 5.408941    21
## [9]  {herbs,                                                                                       
##       yogurt}             => {root vegetables}    0.002033554  0.5714286 0.003558719 5.242537    20
## [10] {beef,                                                                                        
##       other vegetables,                                                                            
##       soda}               => {root vegetables}    0.002033554  0.5714286 0.003558719 5.242537    20
plot(rules, method="grouped")