Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
0,93 MB
Nội dung
UNIVERSITÉ NATIONALE DU VIETNAM, HANOÏ INSTITUT FRANCOPHONE INTERNATIONAL ADOUM OKIM BOKA Apprentissage des préférences contextuelles Học tự động sở thích theo ngữ cảnh MÉMOIRE DE FIN D’ÉTUDES DU MASTER INFORMATIQUE HANOÏ - 2020 UNIVERSITÉ NATIONALE DU VIETNAM, HANOÏ INSTITUT FRANCOPHONE INTERNATIONAL ADOUM OKIM BOKA Apprentissages des préférences contextuelles Học tự động sở thích theo ngữ cảnh Spécialité : Systèmes Intelligents et Multimédia Code : Programme pilote MÉMOIRE DE FIN D’ÉTUDES DU MASTER INFORMATIQUE Sous la direction de : Dr Sedki KARIMA HANOÏ - 2020 ATTESTATION SUR L’HONNEUR J’atteste sur l’honneur que ce mémoire a été réalisé par moi-même et que les données et les résultats qui y sont présentés sont exacts et n’ont jamais été publiés ailleurs La source des informations citées dans ce mémoire a été bien précisée LỜI CAM ĐOAN Tơi cam đoan cơng trình nghiên cứu riêng Các số liệu, kết nêu Luận văn trung thực chưa cơng bố cơng trình khác Các thơng tin trích dẫn Luận văn rõ nguồn gốc Signature de l’étudiant ADOUM OKIM BOKA Remerciements La réalisation de ce mémoire a été possible grâce au concours de plusieurs personnes qui je voudrais témoigner toute ma gratitude J’aimerais tout d’abord remercier mon encadreur pédagogique de stage Dr Sedki KARIMA, Mtre de conférences en Informatique du Laboratoire d’Informatique Médicale et d’Ingénierie des Connaissances en e-Santé (LIMICS) l’Université Paris 13 Dr KARIMA était toujours disponible chaque fois que je rencontrais un problème ou si j’avais une question sur mes recherches Elle a toujours permis que ce document soit mon propre travail, mais elle m’a guidé dans la bonne direction chaque fois qu’elle pensait que j’en avais besoin Je tiens également remercier la Directrice Mme Marie-Christine Jaulent, toute l’équipe du LIMICS et de l’Université Paris 13 qui ont participé la réalisation et validation de ce projet Ce travail n’aurait pu être accompli sans leur effort et leur contribution passionnées Je voudrais remercier notre responsable de Master Dr Ho Tuong Vinh ainsi que tous les personnels pédagogiques et administratifs de l’Institut Francophone International, Université National de Vietnam Hanoi Je leur suis reconnaissant de tout cœur pour avoir assuré et amélioré la qualité de notre formation Enfin, je tiens exprimer ma profonde gratitude mes parents, ma famille, ma ˜ Linh et Mme Võ Thu Trang pour m’avoir apporté un femme, mes filles, Mlle Cam soutien indéfectible et des encouragements constants tout au long de mes années de Master Sans oublier mes amis qui ont toujours été pour moi Votre soutien inconditionnel et vos encouragements ont été d’une grande aide Je vous remercie ADOUM OKIM BOKA Résumé De nos jours, avec l’avènement du e-commerce et la disponibilité de données massives, le besoin d’apprentissage des préférences pour personnaliser des réponses des requêtes et effectué des recommandations ciblées est un challenge Ces dernières décennies, beaucoup des recherches se font dans ce sens pour mettre en place une approche efficace Dans ce contexte, nous présentons dans ce travail une méthode inspiré des approches définit dans [13, 10] et de l’extraction des motifs séquentielles afin de générer des règles de préférences contextuelles complexes et expressives L’approche que nous avons proposé est constitué de deux phases : (1) une phase d’extraction des règles de préférences suivant la contrainte de seuil minimum de confiance, (2) une phase de génération des règles de préférences composées partant de la phase (1) Nous avons évalué notre notre approche sur trois jeux de données, savoir le jeux de données des antibiotiques, le jeux de données des films construit partir MovieLens et IMDB, et jeux de données d’évaluation des voitures et les résultats expérimentaux ont montré que les modèles de préférences construits peut prédire entre deux instances données laquelle est la plus préférée par les utilisateurs Mots clés : règles de préférences contextuelles, modèle de préférences utilisateurs, elicitation de préférences, motif fréquents Abstract Nowadays, with the advent of e-commerce and the availability of big data, the need to learn preferences to personalize responses to queries and make targeted recommendations is a challenge In recent decades, much research has been done in this direction to put in place an effective approach In this context, we present in this work a method inspired by the approaches defined in [13, 10] and the extraction of sequential patterns in order to generate complex and expressive contextual preference rules The approach we have proposed consists of two phases : (1) a phase of extraction of the preference rules according to the constraint of minimum confidence threshold, (2) a phase of generation of the compound preference rules We evaluated our approach on three datasets, namely the antibiotic dataset, the film dataset constructed from MovieLens and IMDB, and car evaluation datasets and the experimental results have shown that the constructed preference models can predict between two given instances which is most preferred by users Keywords : contextual preference rules, user preference model, elicitation of preferences, frequent pattern Table des matières Liste des tableaux iii Table des figures iv Introduction générale 1.1 Présentation de l’établissement d’accueil 1.1.1 UNIVERSITÉ PARIS 13 (PARIS-NORD) 1.1.2 LIMICS 1.2 Contexte et problématique 1.2.1 Contexte du projet 1.2.1.1 Objectifs 1.2.1.2 Définitions préliminaires et problématique 1.2.2 Travaux réaliser Etat de l’art 2.1 Étude de l’existant 2.2 Apprentissage des préférences 2.2.1 Notions de base sur les préférences 2.2.2 Relation binaire, d’ordre, et de préférences 2.3 Extraction de règles d’association 2.4 L’algorithme apriori 2.4.1 Génération des candidats 2.4.2 Élagage 2.5 Algorithme FP-growth 2.6 Différence entre l’extraction des motifs séquentiels et motifs fréquents 2.7 Travaux antérieurs 2.7.1 Article : Construction de profils de préférences contextuelles basée sur l’extraction de motifs séquentiels[13] 2.7.2 Article : Mining Contextual Preference Rules for Building User Profiles[10] i 2 4 4 7 8 10 10 10 11 13 13 14 16 TABLE DES MATIÈRES Solutions proposées 3.1 Formalisation du problème 3.1.1 Présentation des données 3.1.2 Règles de préférences contextuelles, base de préférences et la base de séquence de préférences 3.1.3 Problème d’extraction de règles de préférences 3.1.4 Problème de construction de modèle de préférence utilisateur 3.2 Représentation séquentielle des préférences 3.2.1 Notion de sous séquence 3.2.2 Support d’une séquence de préférence 3.3 l’algorithme proposé 3.3.1 Contribution 3.3.2 Détails sur les contributions apportées 3.3.2.1 Apport sur les différentes phases de Sprex-Build 3.3.2.2 Principal contribution 3.4 Utilisation de la méthode préférence 22 26 27 27 28 28 28 30 30 30 30 31 Résultats et analyses 4.1 choix techniques 4.2 Construction de modèle de préférences 4.2.1 Concision du modèle 4.2.2 Intelligibilité du modèle de préférence 4.2.2.1 Cas du jeux de données d’évaluation des voitures 4.2.2.2 Cas de jeux de données des antibiotiques 32 32 32 33 33 34 34 19 20 21 Conclusion et Perspectives 39 5.1 Conclusion générale 39 5.2 Perspectives 40 A Algorithmes A.1 Création des séquences de préférences A.2 Détermination des combinaisons possible des motifs de préférences d’une séquence de préférence A.3 Création de l’algorithme FP Growth A.4 Quelque fonctions ii 44 44 45 45 47 Table des figures 1.1 Logo Université Paris 13 1.2 Logo LIMICS 2 2.1 Exemple de construction d’un FP-Tree 12 3.1 Illustration de la solution 20 3.2 Modèle de la base de données des films 21 3.3 Modèle de la base de données d’évaluation des voitures 22 4.1 Nombre de règles de préférences en fonction de nombre d’instances, pour σ = 33 iii CHAPITRE RÉSULTATS ET ANALYSES TABLE 4.1 – 10 meilleures règles extraites de la base Instance50, σ = No Contexte Préférés Non-préférés conf supp (’BuyP :low’, ’MaintP :low’, ’LugBoot :big’, ’Safe :med’) (’NbDoor :5more’, ’NbPlace :more’) (’NbDoor :4’, ’NbPlace :2’) 100% 3.8*10−4 (’BuyP :low’, ’MaintP :low’, ’LugBoot :big’, ’Safe :med’) (’NbDoor :5more’, ’NbPlace :4’) (’NbDoor :4’, ’NbPlace :2’) 100% 2.5*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :5more’, ’Safe :med’) (’NbPlace :4’, ’LugBoot :big’) (’NbPlace :2’, ’LugBoot :med’) 100% 1.2*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :5more’, ’Safe :med’) (’NbPlace :4’, ’LugBoot :big’) (’NbPlace :more’, ’LugBoot :small’) 100% 1.2*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :4’, ’LugBoot :small’) (’NbPlace :4’, ’Safe :med’) (’NbPlace :more’, ’Safe :low’) 100% 1.2*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :4’, ’LugBoot :med’) (’NbPlace :4’, ’Safe :med’) (’NbPlace :more’, ’Safe :low’) 100% 1.2*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :5more’) (’NbPlace :4’, ’LugBoot :med’, ’Safe :med’) (’NbPlace :2’, ’LugBoot :big’, ’Safe :high’) 100% 1.2*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :5more’) (’NbPlace :more’, ’LugBoot :med’, ’Safe :med’) (’NbPlace :2’, ’LugBoot :big’, ’Safe :high’ 100% 1.2*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :4’, ’LugBoot :med’) (’NbPlace :4’, ’Safe :high’) (’NbPlace :2’, ’Safe :low’) 100% 1.2*10−4 10 (’BuyP :low’, ’MaintP :low’, ’NbDoor :4’, ’LugBoot :med’) (’NbPlace :2’, ’Safe :low’) 100% 1.2*10−4 (’NbPlace :more’, ’Safe :med’) 35 CHAPITRE RÉSULTATS ET ANALYSES TABLE 4.2 – les règles de préférences obtenu de MP C mpl ex de la base Instance50, No Contexte Préférés Non-préférés conf supp (’BuyP :low’, ’MaintP :low’, ’LugBoot :big’, ’Safe :med’) (’NbDoor :5more’, ’NbPlace :more’) (’NbDoor :5more’, ’NbPlace :4’) (’NbDoor :4’, ’NbPlace :2’) 100% 6.4*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :5more’, ’Safe :med’) (’NbPlace :4’, ’LugBoot :big’) (’NbPlace :2’, ’LugBoot :med’) (’NbPlace :more’, ’LugBoot :small’) 100% 2.5*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :4’, ’LugBoot :small’) (’BuyP :low’, ’MaintP :low’, ’NbDoor :4’, ’LugBoot :med’) (’NbPlace :4’, ’Safe :med’) (’NbPlace :more’, ’Safe :low’) 100% 2.5*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :5more’) (’NbPlace :4’, ’LugBoot :med’, ’Safe :med’) (’NbPlace :more’, ’LugBoot :med’, ’Safe :med’) (’NbPlace :2’, ’LugBoot :big’, ’Safe :high’) 100% 2.5*10−4 (’BuyP :low’, ’MaintP :low’, ’NbDoor :4’, ’LugBoot :med’) (’NbPlace :4’, ’Safe :high’) (’NbPlace :more’, ’Safe :med’) (’NbPlace :2’, ’Safe :low’) 100% 2.5*10−4 36 CHAPITRE RÉSULTATS ET ANALYSES TABLE 4.3 – 10 meilleures règles extraites de la base jeux de données des antibiotiques, σ=1 No Contexte Préférés Non-préférés conf supp () (’p1’) (’p4’) 100% 7.9*10−2 () (’p1’) (”) 100% 6.19*10−2 () (’p1’, ’p4’) (”) 100% 5.3*10−2 () (’p1’) (’p4’, ’p6’) 100% 3.5*10−2 (’p4’) (’p1’, ’p3’) (’p6’) 100% 3.5*10−2 () (’p1’) (’p3’, ’p4’, ’p5’,’p6’) 100% 2.6*10−2 () (’p1’) (’p3’, ’p4’) 100% 2.6*10−2 () (’p1’) (’p2’, ’p4’) 100% 8.8*10−3 () (’p1’) (’p2’,’p3’,’p4’,’p5’,’p6’) 100% 8.8*10−3 10 () (’p1’,’p2’,’p3’,’p4’, ’p5’,’p6’) (”) 100% 8.8*10−3 La règle de la tables 4.4 montre que dans le contexte d’une propriété ’p4’, les propriétés (’p1’ et ’p3’) sont préférées la propriété ’p6’ Cette préférence contextuelle signifie que, compte tenu de deux antibiotiques ayant la propriété ’p4’, l’antibiotique propriétés (’p1’, ’p3’) est préféré celui présentant la propriété ’p6’ 37 CHAPITRE RÉSULTATS ET ANALYSES TABLE 4.4 – les règles de préférences obtenu de MP C mpl ex du jeux de données des antibiotiques, σ = No Contexte Préférés Non-préférés conf supp () (’p1’) (’p4’,”) 100% 1.4*10−1 () (’p1’, ’p4’) (’p1’,’p2’,’p3’, ’p4’,’p5’,’p6’) (”) 100% 7*10−2 () (’p1’) (’p4’) (’p1’, ’p3’) (’p6’) 100% 3.5*10−2 () (’p1’) (’p3’, ’p4’) ( p2 , p4 ) 100% 3.53*10−2 () (’p1’) (’p4’, ’p6’) ( p3 , p4 , p5 , p6 ) 100% (’p2’,’p3’,’p4’,’p5’,’p6’) 100% 38 6.19*10−2 8.8*10−3 Chapitre Conclusion et Perspectives 5.1 Conclusion générale L’objectif de cet travail fut de proposer et mettre en oeuvre une méthode d’apprentissage des préférences contextuelles partir de jeux de données d’un ensemble d’instances décrites par une liste d’attributs et d’étiquette (ou label) Nous nous sommes intéressés la construction de méthode de préférences contextuelle composée et expressifs en se basant sur les préférences séquentielles Nous avons proposé une approche qualitative étendue permettant de construire un modèle lisible et facilement compréhensible par les utilisateurs Notre méthode présente des règles de préférences contextuelles sous la forme de triplés composés de conjonctions formant des préférences facilement interprétables L’état de l’art, sur la construction de profils de préférences contextuelles basée sur l’extraction de motifs séquentiels nous a aidé dans la mise en place de la solution et d’étendre l’expressivité règles de préférences des travaux antérieurs Nous avons évalué notre notre approche sur un jeux de données d’évaluation des voitures et sur un échantillons de base de données filmographique du monde réel, et les résultats expérimentaux ont montré que les modèles de préférences construits sont relativement stables par rapport la variation de seuil minimum de support Les limites de nos travaux sont principalement liées notre PC qui ne dispose pas des ressources nécessaires pour apprentissage des données de centaine de mille de lignes La consistance et concision de nos résultats et conclusions doivent être suivi d’une validation d’un jeux de données complet, ce qui n’a pas été le cas Nous avons le besoins d’une machine de haute performance pour apprendre un jeux de données la fois pour extraire l’ensemble des règles de préférences plus générales 39 CHAPITRE CONCLUSION ET PERSPECTIVES 5.2 Perspectives En considérant les travaux antérieurs, il appart que les travaux de recherches dans le domaine de l’apprentissage des préférences contextuelles sont encore nombreux Développer un algorithme consistant et efficace permettant un apprentissage des préférences contextuelles plus généraux est un challenge, tels que : − explorer la possibilité d’introduire la notion de temps et de l’espace dans les règles de préférences Nous pensons appliquer notre approche MP C mpl ex sur l’article [10] pour étendre l’algorithme ProfMiner et évaluer les résultats 40 Bibliographie [1] Rakesh Agrawal, Tomasz Imielinski, ´ and Arun Swami Mining association rules between sets of items in large databases In Proceedings of the 1993 ACM SIGMOD international conference on Management of data, pages 207–216, 1993 [2] Rakesh Agrawal, Ralf Rantzau, and Evimaria Terzi Context-sensitive ranking In Proceedings of the 2006 ACM SIGMOD international conference on Management of data, pages 383–394, 2006 [3] Rakesh Agrawal and Ramakrishnan Srikant Mining sequential patterns In Proceedings of the eleventh international conference on data engineering, pages 3–14 IEEE, 1995 [4] Rakesh Agrawal, Ramakrishnan Srikant, et al Fast algorithms for mining association rules In Proc 20th int conf very large data bases, VLDB, volume 1215, pages 487–499, 1994 [5] Rakesh Agrawal and Edward L Wimmers A framework for expressing and combining preferences In Proceedings of the 2000 ACM SIGMOD international conference on Management of data, pages 297–306, 2000 [6] Salem Benferhat and Karima Sedki Two alternatives for handling preferences in qualitative choice logic Fuzzy Sets and Systems, 159(15) :1889–1912, 2008 [7] Gwenael Bothorel Algorithmes automatiques pour la fouille visuelle de données et la visualisation de règles d’association : application aux données aéronautiques PhD thesis, École Doctorale Mathématiques, Informatique et Télécommunications (Toulouse , 2014 [8] Belkacem Chikhaoui Une Approche Basée Sur L’analyse Des Séquences Pour la Reconnaissance Des Activités Et Comportements Dans Les Environnements Intelligents PhD thesis, Université de Sherbrooke, 2013 [9] Jan Chomicki Preference formulas in relational queries ACM Transactions on Database Systems (TODS), 28(4) :427–466, 2003 [10] Sandra de Amo, Mouhamadou Saliou Diallo, Cheikh Talibouya Diop, Arnaud Giacometti, Haoyuan D Li, and Arnaud Soulet Mining contextual preference rules 41 BIBLIOGRAPHIE for building user profiles In International Conference on Data Warehousing and Knowledge Discovery, pages 229–242 Springer, 2012 [11] Mouhamadou Saliou Diallo Découverte de règles de préférences contextuelles : application la construction de profils utilisateurs PhD thesis, Tours, 2015 [12] Johannes Fürnkranz and Eyke Hüllermeier Preference learning and ranking by pairwise comparison In Preference learning, pages 65–82 Springer, 2010 [13] Arnaud Giacometti, Dominique Haoyuan Li, and Arnaud Soulet Construction de profils de préférences contextuelles basée sur l’extraction de motifs séquentiels In EGC, pages 419–430, 2014 [14] Jiawei Han, Jian Pei, Behzad Mortazavi-Asl, Qiming Chen, Umeshwar Dayal, and Mei-Chun Hsu Freespan : frequent pattern-projected sequential pattern mining In Proceedings of the sixth ACM SIGKDD international conference on Knowledge discovery and data mining, pages 355–359, 2000 [15] Jiawei Han, Jian Pei, Yiwen Yin, and Runying Mao Mining frequent patterns without candidate generation : A frequent-pattern tree approach Data mining and knowledge discovery, 8(1) :53–87, 2004 [16] Werner Kießling Foundations of preferences in database systems In VLDB’02 : Proceedings of the 28th International Conference on Very Large Databases, pages 311–322 Elsevier, 2002 [17] Georgia Koutrika and Yannis Ioannidis Personalization of queries in database systems In Proceedings 20th International Conference on Data Engineering, pages 597–608 IEEE, 2004 [18] Fabien Labernia Algorithmes efficaces pour l’apprentissage de réseaux de préférences conditionnelles partir de données bruitées PhD thesis, 2018 [19] Cornuéjols Antoine Laurent Miclet and Atoine CornuØjols Apprentissage artificiel Concepts et algorithms, 2e edition, Eyrolles, 2010 [20] Jian Pei, Jiawei Han, Behzad Mortazavi-Asl, Jianyong Wang, Helen Pinto, Qiming Chen, Umeshwar Dayal, and Mei-Chun Hsu Mining sequential patterns by pattern-growth : The prefixspan approach IEEE Transactions on knowledge and data engineering, 16(11) :1424–1440, 2004 [21] Veronika Peralta, Dimitre Kostadinov, and Mokrane Bouzeghoub Apmdworkbench : A benchmark for query personalization In Proceedings of the CIRSE Workshop, pages 38–41, 2009 [22] Pang-Ning Tan, Michael Steinbach, and Vipin Kumar Introduction to data mining Pearson Education India, 2016 [23] Rosy Tsopra, Jean-Baptiste Lamy, and Karima Sedki Using preference learning for detecting inconsistencies in clinical practice guidelines : Methods and application to antibiotherapy Artificial intelligence in medicine, 89 :24–33, 2018 [24] Jianyong Wang and Jiawei Han Bide : Efficient mining of frequent closed sequences In Proceedings 20th international conference on data engineering, pages 79–90 IEEE, 2004 42 BIBLIOGRAPHIE [25] Nic Wilson Extending cp-nets with stronger conditional preference statements In AAAI, volume 4, pages 735–741, 2004 [26] Mohammed Javeed Zaki Scalable algorithms for association mining IEEE transactions on knowledge and data engineering, 12(3) :372–390, 2000 43 Annexe A Algorithmes A.1 Création des séquences de préférences def com_diff_attr ( pd ) : com = [] diff = [] for col in pd columns : if ( len ( pd [ col ] unique () ) !=1) : diff append ( pd [ col ] unique () ) else : com append ( pd [ col ] unique () ) return np array ( com ) tolist () , np rot90 ( np vstack ( diff ) ) tolist () 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 def c om_di ff_pai rwise ( pd ) : tup_ret = [] for i in range (0 , len ( df ) ) : for j in range ( i +1 , len ( df ) ) : pp = [] nn = [] cm , diff = com_diff_attr ( pd iloc [[ i , j ] ,[0 ,1 ,2 ,3 ,4 ,5]]) if ( pd iloc [i , -1] < pd iloc [j , -1]) : pp = diff [0] nn = diff [1] elif ( pd iloc [i , -1] > pd iloc [j , -1]) : pp = diff [1] nn = diff [0] else : continue pp = tuple ( pp ) nn = tuple ( nn ) c = [] for l in cm : c += l cm = tuple ( c ) 44 ANNEXE A ALGORITHMES 32 33 34 # cm = [ str ( b ) for b in cm ] tup_ret append ([ cm , pp , nn ]) return tup_ret Listing A.1 – fonction séquences de préférences A.2 Détermination des combinaisons possible des motifs de préférences d’une séquence de préférence 10 11 12 13 14 15 16 def perm_gen_1 ( F ) : perms = [] for L in F : emp_l = [[] ,[] ,[]] for id , el in enumerate ( L ) : emp_l [ id ] append ( el ) # emp_l [ id ] append ( ’ ’) if len ( el ) >1: for e in el : emp_l [ id ] append ( e ) for e1 in emp_l [0]: for e2 in emp_l [1]: for e3 in emp_l [2]: perms append ([ e1 , e2 , e3 ]) return perms Listing A.2 – fonction génération des combinaisons possible des motifs de préférences d’une séquence de préférences A.3 Création de l’algorithme FP Growth class Node : count = def init ( self , item , parent , count =1) : self item = item self count = count self children = {} self parent = parent self node_link = None 10 11 def incr ( self , count : int ) : self count += count 12 13 14 15 16 def print ( self , depth =0 , spacing =2) : print ( ’ ’ * depth * spacing , str ( self ) ) for child in self children values () : child print ( depth + 1) 17 18 19 def str ( self ) : return f ’{ self item }:{ self count } ’ 45 ANNEXE A ALGORITHMES 20 21 22 23 24 25 def last ( self ) : curr = self while curr node_link is not None : curr = curr node_link return curr 26 27 28 29 30 31 class F re que nt It em He ad er : def init ( self , frequent_items ) : self node_links = {} self frequent_items = frequent_items 32 33 34 35 36 37 38 39 def link ( self , node ) : if node is None : return if node item in self node_links : last_node = self node_links [ node item ] last () last_node node_link = node else : self node_links [ node item ] = node 40 41 42 43 44 45 46 47 48 49 def c onstr uct_fp _tree ( data , min_support =1) : freq_items = {} for row , count in data items () : for item in row : freq_items [ item ] = freq_items get ( item , 0) + count for key in list ( freq_items ) : if freq_items [ key ] < min_support : del ( freq_items [ key ]) 50 51 52 fr eq ue nt _i te m_ li st = freq_items items () f r e q u e n t _ i t e m _ h e a d e r = Fr eq ue nt Ite mH ea de r ( fr eq ue nt _i te m_ li st ) 53 54 55 56 57 58 59 60 61 62 63 def insert_tree ( tree , items , count ) : if len ( items ) == 0: return item , items = items [0] , items [1:] if item in tree children : tree children [ item ] incr ( count ) else : tree children [ item ] = Node ( item , tree , count ) f r e q u e n t _ i t e m _ h e a d e r link ( tree children [ item ]) if len ( items ) > 0: insert_tree ( tree children [ item ] , items , count ) 64 65 66 67 68 69 70 71 root = Node ( None , None ) for row , count in data items () : items = [ item for item , count in fr eq ue nt _i te m_ li st if item in row ] insert_tree ( root , items , count ) return root , f r e q u e n t _ i t e m _ h e a d e r 46 ANNEXE A ALGORITHMES 72 73 74 75 def ascend_tree ( node ) : paths = [] 76 77 78 79 while node and node parent : paths append ( node item ) node = node parent 80 81 return paths 82 83 84 def tr av er se _n od e_ lin k ( node ) : c o n d i t i o n a l _ p a t t e r n s = {} 85 86 87 88 89 90 while node is not None : patterns = ascend_tree ( node ) freqitems = frozenset ( patterns [1:]) c o n d i t i o n a l _ p a t t e r n s [ freqitems ] = c o n d i t i o n a l _ p a t t e r n s get ( freqitems , 0) + node count node = node node_link 91 92 return c o n d i t i o n a l _ p at t e r n s 93 94 95 96 def mine_tree ( header , tree , prefix_base = set () , result =[] , minimum_support =1) : prefixes = sorted ( header frequent_items , key = lambda t : t [1]) 97 98 99 100 101 for prefix , _count in prefixes : prefixset = prefix_base copy () prefixset add ( prefix ) result append ( prefixset ) 102 103 104 105 106 node_link = header node_links [ prefix ] c o n d i t i o n a l _ p a t t er n s = tr av er se _no de _l in k ( node_link ) subtree , subheader = const ruct_f p_tre e ( conditional_patterns , minimum_support ) mine_tree ( subheader , subtree , prefixset , result ) Listing A.3 – Classe de algorithme FP Growth A.4 Quelque fonctions def fusion_resultat (G , F ) : Support = in c_ oc cu re nce _d if f (G , F ) contradiction = i n c _ o c c u r e n c e _ d i f f _ i n v (G , F ) regle_precision = ret_inc_order (G , F ) calcul_support = calcul_support (G , F ) covariance = inc_occ_fusion (G , F ) out_fusion = [] Support , contradiction , covariance , inc_occurence ) : 47 ANNEXE A ALGORITHMES 10 11 12 for x ,y ,z ,u , v in zip ( regle_precision , calcul_support , support , contradiction , covariance ) : x += [y ,z ,u , v ] out_fusion append ( x ) return out_fusion Listing A.4 – Fonctions de calcul de support, de confiance, de couverture 48 ANNEXE A ALGORITHMES 49 ... FRANCOPHONE INTERNATIONAL ADOUM OKIM BOKA Apprentissages des préférences contextuelles Học tự động sở thích theo ngữ cảnh Spécialité : Systèmes Intelligents et Multimédia Code : Programme pilote MÉMOIRE