Vous êtes sur la page 1sur 22

Extraction des règles avec R

Packages ‘arules’, …
Préparation
 Transformer les données en
transactions
 Des listes à des transactions
 D’une matrice à des transactions
 D’un Df à des transactions
as(variable, ‘’transactions’’)
Inspection des données
résumé
Summary(data)
Visualisation des fréquences des items
itemFrequencyPlot(data,..)
Valeurs manquantes
is.na(data[…])
Listes
création
a_list <- list(c("a","b","c"), c("a","b"),
c("a","b","d"), c("c","e"), c("a","b","d","e"))
Noms des transactions:
names(a_list) <- paste("Tr",c(1:5), sep = "")

Transformation de la liste:
trans <- as(a_list, "transactions")
Matrice
 création
a_matrix <- matrix(c(1,1,1,0,0,
1,1,0,0,0,
1,1,0,1,0,
0,0,1,0,1,
1,1,0,1,1), ncol = 5)
 noms
dimnames(a_matrix) <- list(c("a","b","c","d","e"),
paste("Tr",c(1:5), sep = ""))
 Transformation
trans2 <- as(a_matrix, "transactions")
Data frame
 Sans NA
a_df <- data.frame(
age = as.factor(c(6,8,7,6,9,5)),
grade = as.factor(c(1,3,1,1,4,1)))
trans <- as(a_df, "transactions")
 Avec des NA
a_df2 <- sample(c(LETTERS[1:5], NA),10,TRUE)
a_df2 <- data.frame(X = a_df2, Y = sample(a_df2))
trans3 <- as(a_df2, "transactions")
as(trans3, "data.frame")
 Avec les ids et les items
a_df3 <- data.frame(TID = c(1,1,2,2,2,3),
item=c("a","b","a","b","c", "b"))
trans4 <- as(split(a_df3[,"item"], a_df3[,"TID"]), "transactions")
LIST(trans4)
Préparation des données
 Discrétisation: cut
 cut(vecteur, c(liste des bornes))
Exemple: table(cut(Z, breaks = -6:6))
 categorize(x, breaks = n, quantile = TRUE, labels = c(liste
des nomminaux), ...)
Exemple: categorize(iris[,4], breaks=3, quantile=FALSE,
labels=c("short", "medium", "long"))
 Combiner la discrétisation avec le nommage ordonné
 ordered(cut(vect, c(…)), labels = c(‘’val1", ‘’ at2", ‘’at3",
…))
Exemple ordered(cut(AdultUCI[[ "age"]], c(15,25,45,65,100)),
labels = c("Young", "Middle-aged", "Senior", "Old"))
 Sélection aléatoire des transactions
Random.transactions()
Préparation des données
 Visualiser les données sous forme d’une matrice binaire :
image
Exemple: image(trans)
 Catégoriser les données – convertir les numériques en
catégorie
categorize(x, breaks = 4, quantile = TRUE, labels = NULL, ...)
Exemple:
iris[,1] <- categorize(iris[,1])# utilise les quartiles
iris[,2] <- categorize(iris[,2], breaks=c(0,.25,.75,1))
iris[,3] <- categorize(iris[,3], breaks=c(0,1,2,3,4,5,6,7),
quantile=FALSE) #imposer les limites de coupe
iris[,4] <- categorize(iris[,4], breaks=3, quantile=FALSE,
labels=c("short", "medium", "long")) #attribuer les noms
NB: « categorize » est remplacée par « discretize » dans la
version actuelle de « arules »
Hierarchie
 Agrégation des attributs
 aggregate(x, itemLabels)
x: matrice d’items, itemset ou règle
itemLabels: liste de chaine de caractères
ayant autant de valeurs que x; items
recevant le même item seront agrégés
Utile pour faire de l’extraction multiniveau
 Données « Groceries » intégrées à R
Hierarchie
 Chargement: data(Groceries)
 voir le niveau 1:
 level1 <- itemInfo(Groceries)[["level1"]]
 levels(level1)
 Agréger au niveau 1
 aggregate(Groceries, level1)
 Agréger les règles
 rules <- apriori(Groceries,
parameter=list(supp=0.005, conf=0.5))
 aggregate(rules, level1)
Extraction des règles
 apriori(data, parameter = …,
appearance = …, control = …)
 parameter: liste des paramètres:
support, confiance
parameter = list(supp = 0.5, conf = 0.9, target =
"rules"))
 appearance: paramètre d’affichage ;
