Vous êtes sur la page 1sur 35

Extraction de règles

d’association
BDMD-M2
Bernd Amann
Paris 6

B. Amann UPMC BDMD-M2 Règles d'association 1


Exemple : analyse des caddies
 Données sur les achats dans un supermarché :
 grand ensemble de produits (item) Relation M-N
 grand ensemble de caddies (transactions)
 Objectifs du supermarché :
 Améliorer le placement des produits : quels produits faut-il rapprocher ?
 « Fausses » soldes : on solde la bière et on augmente le prix des chips
 Informations utiles :
 Ensembles fréquents : produits souvent achetés ensembles ?
 {bière, chips} (0.5)
 Règles d'association : l'achat d'un ensemble de produits A implique avec
une grande probabilité l'achat d’un autre ensemble de produits B ?
 {bière} → {chips} (0.8), {chips} → {bierre} (0.4)

B. Amann UPMC BDMD-M2 Règles d'association 2


Exemple : documents Objets Transactions

(web) Web
Internet
ADSL
 Découverte de concepts :
 ensembles de mots qui apparaissent dans
beaucoup de documents
 Découverte de plagiats : To be or not to be…

 ensembles de documents qui contiennent


souvent les mêmes phrases A horse! a horse! my ...

 Découverte de pages thématiques ou


« miroir » :
 Pages « thématiquement » proches : pages qui
sont souvent référencées par les mêmes pages
 Pages « miroir » : ensembles de pages qui
partagent beaucoup de liens vers les mêmes
pages

B. Amann UPMC BDMD-M2 Règles d'association 3


Détection de règles d'association
 Ensemble de transactions ti :
 ti : ensemble d’items qu'un client a acheté ensemble à un moment donné
 Ensemble fréquent (frequent item set) :
 A est un ensemble fréquent si les items dans A se trouvent souvent (au dessus d’un
seuil) ensemble dans une transaction ti : A⊆t
 Association (A,B) :
 A et B se trouvent dans la même transaction (co-occurrence) : A ⊆t, B ⊆t
 Règle d’association A→B (p) :
 Si A est dans une transaction t, B est aussi dans la transaction t avec une probabilité
(confiance) p

Objectif : Détecter les ensembles fréquents et


les règles d’association probables

B. Amann UPMC BDMD-M2 Règles d'association 4


Modélisation du problème : tables
Table relationnelle R(T,Y): R Caddie Produit
 T=transaction=caddie c1 lait
 Y=item=produit {lait} c1 miel

Transactions : {lait, miel}


c1 c1 confiture
c2 lait
 { t | ∃ a R(t,a) } c2
{lait, confiture} c2 confiture
Items : c3
c3 miel
{pain}
 { a | ∃ t R(t,a) } c3 pain

Associations :
 { (a,b) | ∃ t R(t,a), R(t,b) }

B. Amann UPMC BDMD-M2 Règles d'association 5


Modélisation du problème : Matrices 0/1
R
 Transactions x Items Caddie Produit
c1 lait
 Valeurs : c1 miel
 M[t,a]=1 si R(t,a) c1 confiture
 M[t,a]=0 sinon c2 lait
c2 confiture
 Association (a,b) : c2 miel
 (a,b) si ∃ t M[t,a]*M[t,b]=1 c2 pain

M lait confiture pain miel


c1 1 1 0 1
c2 1 1 1 1

B. Amann UPMC BDMD-M2 Règles d'association 6


Propriétés des données
Taille de données importante :
 Des milliers ou millions de transactions
(lignes) et produits (colonnes)
A B C D … … … … …
 On ne peut pas les gérer en mémoire T1 1 1 1 0 1 1 1
T2 0 1 0 1 1 1 1

Distribution « fortes » des données :


 Table R(X,A): Ti 0 0 1 0 0 0 0
select (count(distinct A)) from R Tj 1 0 1 0 1 1 1

>>
select avg(count(A)) from R
0 1 1 0 0 0 0
group by X Tn-1 1 0 0 0 1 1 1

 Matrice : Beaucoup de champs = 0 Tn 1 1 1 0 1 1 1

(matrice creuse)

B. Amann UPMC BDMD-M2 Règles d'association 7


Confiance et support
 Règle d’association : A → B (p,s)
 Confiance (p) :
 probabilité du lien de causalité entre A et B
 Support (s) :
 probabilité qu’il existe une association (A,B) dans une
