Big Data Analytics - Règles d'association
Soit I = i 1 , i 2 , ..., i n un ensemble de n attributs binaires appelés items. Soit D = t 1 , t 2 , ..., t m un ensemble de transactions appelé base de données. Chaque transaction en D a un identifiant de transaction unique et contient un sous-ensemble des éléments en I. Une règle est définie comme une implication de la forme X ⇒ Y où X, Y ⊆ I et X ∩ Y = ∅.
Les ensembles d'éléments (pour les ensembles d'éléments courts) X et Y sont appelés antécédent (côté gauche ou LHS) et conséquents (côté droit ou RHS) de la règle.
Pour illustrer les concepts, nous utilisons un petit exemple du domaine des supermarchés. L'ensemble des éléments est I = {lait, pain, beurre, bière} et une petite base de données contenant les éléments est présentée dans le tableau suivant.
identifiant de transaction | Articles |
---|---|
1 | lait, pain |
2 | Pain au beurre |
3 | Bière |
4 | lait, pain, beurre |
5 | Pain au beurre |
Un exemple de règle pour le supermarché pourrait être {lait, pain} ⇒ {beurre}, ce qui signifie que si du lait et du pain sont achetés, les clients achètent également du beurre. Pour sélectionner des règles intéressantes parmi l'ensemble de toutes les règles possibles, des contraintes sur diverses mesures de signification et d'intérêt peuvent être utilisées. Les contraintes les plus connues sont les seuils minimaux de soutien et de confiance.
Le support supp (X) d'un ensemble d'articles X est défini comme la proportion de transactions dans l'ensemble de données qui contient l'ensemble d'articles. Dans l'exemple de base de données du tableau 1, l'ensemble d'items {lait, pain} a un support de 2/5 = 0,4 puisqu'il se produit dans 40% de toutes les transactions (2 transactions sur 5). Trouver des ensembles d'éléments fréquents peut être considéré comme une simplification du problème d'apprentissage non supervisé.
La confiance d'une règle est définie conf (X ⇒ Y) = supp (X ∪ Y) / supp (X). Par exemple, la règle {lait, pain} ⇒ {beurre} a une confiance de 0,2 / 0,4 = 0,5 dans la base de données du tableau 1, ce qui signifie que pour 50% des transactions contenant du lait et du pain, la règle est correcte. La confiance peut être interprétée comme une estimation de la probabilité P (Y | X), la probabilité de trouver l'ERS de la règle dans les transactions à la condition que ces transactions contiennent également la LHS.
Dans le script situé dans bda/part3/apriori.R le code pour implémenter le apriori algorithm peut être trouvé.
# Load the library for doing association rules
# install.packages(’arules’)
library(arules)
# Data preprocessing
data("AdultUCI")
AdultUCI[1:2,]
AdultUCI[["fnlwgt"]] <- NULL
AdultUCI[["education-num"]] <- NULL
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"))
AdultUCI[[ "capital-gain"]] <- ordered(cut(AdultUCI[[ "capital-gain"]],
c(-Inf,0,median(AdultUCI[[ "capital-gain"]][AdultUCI[[ "capitalgain"]]>0]),Inf)),
labels = c("None", "Low", "High"))
AdultUCI[[ "capital-loss"]] <- ordered(cut(AdultUCI[[ "capital-loss"]],
c(-Inf,0, median(AdultUCI[[ "capital-loss"]][AdultUCI[[ "capitalloss"]]>0]),Inf)),
labels = c("none", "low", "high"))
Afin de générer des règles à l'aide de l'algorithme apriori, nous devons créer une matrice de transaction. Le code suivant montre comment procéder dans R.
# Convert the data into a transactions format
Adult <- as(AdultUCI, "transactions")
Adult
# transactions in sparse format with
# 48842 transactions (rows) and
# 115 items (columns)
summary(Adult)
# Plot frequent item-sets
itemFrequencyPlot(Adult, support = 0.1, cex.names = 0.8)
# generate rules
min_support = 0.01
confidence = 0.6
rules <- apriori(Adult, parameter = list(support = min_support, confidence = confidence))
rules
inspect(rules[100:110, ])
# lhs rhs support confidence lift
# {occupation = Farming-fishing} => {sex = Male} 0.02856148 0.9362416 1.4005486
# {occupation = Farming-fishing} => {race = White} 0.02831579 0.9281879 1.0855456
# {occupation = Farming-fishing} => {native-country 0.02671881 0.8758389 0.9759474
= United-States}