Import libraries
library(arules)
library(arulesViz)
Create a list of transactions
transactions_list <- list(
c("paper", "pens", "pencils"),
c("pens", "ruler"),
c("pencils", "cards", "ruler"),
c("paper", "cards"),
c("pens", "pencils", "cards"),
c("paper", "ruler", "calculator"),
c("paper", "pens", "cards", "folder"),
c("pencils", "ruler", "folder"),
c("paper", "pencils", "cards", "ruler"),
c("pens", "cards")
)
Convert to a transaction class object
trans <- as(transactions_list, "transactions")
Transactions
trans
## transactions in sparse format with
## 10 transactions (rows) and
## 7 items (columns)
Use apriori algorithm
rules <- apriori(trans, parameter = list(supp = 0.25, target = "frequent itemsets"))
Obtain rules and metrics
inspect(rules)
## items support count
## [1] {pens} 0.5 5
## [2] {ruler} 0.5 5
## [3] {pencils} 0.5 5
## [4] {paper} 0.5 5
## [5] {cards} 0.6 6
## [6] {cards, pens} 0.3 3
## [7] {pencils, ruler} 0.3 3
## [8] {cards, pencils} 0.3 3
## [9] {cards, paper} 0.3 3
Obtain metrics and create dataframe
confidence_values <- interestMeasure(rules, measure = "allConfidence", trans)
lift_values <- interestMeasure(rules, measure = "lift", trans)
# Create a data frame with the metrics
metrics_df <- data.frame(
Rule = labels(rules),
Support = quality(rules)$support,
Confidence = confidence_values,
Lift = lift_values
)
Display the metrics
metrics_df
## Rule Support Confidence Lift
## 1 {pens} 0.5 0.5 1.0
## 2 {ruler} 0.5 0.5 1.0
## 3 {pencils} 0.5 0.5 1.0
## 4 {paper} 0.5 0.5 1.0
## 5 {cards} 0.6 0.6 1.0
## 6 {cards,pens} 0.3 0.5 1.0
## 7 {pencils,ruler} 0.3 0.6 1.2
## 8 {cards,pencils} 0.3 0.5 1.0
## 9 {cards,paper} 0.3 0.5 1.0