transaction donnée (« fréquence » de AB)

 On s’intéresse aux règles d’association avec une


confiance et un support élevé

B. Amann UPMC BDMD-M2 Règles d'association 8


Calcul du support
Support d’une règle A→B (ou fréquence d’un ensemble AB) :
 Pourcentage d’enregistrements qui vérifient la règle A→B
 Nombre de lignes où A∧B est vrai divisé par le nombre total
D des lignes (transactions) dans la matrice
lait confiture pain miel
∣A∧B∣
Supp  A B= 1 1 0 1
∣D∣
1 1 1 1

 Observation évidente : Supp(A → B) = Supp(B → A)

B. Amann UPMC BDMD-M2 Règles d'association 9


Calcul de la confiance
Confiance (probabilité) d’une règle A→B :
 Rapport entre le nombre de lignes où A ∧B est vrai
et le nombre des lignes où A est vrai :
∣A∧B∣
Conf  A  B =
∣A∣
∣A∧B∣∗∣D∣ Supp  A∧B 
Conf  A  B = =
∣A∣∗∣D∣ Supp  A 

 Problème principal : trouver les ensembles d’items


AB avec un support > s (ensembles fréquents)

B. Amann UPMC BDMD-M2 Règles d'association 10


Support : Modélisation relationnelle
 Support de tous les couples de produits dans R en
dessus d’une borne s (en nombre de nuplets) :
select r1.Produit, r2.Produit, count(*)
R
from R r1, R r2
Caddy Produit
where r1.Produit < r2.Produit
1 lait
and r1.Caddy=r2.Caddy 1 confiture
group by r1.Produit, r2.Produit 2 lait
having count(*) > s 2 confiture
2 miel
2 pain
B. Amann UPMC BDMD-M2 Règles d'association 11
Confiance et Intêret
 Règle X → Y
 Intérêt :
 Conf(X → Y) – Supp(Y)
 Seulement les règles avec une confiance et un
intérêt (positif ou négatif) élevé sont
intéressantes.
 Essayez de justifier pourquoi ?

B. Amann UPMC BDMD-M2 Règles d'association 12


Ensemble maximal et ensemble
fermé
 X est un ensemble Count maximal fermé
fréquent maximal si (s=3)
A 4 non non
aucun autre ensemble B 5 non oui
Y⊃X est fréquent C 3 non non
 X est un ensemble AB 4 oui oui
AC 2 non non
fermé si aucun autre BC 3 oui oui
ensemble Y⊃X ABC 2 non oui

possède la même
fréquence (>0)
B. Amann UPMC BDMD-M2 Règles d'association 13
Modèle de calcul
 Hypothèses : les données se trouvent dans des fichiers
sur disque et regroupées par paniers
 Le coût est mesuré en nombre E/S disque
 En pratique, les algorithmes comptent (eg. nombres de
couples) en
 en lisant les données plusieurs fois (passe)
 en évitant d’écrire des données temporaires sur disque (swapping)

 Problème principal : trouver les couples fréquents


avec peu de passes et de swapping (mémoire centrale
limitée)
B. Amann UPMC BDMD-M2 Règles d'association 14
Algorithme naïve : couples fréquents
 On lit le fichier une seule fois et on compte en
mémoire le nombre d’occurrences par couple
 Chaque panier de n items génère n(n-1)/2 couples
 Structures de données
 Matrice triangulaire sous forme d’une liste ordonnée
 [c(1,2), c(1,3), c(1,n), c(2,3), c(2,4) …, c(n-1, n)]
 Le compteur du couple (i,j) se trouve à la position (i-1)(n-i/2) + j-i
 Table de hachage T avec T[h(i,j)]=c(i,j) :
 On stocke seulement une valeur pour les couples (i,j) avec c(i,j) > 0
 O(n2) pose un problème quand n est grand :
 int = 4 octets; 100 000 items (produits) : ~20 Go de
mémoire uniquement pour les compteurs
B. Amann UPMC BDMD-M2 Règles d'association 15
Algorithme a-priori
Principe clé : monotonicité de la fonction Supp :
 Tous les sous-ensembles S’ d’un ensemble S
fréquent sont également fréquents :
Supp(S)>s ∧S’ ⊆ S ⇒ Supp(S’) > s
 On sait que chaque ensemble fréquent de taille k
