2 Règles d’Associations Sommaire • Introduction • Ensembles fréquents • Qualité des règles • Génération des ensembles fréquents • Génération des règles d’association • Discussion Lotfi Ben Romdhane, Ph.D. DSI / ESST / US/ Tn 3 Concepts de base (1) • MBA : Market Basket Analysis • Analyser les transactions d’achats des utilisateurs pour dégager les habitudes d’achat des clients • Très utile pour développer des stratégies de Marketing ▫ Exemple : une grande partie des clients qui achète des ordinateurs, achète aussi des antivirus mettre les compartiments hardware et software très proches faire des « packages » de promotion 4 Concepts de base (2) • Les serveurs Web stockent les sessions de visite des internautes ▫ IP, navigateur, pages visitées, ordre de la visite, durée, ... • La découverte des « patrons » internautes est très utile ▫ pour faire des « prefetching » côté serveur ▫ conception du contenu et de la structure du site web « si l’internaute visite la page p1, et puis p2; alors il va visiter par la suite la page p5 » ! 5 Concepts de base (3) 6 Fréquence d’un ensemble (1) • Les données sont des données ensemblistes • I = {I1, I2, …, In} désigne un ensemble d’objets • D = {T1, T2, …, Tm} est un ensemble de transactions tel que Ti ⊆ I ; ∀ Ti∈ D • On note par k-ensemble tout ensemble de taille k (contenant k objets) • Une transaction T est dite contenir un ensemble A ssi A⊆ T • La fréquence d’un ensemble A est le nombre de transactions dans D contenant A ▫ appelées transactions (transactional databases) ▫ chaque transaction est un ensemble d’objets • La génération des règles d’associations consiste à trouver les corrélations intéressantes entre les données • Les règles seront modélisées sous forme logique antécédent ⇒ conséquent • Règles intéressantes: besoin d’une mesure pour quantifier la qualité des règles? 7 Fréquence d’un ensemble (2) TID Liste d’objets T100 I1, I2, I5 T200 I2, I4 • A = {I1, I2} est un 2-ensemble T300 I2, I3 puisqu’il contient deux objets T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 T800, et T900 contiennent T700 I1, I3 l’ensemble A T800 I1, I2, I3, I5 T900 I1, I2, I3 • I = {I1, I2, I3, I4, I5} • D = {T100, T200, …, T900} • Les transactions T100, T400, • Ainsi la fréquence de A est égal à quatre 8 Mesure de qualité (1) • Une règle d’association est une implication sous la forme A⇒B ⇒ tels que ▫ A ⊂ I, B ⊂ I; et ▫ A∩B=∅ • Pour mesure la qualité d’une règle d’association, on va utiliser deux indices : ▫ support ▫ confidence 9 Mesure de qualité (2) Mesure de qualité (3) • Le support d’une règle d’association est défini comme étant « le pourcentage des transactions dans l’ensemble D contenant en même temps les deux parties ‘antécédent’ et ‘conséquent’ de la règle » support ( A ⇒ B ) = 10 • Le degré de confidence d’une règle est défini comme étant « le pourcentage des transactions dans l’ensemble D contenant la partie ‘antécédent’ ; et qui contiennent aussi la partie ‘conséquent’ de la règle » fréquence ( A ∪ B ) D confidence ( A ⇒ B ) = support ( A ∪ B ) fréquence ( A ∪ B ) = support ( A ) fréquence ( A ) confidence ( A ⇒ B ) = P ( B / A ) support ( A ⇒ B ) = P ( A ∪ B ) support(A ⇒ B) , confidence (A ⇒ B) ∈[0,1] 11 Mesure de qualité (4) Mesure de qualité (5) TID List of Items T100 I1, I2, I5 T200 I2, I4 • fréquence (A) = 4 T300 I2, I3 • fréquence (B) = 6 T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 • support (A ⇒ B) = 2/9 = 0.222 T700 I1, I3 • confidence (A ⇒ B) = (2/9) T800 I1, I2, I3, I5 T900 I1, I2, I3 • A = {I1, I2} , B = {I3} • Règle : A ⇒ B ? • fréquence (A ∪ B) = 2 /(4/9) = 0.5 12 • Le support et la confidence sont deux indices pour mesurer la qualité des règles ▫ support : modélise l’utilité de la règle ▫ confidence : modélise le degré de certitude de la règle ▫ « ordinateur » ⇒ « logiciel antivirus » : support =0.02; confidence = 0.6 il ya une probabilité globale de 2% que les deux objets soient achetées ensemble 60% de ceux qui achètent « un ordinateur » achètent aussi un « antvirus » 13 Algorithme générique (1) 14 Algorithme générique (2) Phase I. Calculer les ensembles fréquents • La première phase est, algorithmiquement, plus complexe que la deuxième • déterminer tous les ensembles dont le support est supérieur ou égal à un seuil minimal minsup ▫ les performances globales d’un algorithme de génération des règles associatives est dominé par la complexité de la première phase Phase II. Générer les « règles fortes » • Une approche aveugle : générer un sousensemble et puis calculer sa fréquence ! • Utiliser les ensembles fréquents déterminés pendant la Phase I pour calculer les règles fortes • support ( règle ) ≥ minsup; et • confidence (règle) ≥ minconf ▫ le nombre de sous-ensembles possibles d’objets est exponentiel NI = 2 − I − 1 I I = 100 ⇒ NI = 1,2676 ×1030 15 16 Introduction (1) • Apriori a été proposé par Agrawal et Srikant en 1994 dans les labos d’IBM pour calculer les ensembles fréquents • Le nom de l’algorithme provient du fait qu’on utilise des connaissances à priori pour générer les ensembles fréquents ▫ ces connaissances se basent sur des propriétés mathématiques des ensembles fréquents ▫ essaye de réduire l’espace de recherche 18 17 Introduction (2) Introduction (3) • Lk est l’ensemble de tous les k-ensembles fréquents • Théorème 2- propriété Apriori • Théorème 1 - propriété a priori ▫ Tous les sous-ensembles non-vides d’un ensemble • Si Lk = ∅ alors Lj = ∅ ∀ j≥k fréquent sont fréquents • Ce théorème illustre le fait qu’à partir d’une certaine taille k, il n’est plus possible d’avoir des ensembles fréquents • Démonstration (squelette) ▫ soit Y un ensemble fréquent: support(Y) ≥ minsup ▫ générer les ensembles fréquents par ordre croissant de taille: ordre 2, 3, .... (Apriori !) ▫ soit X un sous-ensemble de Y (X ⊂ Y) ∀ T∈D; si Y ⊆ T alors X ⊆ T Ainsi fréquence (X)≥ fréquence (Y) 19 Algorithme (1) • entrée: un ensemble de transactions • sortie: ensembles fréquents DEBUT ▫ L1 = {singletons fréquents} Tant Que (Lk <> ∅) faire k ←k+1 1. JOINTURE Ck ← jointure(Lk-1) 2. ELAGAGE Lk ← élagage(Ck) Fin Tant Que ▫ retourner (L = ∪ Lk ∀k≥1) FIN 20 Algorithme (2) • Dans la première étape, on effectue la jointure de deux ensembles fréquents de taille k pour obtenir les ensembles candidats de taille k+1 • On suppose l’existence d’un ordre lexicographique entre les éléments de I • Tous les éléments d’un k-ensemble fréquent sont ordonnés selon cet ordre 21 Algorithme (3) Algorithme (4) • On considère deux ensembles fréquents de taille k : l1 ∈ Lk ; l2 ∈ Lk. Pour joindre l1 et l2; on doit avoir les conditions suivantes : • La deuxième étape d’élagage consiste à supprimer les ensembles générées non-fréquents • En effet, ces ensembles sont inutiles dans les étapes suivantes 1. les (k-1) premiers éléments de l1 et de l2 sont identiques l1 [ j ] = l2 [ j ]; ∀j = 1..(k − 1) ▫ un ensemble non-fréquent de taille k ne peut pas être utilisé pour générer des ensembles fréquents de taille supérieure ▫ ceci est garantie par la « propriété Apriori » 2. l1[k] < l2[k] : pour garantir qu’il n’y a pas de duplicatas • 22 L’ensemble résultant de la jointure est l= { l1[1], l1[2], …, l1[k-1], l1[k] , l2[k] } 23 Exemple (1) Ensemble Fréquence Exemple (2) L1 Ensemble Fréquence {I1, I2} 4 7 {I1, I3} 4 {I3} 6 {I1, I4} 1 {I4} 2 {I5} 2 {I1} 6 {I2} TID List of Items T100 I1, I2, I5 T200 I2, I4 T300 I2, I3 T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 T700 I1, I3 T800 I1, I2, I3, I5 T900 I1, I2, I3 24 C2 min_sup = 2/9 min_fréq = 2 {I1, I2, I3} C3 Ensemble Fréquence {I1, I2} 4 {I1, I3} 4 {I1, I5} 2 {I1, I5} 2 {I2, I3} 4 {I2, I3} 4 {I2, I4} 2 {I2, I4} 2 {I2, I5} 2 {I2, I5} 2 {I3, I4} 0 {I3, I5} 1 {I4, I5} 0 Dans l’étape d’élagage, C2 reste inchangée Ensemble Itemset {I1, I2, I3} {I1, I2, I5} L2 {I1, I2, I5} {I1, I3, I5} {I2, I3, I4} {I2, I3, I5} {I2, I4, I5} Phase élagage- En se basant sur la propriété que tous les sous-ensembles d’un ensemble fréquent sont fréquent, on peut supprimer : L3 {I 1 , I 3 , I 5 } car {I 3 , I 5 }∉ L 2 {I 2 , I 3 , I 4 } car {I 3 , I 4 }∉ L 2 {I 2 , I 3 , I 5 } car {I 3 , I 5 }∉ L 2 {I 2 , I 4 , I 5 } car {I 4 , I 5 }∉ L 2 Exemple (3) fréquence {I1, I2, I3} 2 {I1, I2, I5} 2 TID Liste d’objets T100 I1, I2, I5 T200 I2, I4 T300 I2, I3 T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 T700 I1, I3 T800 I1, I2, I3, I5 T900 I1, I2, I3 28 Phase élagage- En se basant sur la propriété que tous les sous-ensembles d’un ensemble fréquent sont fréquent, on peut supprimer : {I1 , I 2 , I 3 , I 5 } car {I 2 , I 3 , I 5 }∉ L3 L4 = ∅ minsup = 2/9 L =L2 ∪ L3 • Une règle A ⇒ B est dite forte (ou intéressante) ssi 1. support (A ⇒ B ) ≥ minsup 2. confidence (A ⇒ B ) ≥ minconf • 27 {I1, I2,I3,I5} C4 Concepts de base • 26 ensemble L3 ensemble 25 Puisque les règles seront générées à partir des ensembles fréquents, donc la première condition est nécessairement vérifiée On peut utiliser d’autres indices de mesure de qualité Algorithme générique ▫ entrée: L = ensemble des ensembles fréquents ▫ sortie : règles fortes (ou intéressantes) DEBUT Pour chaque ensemble fréquent li ∈ L faire 1. 2. 3. générer Sli l’ensemble de tous les sous-ensembles non vides de li ∀ X∈ Sli , générer Rx, une règle sous la forme X ⇒ (li \ X ) Calculer le degré de confidence de Rx et la retenir si confidence(Rx) ≥ minconf Fin Pour FIN. 30 29 L = L2 ∪ L3 Exemple TID Liste d’objets T100 I1, I2, I5 T200 I2, I4 T300 I2, I3 T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 T700 I1, I3 {I1, I2, I3} 2 {I1, I2} 4 {I1, I2, I5} 2 {I1, I3} 4 l = {I1, I2, I5} Sl = {{I1, I2}; {I1, I5}; {I2, I5}; {I1}, {I2}, {I5} } {I1, I5} 2 {I2, I3} 4 {I2, I4} 2 {I2, I5} 2 Complexité temporelle (1) • Etant un k-ensemble fréquent, le nombre de règles admettant un “conséquent” de taille j est C kj = min_conf = 70% (0.7) T800 I1, I2, I3, I5 Règle Confidence T900 I1, I2, I3 I1 ∧ I2 ⇒ I5 2/4 = 50% I1 ∧ I5 ⇒ I2 2/2 = 100% I2∧ I5 ⇒ I1 2/2 = 100% I1 ⇒ I2 ∧ I5 2/6 = 33% I2 ⇒ I1 ∧ I5 2/7 = 29% I5 ⇒ I1 ∧ I2 2/2 = 100% k! (k − j )! j ! • Ainsi, le nombre total de règles qui peuvent être générées d’un k-ensemble fréquent est : k −1 ∑ j =1 C kj = 2 k − 1 allure exponentielle 31 Complexité temporelle (2) • Théorème 3 ▫ Transférer les éléments d’un ensemble fréquent de l’antécédent d’une règle au conséquent ne peut pas augmenter son degré de confidence • Démonstration (squelette) confidence confidence support ( A ∪ B ∪ C ) support ( A ∪ B ) support ( A ∪ B ∪ C ) (A ⇒ B ∪ C) = support ( A ) (A ∪ B ⇒ C) = D’après lé théorème 1, on a : support (A) ≥ support (A∪B). Donc obligatoirement : confidence (A∪B⇒C) ≥ confidence(A⇒ B∪ C) 32 Complexité temporelle (3) • Ainsi, on peut dégager à partir du théorème 3, les résultats suivants • Théorème 4 ▫ Tout sur-ensemble (superset) du ‘conséquent’ d’une règle non-confidente est aussi nonconfident ▫ Tout sous-ensemble du ‘conséquent’ d’une règle confidente est aussi confident 34 33 Complexité temporelle (4) {I1, I2, I3} 2 {I1, I2} 4 {I1, I2, I5} 2 {I1, I3} 4 {I1, I5} 2 minconf = 70% (0.7) {I2, I3} 4 {I2, I4} 2 {I2, I5} 2 l = {I1, I2, I5} Sl = {{I1, I2}; {I1, I5}; {I2, I5}; {I1}, {I2}, {I5} } • I1 ∧ I2 ⇒ I5 est non-confidente. Ainsi, sera tout conséquent contenant I5 (superset) • I1 ⇒ I2 ∧ I5 • I2 ⇒ I1 ∧ I5 •I5 ⇒ I1 ∧ I2 est confidente. Ainsi, sera tout conséquent qui est sous-ensemble de {I1, I2} • I1 ∧ I5 ⇒ I2 • I2∧ I5 ⇒ I1 Rule Confidence I1 ∧ I2 ⇒ I5 2/4 = 50% I5 ⇒ I1 ∧ I2 2/2 = 100% I1 ∧ I5 ⇒ I2 confidente I2∧ I5 ⇒ I1 confidente I1 ⇒ I2 ∧ I5 non-confidente I2 ⇒ I1 ∧ I5 non-confidente Frequent Pattern Growth 36 35 Principe de base (1) • Apriori utilise l’approche : « générer et tester » : générer les ensembles; et puis tester leurs fréquences ▫ la génération des ensembles candidats est coûteuse (en espace et en temps) ▫ le calcul de fréquence est coûteux le test d’appartenance d’un ensemble candidat à une transaction est coûteux nécessite plusieurs E/S disques Principe de base (2) • FP-Growth génère les ensembles fréquents sans la génération des ensembles candidats • Il est basée sur une autre stratégie: « diviser pour régner » (Divide & Conquer) selon les étapes suivantes : ▫ Etape I : représenter la base de données sous forme d’un arbre appelée FP-tree une représentation compressée de la base retient les informations d’associations entre les objets 38 37 Principe de base (3) Définition FP-tree (1) ▫ Etape II : Diviser la bd compressée (FP-tree) en un ensembles de bases de données projetées chacune correspondant à un élément fréquent ces bases projetées sont de taille inférieure à celle de la base d’origine ▫ Etape III : Récursivement calculer, selon la même démarche, les ensembles fréquents dans chaque bd projetée nécessite une condition d’arrêt les calculs sur chaque base sont indépendants: ils peuvent se faire en parallèle 39 Définition FP-tree (2) • Les nœuds dans l’arbre correspondent aux objets et lui sont associés des compteurs • La racine de l’arbre est le nœud NULL : ne stocke aucun objet ▫ chaque transaction de la base est représentée à l’aide d’un chemin dans l’arbre un chemin est une séquence de nœuds partant de la racine de l’arbre et s’arrêtant sur un nœud (interne ou externe) ▫ dans l’arbre, on maintient des pointeurs entre les différentes occurrences du même objet 40 Construction du FP-tree (1) • Le principe de construction du FP-tree se résume en deux grandes phases ▫ Phase I calculer L l’ensemble des singletons fréquents une simple requête SQL permet de le faire ▫ Phase II en se basant sur la liste L, transformer chaque transaction de la bd en un chemin dans l’arbre 41 42 Construction du FP-tree (2) Construction du FP-tree (3) Algorithme Construire_FP-tree 4. pour chaque transaction Ti ∈ D faire ▫ ▫ entrée ▫ D : une base de données transactionnelle ▫ minSup: une valeur du support minimal ▫ trier les éléments de Ti selon l’ordre L trouver un chemin P dans l’arbre ayant un préfixe commun avec Ti SI (P= ∅) ALORS créer une branche dont les nœuds sont composés des objets de Ti initialiser leurs compteurs à 1 rattacher la branche à la racine de l’arbre sortie: l’arbre FP-tree DEBUT 1. Parcourir la bd une fois et calculer L; l’ensemble des singletons fréquents 2. Trier L dans l’ordre décroissant des fréquences 3. créer un nœud racine et l’étiqueter avec NULL ▫ SINON incrémenter le compteur de tous les nœuds dans P de 1 créer une branche contenant les objets { T - P} et initialiser leurs compteur à 1 attacher cette branche au nœud feuille dans P Fin Pour FIN. 44 43 Exemple (2) Exemple (1) TID Liste d’objets T100 I1, I2, I5 T200 I2, I4 T300 I2, I3 T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 T700 I1, I3 T800 I1, I2, I3, I5 T900 I1, I2, I3 L minsup= 2/9 (min freq= 2) Objet Fr éq. {I2} 7 {I1} 6 {I3} 6 {I4} 2 {I5} 2 • L = { I1: 6; I2:7; I3: 6; I4: 2; I5 : 2} • Ordre L (L-order) : I2; I1; I3; I4; I5 NULL • T100 = { I1, I2, I5 } donne la première branche de l’arbre composée des trois nœuds selon l’ordre L ▫ noeud1 = <I2: 1> ▫ noeud2 = <I1:1> ▫ noeud3 = <I5: 1> I2:1 • T200 = {I2, I4} donne le chemin ordonné {<I2:1>; <I4:1> } I1:1 préfixe commun avec un chemin existant dans l’arbre Path1 = {<I2: 1>; <I1:1>; <I5: 1> } Path2 (T200)= {<I2:1>; <I4:1>} I5:1 46 45 Exemple (4) Exemple (3) • Une table de hachage : chaque objet fréquent est chaînée (avec des pointeurs) à toutes ses occurrences dans l’arbre • T300 = {I2, I3} donne le chemin {<I2:1>; <I3:1> } NULL NULL I2:3 I2:2 I1:1 I4:1 I1:1 I3:1 I4:1 Objet Fr eq. {I2} 7 Pointeur NULL {I1} 6 {I3} 6 {I4} 2 …. {I5} 2 …. I1:4 I5:1 I5:1 Après lecture de T200 Après lecture de T300 I3:2 I1:2 I2:7 I5:1 I3:2 I4:1 I4:1 I3:2 I5:1 47 Complexité • Le FP-tree a une taille inférieure à celle de la BD originale ▫ plusieurs transactions admettent des « parties communes » (préfixes) • Meilleur des cas (best case) toutes les transactions contiennent les mêmes objets un seul chemin dans l’arbre • Pire des cas (worst case) chaque transaction possède un ensemble unique d’objets chaque transaction est représentée par une branche distincte le FP-tree admet la même taille que la BD originale 48 Fouille du FP-tree (1) • Ainsi, la génération des ensembles fréquents à partir de la BD est transformé au problème de la génération des EF à partir du FP-tree • Cette génération va suivre le même principe « diviser pour régner » ▫ soit X un EF (éventuellement un singleton) ▫ construire une BD conditionnelle BDx à partir du FP-tree ▫ construire FP-treeX le FP-tree correspondant à X ▫ récursivement générer les ensembles fréquents à partir de FP-treeX 49 Fouille du FP-tree (2) 50 Fouille du FP-tree (3) • On commencera par les EF d’ordre 1 (singletons) ▫ on commencera par les moins fréquents aux plus fréquents (ordre L inversé) On commence par les singletons se trouvant au niveau des feuilles de l’arbre • Il y a deux conditions d’arrêt de la récursivité ordre L inversé ▫ un FP-tree qui est vide ▫ un FP-tree qui contient une seule branche Objet (X) I5 DX {I2, I1 : 1}; {I2, I1, I3 : 1} I4 {I2, I1 : 1}; {I2 : 1} I3 I1 {I2, I1 : 2}; {I2 : 2}; {I1 : 2} {I2 : 4} 51 Fouille du FP-tree (4) • La BD conditionnelle DX d’un élément X est composé des chemins qui existent dans le FP-tree 52 TID Liste d’objets I5_1 {I2, I1 : 1} I5_2 {I2, I1, I3 : 1} et ayant comme suffixe X (se terminant par X) • La fréquence d’un élément α∈ DX est le Min freq= 2 minimum à travers le chemin correspondant à α dans le FP-treeX I5 Fouille du FP-tree (5) Objet Freq. I1 2 I2 2 I3 1 Objet Freq. I1 2 I2 2 Pointeurs I3 n’est pas fréquent : disparait du FP-tree NULL FP-tree pour I5 I1:2 FP-tree avec une seule branche I2:2 53 Fouille du FP-tree (6) 54 Fouille du FP-tree (7) • On obtient un arbre ayant une seule branche: arrêt des appels récursifs • Les ensembles fréquents générés par ce FP-tree sont composés de toutes les combinaisons selon ce chemin • Ainsi, on obtient pour l’élément I5 et son FP-tree ▫ {I2, I5}; {I1, I5}; {I2, I1, I5} • La fréquence des ensembles générés est le minimum dans le FP-tree correspondant NULL ▫ {I2, I5 : 2}; {I1, I5: 2}; {I2, I1, I5 : 2} ▫ pour le FP-tree de I5: chemin= {I2, I1} combinaisons : {I2}; {I1}; {I2, I1} I1:2 • La croissance de patrons est effectué par la concaténation des ensembles fréquents générés à partir de FP-treeX avec le suffixe X I2:2 55 Fouille du FP-tree (8) TID Liste Objets I4_1 {I2, I1 : 1} I4_2 {I2 : 1} Objet Freq. I2 2 I1 1 Objet Freq. I2 2 56 NULL I1 n’est pas fréquent : ne vas pas être considére dans le FP-tree NULL FP-tree de I4 I2:2 Pointeur I3 Fouille du FP-tree (9) I4 FP-tree de I3 TID Liste d’objets I3_1 {I2, I1 : 2} I3_2 {I2 : 2} I3_3 {I1 : 2} une seule branche Min freq= 2 Ensembles fréquents générés : {I2, I4 : 2} I2:4 I1:2 I1:2 Objet Freq. I2 4 I1 4 Pointeur plus d’une branche ! 58 57 Fouille du FP-tree (11) Fouille du FP-tree (10) TID Liste d’objets Objet Fréq. I1 {I2 : 2} I2 2 • Quand au dernier singleton {I1}, son FP-tree a été déjà développé Pointeur Objet • Les “patrons fréquents” développé à NULL du FP-tree de I1 • {I2, I1: 2} I2:2 • Les “patrons fréquents” développé à du FP-tree de I3 FP-tree de I1 • {I2, I3: 4}; {I1, I3: 4}; {I2,I1, I3: 2} I5 I4 I3 I1 une seule branche Ensembles fréquents • min freq = 2 {I2, I5: 2}; {I1, I5: 2}; {I2, I1, I5: 2} {I2, I4: 2} {I2, I3: 4}; {I1, I3: 4}; {I2, I1, I3: 2} {I2, I1: 4} 59 Algorithme Fouille_FP-Tree (1) ▫ entrée un FP-tree T une BD transactionnelle D un suffixe α 60 Algorithme Fouille_FP-Tree (2) SINON pour chaque “patron” ai dans la « table de hachage » du FP-tree T faire générer le « patron » xi = {ai ∪ α} avec la fréquence count (xi) = count(ai ) calculer déterminer Dxi la BD conditionnelle pour xi Txi ← FP-tree (Dxi, minSup) SI (Txi ≠ ∅) ALORS Fouille_FP-tree (Txi , xi) ▫ sortie : {« patrons » fréquents} DEBUT SI (T contient une seule branche P) ALORS C ← {c1, c2, …, cn} l’ensemble de toutes les combinaisons possibles des nœuds dans le chemin P ∀ ci∈ C; générer le “patron” xi = {ci ∪ α} et calculer la fréquence de xi = minimum fréquence des noeuds dans ci Fin Si FIN. 61 FP-Growth : discussion Discussion (1) • Avantages ▫ uniquement deux parcours de la BD ▫ opère sur des « données compressées » ▫ pas de génération de « candidats » plus rapide • Inconvénients ▫ la construction du FP-tree est assez coûteuse ▫ le FP-tree peut être assez volumineux pour tenir en mémoire • Autres mesures de qualité confidence ( A ⇒ B ) support ( B ) Leverage ( A ⇒ B ) = support (A ∪ B ) - support (A )× support (B ) Lift ( A ⇒ B ) = P ( B / A) = • Malgré sa simplicité, le temps de calcul reste un handicap pour l’algorithme Apriori surtout pour les grandes bases de données transactionnelles contenant des millions de transactions • D’autres approches essayent d’améliorer le temps de calcul: FP-Growth TID List d’objets T100 I1, I2, I5 T200 I2, I4 T300 I2, I3 T400 I1, I2, I4 T500 I1, I3 T600 I2, I3 T700 I1, I3 T800 I1, I2, I3, I5 T900 I1, I2, I3 Règles fouille de données •minsup = 2/9 •minconf = 7/10 Qualité I1 ∧ I5 ⇒ I2 s= 2/9 ; c = 1 I2∧ I5 ⇒ I1 s= 2/9 ; c = 1 I5 ⇒ I1 ∧ I2 s=2/9 ; c=1 Connaissances Données 63 Discussion (2) 62