Analisi del carrello in R
Christopher Bruffaerts
Statistician
| TID | Transazione |
|---|---|
| 1 | {Pane, Burro, Formaggio, Vino} |
| 2 | {Pane, Burro, Vino} |
| 3 | {Pane, Burro} |
| 4 | {Burro, Formaggio, Vino} |
| 5 | {Burro, Formaggio} |
| 6 | {Formaggio, Vino} |
| 7 | {Burro, Vino} |
Obiettivo: estrarre regole di associazione
Esempi:
Metriche: Supporto, confidenza, lift, ...
| TID | Transazione |
|---|---|
| 1 | {Pane, Burro, Formaggio, Vino} |
| 2 | {Pane, Burro, Vino} |
| 3 | {Pane, Burro} |
| 4 | {Burro, Formaggio, Vino} |
| 5 | {Burro, Formaggio} |
| 6 | {Formaggio, Vino} |
| 7 | {Burro, Vino} |
Supporto: "popolarità di un itemset"
Esempi:
| TID | Transazione |
|---|---|
| 1 | {Pane, Burro, Formaggio, Vino} |
| 2 | {Pane, Burro, Vino} |
| 3 | {Pane, Burro} |
| 4 | {Burro, Formaggio, Vino} |
| 5 | {Burro, Formaggio} |
| 6 | {Formaggio, Vino} |
| 7 | {Burro, Vino} |
Confidenza: "quanto spesso la regola è vera"
conf(X $\rightarrow$ Y) = supp(X $\cup$ Y) / supp(X)
La confidenza indica la percentuale in cui Y è acquistato con X.
Esempio:
X = {Pane}
Y = {Burro}
conf(X $\rightarrow$ Y) = $\frac{3/7}{3/7}$ = 100%
| TID | Transazione |
|---|---|
| 1 | {Pane, Burro, Formaggio, Vino} |
| 2 | {Pane, Burro, Vino} |
| 3 | {Pane, Burro} |
| 4 | {Burro, Formaggio, Vino} |
| 5 | {Burro, Formaggio} |
| 6 | {Formaggio, Vino} |
| 7 | {Burro, Vino} |
Lift: "forza dell’associazione"
lift(X $\rightarrow$ Y) = $\dfrac{supp(X \cup Y)}{supp(X) \times supp(Y)}$
Esempio:
X = {Pane}; Y = {Burro}
lift(X $\rightarrow$ Y) = $\frac{3/7}{(3/7)*(6/7)} = \frac{7}{6}$ ~ 1,16
library(arules)
# Frequent itemsets
supp.cw = apriori(trans, # the transactional dataset
# Parameter list
parameter=list(
# Minimum Support
supp=0.2,
# Minimum Confidence
conf=0.4,
# Minimum length
minlen=2,
# Target
target="frequent itemsets"),
# Appearence argument
appearance = list(
items = c("Cheese","Wine"))
)
library(arules)
# Rules
rules.b.rhs = apriori(trans, # the transactional dataset
# Parameter list
parameter=list(
# Minimum Support
supp=0.2,
# Minimum Confidence
conf=0.4,
# Minimum length
minlen=2,
# Target
target="rules"),
# Appearence argument
appearance = list(
rhs = "Butter",
default = "lhs")
)
| TID | Transazione |
|---|---|
| 1 | {Pane, Burro, Formaggio, Vino} |
| 2 | {Pane, Burro, Vino} |
| 3 | {Pane, Burro} |
| 4 | {Burro, Formaggio, Vino} |
| 5 | {Burro, Formaggio} |
| 6 | {Formaggio, Vino} |
| 7 | {Burro, Vino} |
Recupera gli itemset frequenti
supp.all = apriori(trans,
parameter=list(supp=3/7,
target="frequent itemsets"))
inspect(head(sort(supp.all,by="support"),3))
items support count
[1] {Butter} 0.8571429 6
[2] {Wine} 0.7142857 5
[3] {Cheese} 0.5714286 4
| TID | Transazione |
|---|---|
| 1 | {Pane, Burro, Formaggio, Vino} |
| 2 | {Pane, Burro, Vino} |
| 3 | {Pane, Burro} |
| 4 | {Burro, Formaggio, Vino} |
| 5 | {Burro, Formaggio} |
| 6 | {Formaggio, Vino} |
| 7 | {Burro, Vino} |
Recupera le regole
# Regole con "Butter" a destra (rhs)
rules.b.rhs = apriori(trans,
parameter=list(
minlen=2,
target="rules"),
appearance = list(
rhs="Butter",
default = "lhs")
)
inspect(head(sort(rules.b.rhs,by="lift")), 5)
| TID | Transazione |
|---|---|
| 1 | {Pane, Burro, Formaggio, Vino} |
| 2 | {Pane, Burro, Vino} |
| 3 | {Pane, Burro} |
| 4 | {Burro, Formaggio, Vino} |
| 5 | {Burro, Formaggio} |
| 6 | {Formaggio, Vino} |
| 7 | {Burro, Vino} |
Recupera le regole
lhs rhs support confidence lift count
[1] {Bread} => {Butter} 0.42 1.0 1.16 3
[2] {Bread,Cheese} => {Butter} 0.14 1.0 1.16 1
[3] {Bread,Wine} => {Butter} 0.28 1.0 1.16 2
[4] {Bread,Cheese,Wine} => {Butter} 0.14 1.0 1.16 1
[5] {Wine} => {Butter} 0.57 0.8 0.93 4
Analisi del carrello in R