(n>0) est composé d’une union d’ensembles
fréquents de taille k’ < k
Ensemble fréquent maximal : ensemble fréquent
qui n’est plus fréquent dès qu’on ajoute un
nouveau item.
Rakesh Agrawal and Ramakrishnan Srikant. Fast algorithms for mining association rules
in large databases. Proceedings of the 20th International Conference on Very Large Data Bases,
VLDB, pages 487-499, Santiago, Chile, September 1994.

B. Amann UPMC BDMD-M2 Règles d'association 16


Algorithme a-priori de recherche de règles
intéressantes

 Chercher les ensembles fréquents de taille 1 en


mémoire centrale : |L1| ≤ n
 Lk contient les ensembles fréquents candidats
pour calculer les ensembles fréquents de taille
k+1 :
L2 ⊆ C2 = { AB | A ∈ L1 ∧B ∈ L1}
L3 ⊆ C3 = { ABC | AB ∈ L2 ∧AC ∈ L2 ∧BC ∈ L2 }
….
|Li+1| ≤ |Ci+1| = |Li|2 << |Ci|2
B. Amann UPMC BDMD-M2 Règles d'association 17
Processus

C1 Filtre L1 Produit C2 Filtre L2 Produit C3

première deuxième
lecture lecture

B. Amann UPMC BDMD-M2 Règles d'association 18


Pourquoi a-priori est meilleur?
 R(Caddy, Produit)
 |R| = 108
 |R.Caddy|=107 L2:
L2:
 |R.Produit|=106 select
selectr1.Produit,
r1.Produit,r2.Produit
r2.Produit
 Calcul naïve de L2 : from
fromRRr1,
r1,RRr2r2
 En moyenne 10 produits par where
wherer1.Produit
r1.Produit<<r2.Produit
r2.Produit
caddy and
andr1.Caddy=r2.Caddy
r1.Caddy=r2.Caddy
group
groupbybyr1.Produit,
r1.Produit,r2.Produit

couples
10
 
Chaque caddy produit 2 = 45
having
havingcount(*)
count(*)>>ss
r2.Produit

 L'auto-jointure produit 45*107


nuplets

B. Amann UPMC BDMD-M2 Règles d'association 19


Pourquoi a-priori est meilleur?
 On remplace R par L1 dans L2 :
 P0 avec s=107/20=5*105 : tous P0
P0 :: select
selectProduit
Produitfrom
fromRR
les produits p qui sont dans au group
groupby
byProduit
Produit
moins 5% des caddies
having
havingcount(*)
count(*)>>ss
 L1 avec s=5*105 : tous les
couples (c,p) dans R où p est
dans 20% des caddies L1:
L1: select
select**from
fromRR
 Attention : where
whereProduit
ProduitininP0
P0
 Au maximum 108/5*105 = 200
produits passent le test de having L2:
L2:
dans R, mais select
selectr1.Produit,
r1.Produit,r2.Produit
r2.Produit
 |L1| peut être proche de |R| si from
fromL1
L1r1,
r1,L2
L2r2
r2
tous les autres produits dans R where
wherer1.Produit
r1.Produit<<r2.Produit
r2.Produit
apparaissent chacun dans un and
andr1.Caddy=r2.Caddy
r1.Caddy=r2.Caddy
seul caddy : |L1| = 108 – (106 – group
groupby
byr1.Produit,
r1.Produit,r2.Produit
r2.Produit
200) ~ 108 having
havingcount(*)
count(*)>>ss
B. Amann UPMC BDMD-M2 Règles d'association 20
Optimisations
 Diminuer la taille de l’ensemble des candidats Ci
pour i > 1
 Par filtre de sélection : PCY
 Par regroupement d’items
 Rassembler le calcul de L1, L2, L3, … dans une ou
deux étapes (au lieu d’une étape par Li) :
 Échantillonnage (algorithmes approximatifs) :
Toivonen

B. Amann UPMC BDMD-M2 Règles d'association 21


Algorithme PCY (Park, Chen et Yu)
 Hypothèse : la taille de la mémoire est beaucoup plus
grande que le nombre d’items (eg. 105 items = 400 Ko)
 Principe :
 On construit une table de hachage Ti qui stocke les
fréquences des ensembles d’items de taille i calculés à partir
des fréquences des ensembles fréquents Li-1 de taille i-1
 Cette table permet d’éliminer (filtrer) des candidats non-