appearance = list(rhs = c("income=small",
"income=large"), default="lhs"))
Exemple : rules <- apriori(trans,parameter =
list(supp = 0.5, conf = 0.9,target = "rules"))
Extraction des règles
 Résumé
 Summary()
 Sélection un attribut en antécédent/
conclusion
 ruleselect <- subset(rules, subset = lhs
%in% “liste attributs" & condition)
Remplacer lhs par rhs pour la conclusion
 Voir la liste des règles
 inspect(var[nombre])
Extraction des règles
 Inspecter les règles
 inspect(head(sort(rulesselect, by =
“mesure"), n = nombre de règles));
Mesure=confidence, lift,…
Exemple:inspect(rules[100])
 Utiliser la fonction « plot » de la librairie « arulesViz »
pour une visualisation graphique
Exemple : plot(rules)
plot(rules, method=«matrix3D »)
plot(rules, method=«graph »)
plot(rules, method="grouped")
plot(rules, measure=c("support", "lift"),
shading="confidence")
plot(rules, shading="order", control=list(main
= "Two-key plot"))
plot(subrules2, method="paracoord")
Visualisation des règles
 Visualiser en mode interactif :
sel <- plot(rules, measure=c("support", "lift"),
shading="confidence", interactive=TRUE)
 Sélection des règles les plus pertinentes
subrules2 <- head(sort(rules, by="lift"), 10)
plot(subrules2, method="graph")
plot(subrules2, method="graph",
control=list(type="items"))
 Sauvegarder sous le format graphml et
visualiser avec Gephi
saveAsGraph(head(sort(rules, by="lift"),1000),
file="rules.graphml")
Dissimilarité
 calcul de dissimilarité
dissimilarity(x, y = NULL, method = NULL,
args = NULL,which = "")
Exemple
dissimilarity(trans, which = "items")
dissimilarity(s, which = « transactions")
dissimilarity(s,method=« euclidean »,
which = "items")
Fermé, maximal, sur - ensemble
 is.closed(x) : tester si x est fermé
 is.maximal (x): tester si x est
maximal
 is.superset(x,y,…) : rechercher les
sous ensembles de x dans y
 itemFrequencyPlot(trans) : visualiser
les fréquences des items
Exemple données adult de UCI
 Suppression des attributs
 AdultUCI[["fnlwgt"]] <- NULL
 AdultUCI[["education-num"]] <- NULL
 Discrétisation des attributs
 AdultUCI[[ "age"]] <- ordered(cut(AdultUCI[[
"age"]], c(15,25,45,65,100)),labels =
c("Young", "Middle-aged", "Senior", "Old"))
 AdultUCI[[ "hours-per-week"]] <-
ordered(cut(AdultUCI[[ "hours-per-
week"]],c(0,25,40,60,168)), labels = c("Part-
time", "Full-time", "Over-time", "Workaholic"))
Exemple données adult de UCI
 AdultUCI[[ "capital-gain"]] <-
ordered(cut(AdultUCI[[ "capital-gain"]],c(-
Inf,0,median(AdultUCI[[ "capital-
gain"]][AdultUCI[[ "capital-gain"]]>0]),Inf)),
labels = c("None", "Low", "High"))
 AdultUCI[[ "capital-loss"]] <-
ordered(cut(AdultUCI[[ "capital-loss"]],c(-Inf,0,
median(AdultUCI[[ "capital-loss"]][AdultUCI[[
"capital-loss"]]>0]),Inf)), labels = c("None",
"Low", "High"))
 Transformation en transaction
 Adult <- as(AdultUCI, "transactions")
 Adult
Séquences fréquentes

 Package « arulesSequences »
Séquences fréquentes
 Données
 exemple : zaki inclus dans le package
Library(arulesSequences)
data(zaki)
as(zaki, "data.frame")
Séquences fréquentes
 Extraction des séquences
cspade(data, parameter = NULL, control =
NULL, tmpdir = tempdir())
data: ensembles de transactions
parameter=paramètres à fournir (support,
maxsize, maxlen, …)
 Exemple
s1 <- cspade(zaki, parameter =
list(support = 0.4))
as(s1, "data.frame")
Séquences fréquentes
 Extraction des règles
ruleInduction(x, transactions, confidence =
, control = NULL)

Exemple:
r2 <- ruleInduction(s1, confidence = 0.5)
as(r2, "data.frame")

Vous aimerez peut-être aussi