fréquents de Ci
 Remarques :
 La taille de la table Ti (# de buckets) dépend de la taille de la
mémoire
 #buckets < #couples (conflits possibles) : h(AB)=h(CD)
Jong Soo Park, Ming-Syan Chen, and Philip S. Yu. 1995. An effective hash-based algorithm for mining association rules.
In Proceedings of the 1995 ACM SIGMOD international conference on Management of data (SIGMOD '95),
ACM, New York, NY, USA, 175-186. DOI=10.1145/223784.223813 http://doi.acm.org/10.1145/223784.223813
B. Amann UPMC BDMD-M2 Règles d'association 22
Étapes PCY
 Étape 1 :
 construction d’une table T qui contient pour chaque
couple AB un compteur T[h(AB)]
 Attention : #buckets < #couples (conflits possibles) :
h(AB)=h(CD)
 Compression de la table de hachage en index bitmap I :
 I(h(AB)) = 1 si T[h(AB)] ≥ s et 0 sinon
 Étape 2 :
 calcul des couples fréquents en utilisant I comme filtre

B. Amann UPMC BDMD-M2 Règles d'association 23


Étapes de calcul
 Étape 1 : pour chaque panier
 pour chaque item A ajoute 1 à son compteur C1(A)
 pour chaque couple AB ajoute 1 à T2[h(AB)]
 Étape 2 : compter uniquement les couples AB (compteur C2) où
 A ∈ L1 et B ∈ L1 et I2(h(AB)) = 1
 Attention :
 à cause des conflits, I2(h(AB)) = 1 ne signifie pas forcément que AB est
fréquent (faux positifs)

Compteurs C1 L1
Bitmap I2
compression
Table T2
Compteurs C2

étape 1 étape 2
B. Amann UPMC BDMD-M2 Règles d'association 24
PCY Multistage
 Étape supplémentaire qui refait un hachage sur les
couples qualifiées par la première étape
 Moins de couples contribuent à I : élimination de buckets
sans couples fréquents

Compteurs C1 L1 L1

Ia1 Ia 1

Ib 2
Ta1
Tb2
Compteurs C2

Étape 2
Étape 1
Étape 3
B. Amann UPMC BDMD-M2 Règles d'association 25
PCY Multistage
 Étape 3 : compte uniquement les couples AB où
1) A ∈ L1 et B ∈ L1 et
2) Ia(h1(AB)) = 1 et
3) Ib(h2(AB)) = 1
 Les fonctions h1 et h2 doivent être indépendantes
 Il faut faire les trois tests :
 Un couple AB pourrait passer le test 1 et 3 sans avoir été
choisi dans l’étape supplémentaire.

B. Amann UPMC BDMD-M2 Règles d'association 26


Regroupements d’items
 Regrouper les items en fonction d’une
taxonomie du domaine
 Ex: Surgelés regroupe Plats surgelés, desserts
surgelés, légumes surgelés
 Permet de limiter le nombre d’items
 Permet de mieux gérer les items rares

B. Amann UPMC BDMD-M2 Règles d'association 27


Tous les ensembles fréquents en deux étapes
 Si on considère que les données ont une distribution aléatoire,
il est possible de calculer tous les ensembles fréquents en
deux étapes :
 Générer un échantillon (sample) #paniers/k qui tient en
mémoire et appliquer a-priori avec s’=s/k
 Vérification du résultat obtenu sur toutes les données
 Risque :
 Si s’ est trop grand, on « rate » des ensembles fréquents
(faux négatifs)
 Relâcher (diminuer) s’ pour éliminer les « faux négatifs »
(risque d’avoir trop de données pour maintenir en
mémoire)
Sarasere, A., Omiecinsky, E., and Navathe, S., (1995). An efficient algorithm for mining association rules in large
databases: In Proceedings of 21st International Conference on Very Large Databases (VLDB). 432-244.
Toivonen, H. Mannila H., and Verkamo, A. (1995). Discovering frequent episodes in sequences. In proceedings of the First
International Conference on knowledge Discovery and Data Mining.( PP. 210- 215). AAAI press.

B. Amann UPMC BDMD-M2 Règles d'association 28


Algorithme de Toivonen
 Chercher dans l’échantillon tous les ensembles fréquents
avec s assez petit pour ne pas « rater » des ensembles
fréquents
 Ajouter aux ensembles fréquents leur frontière négative : les
ensembles qui ne sont pas fréquents, mais qui contiennent
que des sous-ensembles fréquents
 Exemple : l’ensemble ABCD est dans la frontière négatif s’il n’est
pas fréquent et ABC, BCD, ACD et ABD sont fréquents
 Si aucun ensemble dans la frontière négative n’est fréquent
(sur toutes les données), le résultat est correct et complet
 Sinon
 Il faut répéter tout le processus car tous les sur-ensembles d’un S
fréquent dans la frontière négative peuvent être fréquents
 Ou on accepte des « faux négatives »…

B. Amann UPMC BDMD-M2 Règles d'association 29


Algorithme de Toivonen

Frontière négative :

... CF
ABD BF
AB ACE AF
BD
AD
AC CE
AE
D F
B A C E

B. Amann UPMC BDMD-M2 Règles d'association 30


Query flocks : une généralisation
des règles d’associations
 Query flock :
 Requête avec des variables (x, y, …) et des paramètres ($1, $2, …)
 Une condition sur le résultat (filtre) qui doit être satisfaite pour
valider les paramètres
 Attention: on s’intéresse aux paramètres et pas au résultat de
la requête
 Exemple :
 Requête: Réponse(x) ← Caddie(x,$1)&Caddie(x,$2)
 Condition : Count(Réponse) >= s
 Résultats : tous les pairs de produits ($1,$2) qui se trouvent ensemble
dans au moins s caddies.

Dick Tsur, Jeffrey D. Ullman, Serge Abiteboul, Chris Clifton, Rajeev Motwani, Svetlozar Nestorov, and Arnon Rosenthal.
1998. Query flocks: a generalization of association-rule mining. SIGMOD Rec. 27, 2 (June 1998), 1-12.
B. Amann UPMC BDMD-M2 Règles d'association 31
Query flocks
 Exemple : trois tables
 Client(nom, attr, valeur)
 Achete(nom, prod)
 Type(prod, type)
 On cherche des caractéristiques $a=$v (e.g. age=45)
partagées par au moins s acheteurs de produits d’un
type donné $t :
 Réponse(n) ← Client(n,$a,$v) & Achete(n,p) & Type(p,$t)
 Count(Réponse)>=s

B. Amann UPMC BDMD-M2 Règles d'association 32


Query flocks : évaluation
 Même idée que A-priori :
 Si on enlève une sous-condition dans le requête
(conjonctive), la taille du résultat ne peut qu’augmenter
(monotonicité)
 Décomposition en étapes « moins chères » que la
requête initiale : R := FILTER(P, Q, C)
 R : table temporaire
 Q : requête initiale sans certains sous-prédicats (sur-
ensemble)
 P : paramètres dans Q
 C : condition initiale
B. Amann UPMC BDMD-M2 Règles d'association 33
Query flocks : exemple A-Priori
 Requête : Réponse(x) ← Caddie(x,$1)&Caddie(x,$2)

OK1($1):= FILTER({$1}, Réponse(x) ← Caddie(x,$1), Count(Réponse)>=s)


OK2($2):= FILTER({$2}, Réponse(x)←Caddie(x,$2), Count(Réponse)>=s)
OK($1,$2) := FILTER({$1,$2}, Caddie(x,$1) &Caddie(x,$2)& OK1($1) &
OK2($2), Count(Réponse)>=s)

 Il suffit de calculer OK1($1) (OK2($1) est identique)


 Plan d’exécution:
(Caddie join OK($1)) join (Caddie join OK($2))
 La taille des résultats intermédiaires est petite par rapport à une
jointure Caddie join Caddie.
B. Amann UPMC BDMD-M2 Règles d'association 34
Conclusion sur « a-priori »
 Avantages
 Formalisme général et applicable à de nombreux domaines
 Méthode simple (non supervisé) et facile à comprendre
 Résultats clairs et faciles à interpréter (quand il n’y a pas trop de
règles générées)
 Inconvénients
 Coût de calcul
 Exploitation du résultat difficile quand il y a beaucoup de règles :
 Inutile quand on cherche des données fortement corrélées sans
support important
 « Yacht et caviar »
 Autres méthodes : minhashing, locality-sensitive hashing

B. Amann UPMC BDMD-M2 Règles d'association 35

Vous aimerez peut-être aussi