École Centrale de Marseille Département d’Électricité, Électronique & Informatique Université de Liège Travail de Fin d’Études du 01/04/15 au 11/09/15 Sélection de variables à grande échelle à partir de forêts aléatoires Célia Châtel Tuteur ECM : François Brucker Tuteur Entreprise : Pierre Geurts Option OMIS Promo 2015 Remerciements Je tiens à remercier mon encadrant de stage, Pierre Geurts, pour le temps qu’il m’a consacré et sa sympathie. Je voudrais également remercier tous les doctorants et membres de l’équipe pour leur accueil chaleureux et plus particulièrement : — Jean-Michel Begon pour sa bonne humeur, — Vân Anh Huynh-Thu pour sa sympathie au quotidien, — Arnaud Joly pour ses conseils techniques et sa disponibilité, — et Antonio Sutera avec qui j’ai eu l’occasion de travailler, pour son aide et sa présence. Enfin, j’aimerais remercier Sandrine Anthoine, François Brucker et Liva Ralaivola qui m’ont donné le goût de la recherche et l’envie de m’y consacrer. 1 Résumé La classification a pour but l’apprentissage d’un modèle permettant de prédire une sortie (représentant des classes) à partir de données. Dans ce domaine, les arbres de décision sont des modèles d’apprentissage simples et très utilisés. Construire des ensembles d’arbres appelés forêts permet en général d’obtenir de bons résultats de classification. La façon de construire les arbres étant intrinsèquement liée à la sélection de variables, qui consiste à retrouver les variables apportant de l’information sur la sortie, de nombreuses méthodes de sélection de variables sont basées sur ces modèles. Nous nous intéressons en particulier à résoudre ce problème à grande échelle, ne permettant pas de mettre en mémoire toutes les données simultanément et obligeant ainsi à n’étudier qu’un certain nombre de variables à la fois. Nous chercherons à identifier toutes les variables ayant une influence sur la sortie. Nous décrivons une méthode naïve et proposons et justifions un nouvel algorithme de sélection de variables reposant en partie sur des résultats théoriques montrés dans l’article ’Understanding variable importances in forests of randomized trees’ (Louppe et al., 2013). Ces résultats utilisent une mesure d’importance des variables calculée à partir de forêts d’arbres aléatoires et basée sur l’information mutuelle entre les variables et la sortie conditionnellement à d’autres variables. Notre étude se divise ensuite en deux parties. Une simulation du comportement des algorithmes est réalisée dans un premier temps avec diverses formes d’arbres et hypothèses sur les données afin de mesurer les performances des deux méthodes dans différents cas et montrer la pertinence de la méthode proposée. Dans un second temps, nous testons la méthode naïve ainsi que notre algorithme sur l’ensemble très utilisé de données générées Madelon afin de comparer les différentes méthodes et de mesurer les performances obtenues sur un ensemble de données. Mots clés big data, apprentissage automatique, arbres de décision, sélection de variables, forêts d’arbres aléatoires 2 Summary In classification, one wants to build a statistical model able to predict an output based on some data. In machine learning, decision trees are a really easy and wide spread method. Constructing several trees and thus, building a forest, leads to good classification results. The way of building these trees is intrinsically linked to feature selection which consists in identifying the features impacting the value of the output. Hence many feature selection methods are based on decision trees. In this work, we focus on feature selection at a large scale, without being able to study all the features at once. We aim at identifying each feature that has an impact on the output. We describe a naive algorithm and propose a new one based on the results from ’Understanding variable importances in forests of randomized trees’ (Louppe et al., 2013). This paper proposes a measure of importance for the features using the mutual information between some features and the output conditioning by other features. Our work is then divided into two parts. First, we study by performing simulations, the speed of convergence of the naive method and of our algorithm. We test our idea on different tree models and data hypothesis by simulating their behaviour, in order to measure our algorithms performances and compare them. Secondly, we use the well known Madelon dataset to compare our methods and performances on a dataset. Key words big data, machine learning, decision trees, feature selection, random forests 3 Table des matières Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Contexte 7 9 1.1 Contexte de travail . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Contexte théorique . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.1 Apprentissage supervisé . . . . . . . . . . . . . . . . . . . 10 1.2.2 Entropie et information mutuelle . . . . . . . . . . . . . . 10 1.2.3 Pertinence et sélection de variables . . . . . . . . . . . . . 11 1.2.4 Arbres de décision . . . . . . . . . . . . . . . . . . . . . . 13 2 Contributions 17 2.1 Objectif général . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1 Algorithme naïf . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.2 Algorithme intelligent . . . . . . . . . . . . . . . . . . . . 20 Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.1 Arbres utilisés . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.2 Hypothèses sur les données . . . . . . . . . . . . . . . . . 25 Mise en pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4.1 Modifications des algorithmes . . . . . . . . . . . . . . . . 26 2.4.2 Arbres utilisés . . . . . . . . . . . . . . . . . . . . . . . . 27 2.4.3 Données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3 2.4 3 Résultats 3.1 30 Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.1 Cas d’une infinité d’arbres . . . . . . . . . . . . . . . . . . 31 3.1.2 Comparaison des deux algorithmes . . . . . . . . . . . . . 31 3.1.3 Impact des données . . . . . . . . . . . . . . . . . . . . . 33 3.1.4 Impact des paramètres . . . . . . . . . . . . . . . . . . . . 37 4 3.1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Données simulées : Madelon . . . . . . . . . . . . . . . . . . . . . 40 3.2.1 Méthodologie . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.2 Comparaison des algorithmes et résultats généraux . . . . 41 3.2.3 Impact des données . . . . . . . . . . . . . . . . . . . . . 43 3.2.4 Impact des paramètres . . . . . . . . . . . . . . . . . . . . 49 3.2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Discussion et perspectives . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.2 Annexe A Comparaison théorique des algorithmes pour le cas de variables marginalement pertinentes 57 Annexe B Impact de α dans le cas K = "Base" 5 1 q sur l’ensemble Madelon 59 Nomenclature α Paramètre de l’algorithme intelligent : pourcentage de variables à éliminer de la mémoire pour l’itération suivante β Paramètre de l’algorithme intelligent : pourcentage de remplissage de la mémoire avant de commencer l’élimination ∆i Décroissance en impureté ˆ Imp (Xm ) Importance de Xm estimée sur des données A (V, Y ) Résultat de l’algorithme appliqué à l’ensemble de variables V et la sortie Y B Sous-ensemble de variables désignant un conditionnement deg (V ) Degré d’interaction maximal de V deg (Xm ) Degré d’interaction de la variable Xm F Sous-ensemble de V renvoyé par les algorithmes : résultat de la sélection de variables H (A) Entropie de la variable aléatoire A I (A; B) Information mutuelle entre les variables aléatoires A et B Imp (Xm ) Importance de Xm calculée à partir d’une infinité d’exemples et de manière indifférente à partir d’une infinité d’arbres ou d’un nombre fini Imp∞ (Xm ) Importance de Xm calculée à partir d’une infinité d’arbres et d’une infinité d’exemples ImpNT (Xm ) Importance de Xm calculée à partir de NT arbres et d’une infinité d’exemples K Paramètre de construction des arbres : pourcentage de variables à utiliser lors de la division en chaque nœud de l’arbre k Nombre de variables pertinentes n Nombre d’exemples dans la base de données p Nombre de variables q Taille de la mémoire V Ensemble des variables Xi Variable particulière Y Variable de sortie 6 Introduction Lors de ma troisième année à l’École Centrale de Marseille, j’ai eu l’occasion de réaliser mon travail de fin d’études au sein de l’Institut Montefiore, département d’électricité, électronique et informatique de l’université de Liège en Belgique. J’ai été amenée à travailler dans le domaine de l’apprentissage automatique, sur la sélection de variables. L’apprentissage supervisé consiste à inférer une fonction à partir de données étiquetées. On dispose d’exemples de points auxquels sont attribuées une classe ou une valeur et le but est de trouver une fonction permettant de prédire à partir des valeurs des points, la valeur de la sortie. Parmi les méthodes d’apprentissage supervisé, on trouve notamment les modèles de type forêts d’arbres aléatoires [6, 3] qui permettent d’obtenir de bonnes performances en prédiction et se distinguent des autres méthodes par leur grande facilité d’utilisation et leurs bonnes performances en termes de temps de calcul. Un problème sous-jacent à l’apprentissage supervisé est le problème de la sélection de variables [5] qui peut consister en deux tâches différentes. La première est de trouver un sous-ensemble F de V = {X1 , X2 , ...Xp }, l’ensemble des variables, le plus petit possible permettant de prédire la sortie Y sans perte d’information significative tandis que la seconde consiste à trouver toutes les variables influençant la sortie, seules ou en combinaison avec d’autres variables. Les intérêts de la sélection de variables sont divers. Elle peut être une fin en soi pour l’information qu’elle apporte à l’utilisateur sur le lien entre les entrées et la sortie. Elle permet de simplifier les modèles et donc de les rendre plus faciles à interpréter. Elle permet également de réduire les temps d’apprentissage en se focalisant sur les variables identifiées. Enfin, elle permet d’éviter le sur-apprentissage, c’est-à-dire la construction de modèles ayant de très bonnes performances sur l’ensemble d’apprentissage mais inefficaces sur de nouvelles données issues de la même distribution. Ce travail se concentre sur la sélection de variables comme méthode d’identification de toutes les variables influant sur la sortie. Les méthodes de forêts aléatoires sont particulièrement intéressantes pour résoudre ce problème. D’abord, parce que la construction des arbres au sein de ces méthodes se fait selon une approche gloutonne, en choisissant à chaque nœud une variable minimisant un certain critère ce qui rend ces modèles étroitement liés à la sélection de variables. Ensuite, parce qu’il est possible de tirer a posteriori de ces modèles une mesure d’importance de variables, dont l’intérêt pratique pour la sélection de variables a été prouvé dans de nombreux travaux. Bien qu’utile, les propriétés de cette mesure ont cependant été très peu étudiées théoriquement. Dans [10], Louppe et al. ont montré la pertinence de 7 cette mesure pour la sélection de variables mais leurs résultats sont cependant limités à des forêts de taille infinie et n’apportent donc pas d’éclairage sur les capacités de ces méthodes à identifier les variables les plus influentes dans le cas d’un ensemble fini d’arbres aléatoires. Dans ce travail, nous nous proposons d’étudier et d’améliorer la convergence de ces algorithmes en fonction du nombre d’arbres introduits dans la forêt. Pour cette étude, nous nous placerons dans un cadre plus contraint où on suppose qu’il n’est pas possible de construire un modèle sur la totalité des variables mais seulement sur un sous-ensemble d’entre elles de taille fixée a priori. Ce cadre théorique est motivé par le besoin de plus en plus fréquent en apprentissage de pouvoir traiter des problèmes à très grande dimension, pour lesquels il n’est pas possible d’étudier toutes les variables simultanément à cause d’une limitation de mémoire. Ce type de problèmes apparaît dans de nombreux domaines. C’est le cas par exemple dans le domaine de la génomique où il n’est pas rare de devoir traiter des millions, voire des dizaines de millions de variables. Dans ce contexte, nous proposons et étudions essentiellement deux algorithmes de sélection : (1) une approche naïve dérivée de travaux existants [7, 9], et consistant simplement à apprendre chaque arbre de la forêt sur un sousensemble de variables choisies uniformément au hasard parmi toutes les variables et (2) une approche nouvelle, plus intelligente, exploitant les arbres précédemment construits pour améliorer la convergence. Une étude théorique de ces deux algorithmes est réalisée qui précise les conditions exactes dans lesquelles ces deux méthodes sont consistantes par rapport au problème de sélection de variables. Leurs vitesses de convergence sont ensuite étudiées et comparées dans différents contextes grâce à des simulations numériques qui supposent le cas asymptotique d’une infinité de données. Enfin, afin de confirmer l’intérêt des méthodes proposées, nous testons leurs performances dans le cas d’un ensemble de données générées artificiellement très utilisé et dont un certain nombre de paramètres sont maîtrisables. Le présent rapport est structuré de la manière suivante. Nous présentons le laboratoire dans lequel le travail a été réalisé dans le chapitre 1.1, le contexte théorique lié au problème dans le chapitre 1.2 puis décrivons la méthode proposée et les études réalisées sur celle-ci et sur la méthode naïve dans le chapitre 2 en terme de simulation et de mise en pratique. Enfin, nous donnons dans le chapitre 3 les résultats obtenus par les simulations réalisées ainsi que par la mise en pratique et concluons. 8 Chapitre 1 Contexte 1.1 Contexte de travail Ce travail, ancré dans le domaine de l’apprentissage automatique a été réalisé au sein de l’université de Liège, en Belgique et plus précisément au département d’Électricité, Électronique et Informatique, situé à l’institut Montefiore. Le laboratoire comprend divers groupes de recherche : — Applied and Computational Electromagnetics (ACE) — Computer Networks (RUN) — Electronics, Microsystems, Measurements, and Instrumentation (EMMI) — Power Transmission and Distribution (TDEE) — Signal and Image Exploitation (INTELSIG) — Software Reliability — Systems and Modeling J’ai plus précisément été intégrée à l’équipe "Systems and Modeling" (SystMod) comprenant plus de soixante membres permanents et doctorants travaillant sur des sujets aussi variés que l’apprentissage automatique, les systèmes dynamiques, les statistiques, le contrôle et l’optimisation, les réseaux d’énergie électrique, la biologie des systèmes et la bioinformatique. L’équipe est impliquée dans différents réseaux d’excellence nationaux et internationaux en particulier le réseau "Pattern analysis, statistical modeling and computational learning" et le pôle d’attraction inter-universitaire DYSCO (Dynamical systems, control and optimization). J’ai eu l’occasion de travailler avec Pierre Geurts et d’être intégrée à son équipe et au groupe de doctorants qu’il encadre. Leur recherche porte plus précisément sur les méthodes de type forêts aléatoires et leurs applications dans différents domaines tels que la bioinformatique. J’ai par exemple été amenée à travailler plus avant avec Antonio Sutera dont la thèse porte sur la caractérisation et l’extension des mesures d’importances de variables dérivées des forêts aléatoires. D’autres sujets étudiés dans ce groupe sont par exemple la classification dans le cas multi-label (c’est-à-dire avec plusieurs sorties), l’inférence de réseaux ou encore l’exploitation de la structure de données structurées telles que les images. 9 L’unité de recherche organise un séminaire bimensuel afin de donner l’occasion à des chercheurs étrangers invités ou des membres de l’unité de présenter leurs recherches. Certains membres de l’équipe travaillent également dans le centre GIGA-R (Groupe Interdisciplinaire de Genoprotéomique Appliquée) au CHU de Liège où ils participent à la recherche en biologie systémique et biologie chimique. Durant mon stage, j’ai pu également bénéficier du CECI (Consortium des Équipements de Calcul Intensif) qui réunit les super-ordinateurs de calcul de l’université libre de Bruxelles, de l’université catholique de Louvain, de l’université de Liège, de celle de Mons et enfin de celle de Namur. Ceci m’a permis d’utiliser des ressources de calculs adaptées à mes besoins. 1.2 Contexte théorique Cette section introduit les concepts théoriques importants tels que la mesure d’information sur laquelle est basée la notion de variable pertinente, les méthodes de forêts aléatoires et les mesures d’importance de variables qui peuvent leur être associées et sont très largement utilisées dans ce travail. 1.2.1 Apprentissage supervisé L’apprentissage supervisé [6] consiste à inférer une fonction à partir de données étiquetées. On dispose d’un échantillon de paires LS = {(x1 , y1 ) , ... (xn , yn )} ⊆ (X × Y)n , appelé ensemble d’apprentissage, tirées de manière indépendante d’une distribution P (X, Y ) sur X × Y inconnue. L’objectif est alors de trouver une fonction f : X → Y qui minimise l’espérance d’un coût EX,Y {L (Y, f (X))}. On parle de classification lorsque Y est une variable discrète et de régression lorsque Y est une variable continue. Dans le cas de la classification, la fonction de coût peut être par exemple : L(y, f (x)) = 1{(y,y0 )∈Y×Y|y6=y0 } ((y, f (x))) qui consiste tout simplement à compter le nombre d’erreurs de classification faites par le modèle. Dans ce travail, nous nous concentrerons sur les problèmes de classification binaire avec des variables discrètes dans la partie théorique. 1.2.2 Entropie et information mutuelle En théorie de l’information [4], l’entropie d’une variable aléatoire A discrète est définie par X H (A) = − p (a) log p (a) a∈A et l’entropie conditionnelle de A sachant la variable aléatoire discrète B par H (A|B) = X p (a, b) log a∈A,b∈B 10 p (b) p (a, b) en notant p (a) la probabilité de a. L’information mutuelle entre deux variables aléatoires A et B est alors définie par : I (A; B) = P a∈A,b∈B p (a, b) log p(a,b) p(a)p(b) = H (A) − H (A|B) = H (B) − H (B|A) L’information mutuelle est symétrique et ne prend que des valeurs positives. Cette quantité permet de mesurer la dépendance entre les deux variables. Par exemple, A et B sont indépendantes si et seulement si I (A; B) = 0. Dans le cas de la sélection de variables, l’idée est d’utiliser I (Xi ; Y ) pour mesurer la pertinence de la variable Xi quant à la prédiction de Y (la variable de sortie) et I (Xi ; Xj ) pour mesurer la redondance entre les variables Xi et Xj . On utilise également l’information mutuelle conditionnelle afin de capturer des relations plus complexes entre les variables. Celle-ci peut s’écrire grâce à la règle de chaînage pour trois variables aléatoires X, Y et Z : I (X; Y |Z) = I (X; Y, Z) − I (X; Z) Dans le cas de deux variables binaires X1 et X2 qui définissent un XOR (Y = X1 ⊕ X2 ), par exemple, seules les deux variables prises ensemble fournissent de l’information sur la sortie. Il faudra donc regarder I (X1 ; Y |X2 ) et non I (X1 ; Y ) pour prendre en compte la relation entre X1 et la sortie. 1.2.3 Pertinence et sélection de variables L’information mutuelle permet de définir formellement la pertinence d’une variable. En effet, dans [8], la pertinence d’une variable est définie à partir de la notion d’indépendance ce qui est équivalent à une information mutuelle nulle comme nous l’avons dit précédemment. Définition 1. Une variable Xm est pertinente pour Y si et seulement si il existe un ensemble de variables B ⊆ {X1 , X2 , ...Xp } \Xm tel que I (Xm ; Y |B) > 0. Intuitivement, une variable est donc pertinente si et seulement si elle apporte de l’information sur la sortie dans au moins un contexte (représenté par le conditionnement B). A l’inverse, une variable est non pertinente si et seulement si pour tout contexte B, I (Xm ; Y |B) = 0. Dans ce cas, quelles que soient les variables avec lesquelles on l’étudie, Xm n’apporte pas d’information sur la valeur de la sortie. Cette notion de pertinence permet de définir formellement le problème de sélection de variables que nous voulons résoudre. Définition 2. La sélection de variables consiste, étant donnés un ensemble de variables V et une sortie Y à trouver toutes les variables Xm dans V telles que Xm est pertinente. On s’intéresse donc aux fonctions A : V × Y → 2V telles que A (V, Y ) = {Xm ∈ V |Xm est pertinente}. 11 Nous cherchons à développer des méthodes de sélection de variables qui convergent vers une solution à ce problème et que nous qualifierons de consistantes. Définition 3. Une méthode de sélection de variables A est dite consistante si, pour un ensemble d’apprentissage de taille infinie et après un temps infini, Xm ∈ A (V, Y ) si et seulement si Xm est pertinente. Nous définissons de plus certaines propriétés relatives aux données. Définition 4. On appelle conditionnement minimal pour Xm un ensemble B ⊆ {X1 , X2 , ...Xp } \Xm tel que : I (Xm ; Y |B) > 0 ∀B 0 ⊆ {X1 , X2 , ...Xp } \Xm , I (Xm ; Y |B 0 ) > 0 ⇒ |B| ≤ |B 0 | Pour un tel B, on appellera degré d’interaction la taille de l’ensemble B qu’on notera deg (Xm ). On notera deg (V ) = maxXm ∈V deg (Xm ) le degré d’interaction maximal de l’ensemble de variables V . On peut de plus définir un type particulier de variables et certaines propriétés. Définition 5. Une variable Xm est dite marginalement pertinente si et seulement si I (Xm ; Y ) > 0 i.e si et seulement deg (V ) = 0. Définition 6. Deux variables Xi et Xj sont dites parfaitement redondantes si ∃B ⊆ {X1 , X2 , ...Xp } \Xi , I (Xi ; Y |B) > 0 ∃B 0 ⊆ {X1 , X2 , ...Xp } \Xj , I (Xj ; Y |B 0 ) > 0 ∀C ⊆ {X1 , X2 , ...Xp } , I (Xj ; Y |C ∪ Xi ) = I (Xi ; Y |C ∪ Xj ) = 0 Dans ce cas, intuitivement, les deux variables contiennent exactement la même information sur la sortie. Connaître les deux variables n’apporte rien de plus sur la sortie que de n’en connaître qu’une. Cela se généralise à des groupes de variables. Il convient d’étudier les variables avec des conditionnements adéquats. En effet, les conditionnements minimaux de variables pertinentes ne sont pas quelconques. Lemme 1. Soient Xi une variable non pertinente pour Y , Xm ∈ V et B ⊆ {X1 , X2 , ...Xp }. I (Xm ; Y |B) = I (Xm ; Y |B ∪ Xi ) . Preuve. D’après la règle de chaînage sur l’information mutuelle [4], on a : I (Xm , Xi ; Y |B) = I (Xm ; Y |B) + I (Xi ; Y |B ∪ Xm ) et I (Xm , Xi ; Y |B) = I (Xi ; Y |B) + I (Xm ; Y |B ∪ Xi ) Or Xi est non pertinente donc I (Xi ; Y |B) = I (Xi ; Y |B ∪ Xm ) = 0. Donc I (Xm ; Y |B) = I (Xm ; Y |B ∪ Xi ) 12 X1 X2 = 0 X1 = 0 X1 = 1 X2 X3 X2 = 1 X3 X3 = 0 0 X3 = 0 1 X4 1 X3 = 1 X3 = 1 X4 = 0 1 X4 = 1 0 1 Figure 1.1 – Exemple d’arbre de décision On en déduit immédiatement le théorème suivant qui nous sera utile par la suite : Théorème 1. Tout conditionnement minimal d’une variable pertinente Xm ne contient que des variables pertinentes. 1.2.4 Arbres de décision Définitions Les méthodes d’arbres (introduites par [1]) étant efficaces en terme de prédiction dans de nombreuses situations, elles sont largement utilisées pour les problèmes de classification et de régression. De plus, la façon dont les arbres sont construits est liée à la sélection de variables, ce qui en fait un outil intuitif et efficace pour la résolution de ce problème. Quand un arbre de décision a été construit, afin de prédire la classe d’un point à partir des valeurs de ses variables, on parcourt l’arbre en prenant à chaque noeud, la branche adaptée à la valeur de la variable considérée. La feuille dans laquelle on arrive indique la classe attribuée au point. Chaque noeud de l’arbre représente donc une division effectuée sur une variable (par exemple, sur l’arbre de la Figure 1.1 si X1 = 0, l’exemple continue son chemin dans le fils gauche de la racine, sinon il va dans le fils droit). Les feuilles de l’arbre quand à elles, sont des nœuds purs et indiquent la classe des exemples qui y arrivent. Le point (X1 = 0, X2 = 0, X3 = 1, X4 = 0) sera par exemple attribué à la classe 1. Pour construire un arbre de décision, il convient donc de choisir en chaque nœud, sur quelle variable sera effectuée la division des données. Ce choix peut être fait de manière arbitraire mais la méthode la plus répandue consiste à maximiser la décroissance d’un certain critère d’impureté des exemples propagés dans chaque noeud : ∆i (st , t) = i (t) − pL i (tL ) − pR i (tR ) avec pR et pL les proportions d’exemples propagés à droite et à gauche respectivement et tR et tL les fils droit et gauche. L’Algorithme 1 détaille la construction de tels arbres pour des variables discrètes. Le critère que nous utiliserons dans tout ce travail est l’entropie de Shannon. Chercher à maximiser la décroissance en entropie de 13 Shannon revient à maximiser l’information mutuelle entre la variable choisie et la sortie conditionnellement aux variables utilisées précédemment dans la branche de l’arbre. Algorithme 1 : Algorithme de création d’un arbre de décision Données : V = {X1 , ..., Xp } l’ensemble de variables, Y la variable sortie, n exemples Résultat : Arbre de décision 1 si Tous les exemples ne sont pas de la même classe et toutes les variables ne sont pas constantes alors 2 pour Xm ∈ V faire 3 IXm = gain en information si on divise le noeud sur Xm 4 fin 5 Xbest = arg maxXm ∈V IXm 6 Créer un nœud qui divise sur Xbest 7 Rappeler la fonction sur les sous-ensembles d’exemples obtenus par la division et ajouter les nœuds en tant que fils du nœud créé 8 fin Au lieu d’un arbre seul, on construit souvent un ensemble d’arbres afin de réduire la variance. On introduit donc un paramètre aléatoire lors de la construction des arbres afin d’obtenir des modèles différents. On peut par exemple construire chaque arbre sur un sous-ensemble (avec remise) des exemples (bagging, [2]), des variables (random subspace, [7]), des deux à la fois (random patches, [9]) ou encore décider de la variable sur laquelle effectuer la division en un nœud de l’arbre parmi un sous-ensemble de variables tirées aléatoirement à chaque nœud (random forest, [3]), ou de façon totalement aléatoire. Une partie de l’étude se concentrera sur la méthode "random forests" qui est l’une des plus utilisées en pratique. Dans la méthode des random forests, on fixe un paramètre K. A chaque noeud, on sélectionne de manière uniforme dK × pe variables (avec p le nombre total de variables) et on utilise la variable maximisant la décroissance d’impureté parmi ces variables uniquement. En prenant par exemple K = 1, on construit alors l’arbre de manière déterministe. A l’inverse, si on prend K = p1 , l’arbre sera construit en choisissant de manière totalement aléatoire les variables sur lesquelles effectuer les divisions. La seule modification à faire dans l’Algorithme 1 est donc au début de chaque appel récursif de choisir un ensemble V 0 ⊆ V de taille dK × pe de manière uniforme et d’effectuer la suite de l’algorithme sur cet ensemble à la place de V. Il est possible de définir certaines propriétés sur les arbres, notamment : Définition 7. Un arbre est dit totalement aléatoire si la variable sur laquelle effectuer la division à chaque nœud est choisie de manière uniforme parmi l’ensemble des variables. Définition 8. Un arbre est dit complètement développé si chaque nœud est divisé en autant de fils qu’il y a de valeurs de la variable choisie et que toutes les variables sont utilisées une fois par branche ou que toutes les feuilles sont pures. 14 Mesure d’importance associée aux arbres A partir d’arbres appris sur des données quelconques, il est possible de définir une mesure d’importance pour les variables sur lesquelles les données sont exprimées. Définition 9. L’ importance estimée d’une variable Xm dans le cas d’un ensemble fini de NT arbres construits avec une perturbation aléatoire est définie par : X X ˆ (st , t) ˆ N (Xm ) = 1 p̂ (t) ∆i Imp T NT T t∈T :v(st )=Xm avec v (st ) la variable choisie lors de la division st , p̂ (t) la probabilité d’arriver au nœud t c’est-à-dire le rapport entre le nombre d’exemples arrivant à ce nœud ˆ (st , t) = i (t) − pL i (tL ) − pR i (tR ) où i est et le nombre total d’exemples et ∆i une mesure d’impureté comme l’entropie de Shannon, tL (resp. tR ) est le fils gauche (resp. droit) de t, et pL (resp. pR ) est la probabilité qu’un exemple arrive dans le nœud tL (resp. tR ). Cela revient à identifier dans chaque arbre de la forêt les nœuds dans lesquels la variable Xm a été utilisée et à quel point elle a permis de réduire l’impureté. On estime ici la valeur de l’importance de la variable grâce aux données avec lesquelles les arbres ont été construits. Si on dispose d’un nombre infini d’exemples, les valeurs d’impureté calculées sont exactes et non plus estimées. On note alors ImpNT (Xm ). Dans le cas d’un ensemble infini d’arbres totalement aléatoires et complètement développés construits sur un ensemble d’exemples supposé infini, on notera l’importance d’une variable : Imp∞ (Xm ) = lim NT →+∞ ImpNT (Xm ) Dans ce cas, l’importance n’est plus estimée mais calculée de manière exacte : tous les conditionnements sont testés pour chaque variable et toutes les informations mutuelles sont calculées exactement. Plusieurs résultats concernant la sélection de variables dans ce cas ont été démontrés dans [10]. Dans la suite, quand Imp∞ (Xm ) ou ImpNT (Xm ) peuvent être utilisées indifféremment, on notera simplement Imp (Xm ). En utilisant comme mesure d’impureté l’entropie de Shannon, l’importance d’une variable Xm peut s’exprimer de la manière suivante : Imp∞ (Xm ) = p−1 X 1 p k=0 k 1 p−k X B∈Pk (V I (Xm ; Y |B) −m ) avec Pk (V −m ) l’ensemble des sous-ensembles de variables ne contenant pas Xm et contenant k éléments. Ceci revient donc à mesurer pour la variable Xm la valeur de son information mutuelle avec la sortie conditionnellement à tous les sous-ensembles de variables possibles et à effectuer une moyenne des résultats. On tire le résultat suivant de [10] : 15 Théorème 2. Une variable Xm est non pertinente pour Y si et seulement si son importance Imp∞ (Xm ) calculée grâce à un ensemble infini d’arbres totalement aléatoires et complètement développés est nulle. L’importance d’une variable et sa pertinence sont donc étroitement liées et cette mesure d’importance peut être utilisée pour résoudre un problème de sélection de variables de manière consistante. Notons cependant que ce théorème n’est plus vrai dans le cas d’arbres non totalement aléatoires [10]. 16 Chapitre 2 Contributions 2.1 Objectif général Les algorithmes de forêts aléatoires ont la propriété de permettre de trouver toutes les variables pertinentes dans l’hypothèse d’un nombre infini d’arbres et d’une taille d’ensemble d’apprentissage infinie. Étant donnés les résultats rappelés dans le chapitre 1.2.4, il est aisé de se convaincre que pour un NT fini fixé, la condition ImpNT (Xi ) > 0 reste suffisante pour qu’une variable soit pertinente mais elle n’est cependant plus nécessaire. Plus l’algorithme dispose d’un nombre important d’arbres et plus il détecte de variables pertinentes. Sa vitesse de convergence, mesurée par exemple par le nombre moyen d’arbres nécessaire pour trouver toutes les variables pertinentes, n’a cependant jamais été étudiée à notre connaissance. Dans ce travail, notre objectif est d’étudier, et de tenter d’améliorer, la convergence de ces algorithmes dans un cadre plus contraint où on suppose qu’il n’est pas possible de construire un arbre sur la totalité des variables, mais seulement sur un sous-ensemble d’entre elles de taille fixée q (le cadre classique non contraint correspondant donc à q = p). Ce cadre particulier est motivé par le désir de traiter des problèmes de sélection de variables à très grande dimension pour lesquels on ne peut pas supposer qu’il est possible de stocker en mémoire la totalité des données. Pour simplifier nos développements, nous ne ferons par contre pas d’hypothèse particulière sur le nombre d’échantillons qui peuvent être exploités simultanément pour construire nos modèles. Il est cependant intéressant de noter que lorsqu’il s’agit de construire des arbres, le nombre de variables exploitées par le modèle dépend directement de la taille de la base de données. En effet, étant donnée la division récursive de l’ensemble d’apprentissage du haut vers le bas de l’arbre, plus la taille de l’échantillon d’apprentissage est grande et plus il est possible de construire des arbres profonds, en particulier si on veut maintenir un nombre d’échantillons en chaque nœud suffisant pour pouvoir estimer correctement les informations mutuelles conditionnelles. Il y a donc une certaine forme d’équivalence entre travailler à nombre de variables contraint et travailler à nombre d’échantillons contraint. 17 Notre approche pour aborder cette problématique est la suivante. Dans le chapitre 2.2, nous présentons deux algorithmes basés sur les forêts d’arbres permettant de résoudre le problème de sélection de variables en tenant compte de la contrainte de mémoire. Le premier, plus naïf, consiste simplement à construire les arbres sur des sous-ensembles de variables de taille q choisis aléatoirement et de manière uniforme parmi toutes les variables. Le second est une méthode alternative originale dont l’objectif est d’améliorer la convergence de la méthode naïve. Dans cette même section, nous étudions en détails les conditions de consistance de ces deux méthodes. Ensuite, afin d’évaluer dans un premier temps les idées et performances des algorithmes, nous mettons en place des simulations numériques (c’est-à-dire en supposant un échantillon de taille infinie et sans calculer effectivement les importances ni utiliser de données) afin d’évaluer le nombre d’itérations nécessaires aux différents algorithmes pour retrouver toutes les variables pertinentes de l’ensemble. Les modèles théoriques d’arbres et de données que nous utilisons pour ces simulations sont présentés dans les chapitres 2.3.1 et 2.3.2 respectivement. Nous discutons ensuite des modifications à apporter à ces algorithmes afin de les rendre utilisables en pratique et présentons les modèles d’arbres utilisés dans le chapitre 2.4. 2.2 Algorithmes Ci-dessous, nous donnons les deux idées d’algorithmes sur lesquels nous avons réalisé une étude théorique, des simulations et enfin une mise en pratique. 2.2.1 Algorithme naïf L’algorithme le plus simple de sélection de variables à partir de forêts d’arbres aléatoires consiste à construire NT arbres à partir d’ensembles de q variables choisies uniformément parmi l’ensemble des variables V et à calculer ImpNT (Xm ) pour tout Xm ∈ V . Nous reformulons légèrement cet algorithme dans l’Algorithme 2 en calculant les importances des variables après chaque arbre appris afin d’extraire les variables pertinentes au fur et à mesure des itérations. On peut également envisager de construire à chaque itération une forêt d’arbres et d’en extraire les importances des variables. En pratique, il n’est pas possible de savoir si toutes les variables pertinentes ont été trouvées à moins de les avoir toutes identifiées comme pertinentes ou d’avoir testé tous les conditionnements possibles. Cet algorithme est dérivé des méthodes random subspace [7] et random patches [9] qui ont montré qu’il offrait de bonnes performances en terme de précision de classification. Variante théorique A la place de construire un unique arbre à chaque itération et pour évaluer la capacité de l’algorithme à identifier les variables pertinentes, on peut également supposer qu’on construit un nombre infini d’arbres à chaque itération. Cela revient donc, pour chaque variable de l’ensemble Q choisi, à calculer son information mutuelle avec la sortie conditionnellement à 18 Algorithme 2 : Algorithme naïf Données : V = {X1 , ..., Xp } l’ensemble de variables, Y la variable sortie, n exemples, N le nombre d’itérations maximum, q la taille de la mémoire Résultat : Ensemble F ⊆ {X1 , ..., Xp } des variables pertinentes identifiées 1 F =∅ 2 pour t de 1 à N faire 3 Q = choix (q, V ) // On tire aléatoirement q variables dans V 4 Construire un arbre sur Q 5 pour Xm ∈ Q faire 6 Calculer Imp (Xm ) à l’aide de l’arbre construit // On calcule l’importance avec l’arbre construit 7 si Imp (Xm ) > 0 alors 8 Ajouter Xm à F 9 fin 10 fin 11 fin tous les sous ensembles possibles de Q. On suppose donc que pour toute variable Xm ∈ Q et pour tout Q0 ⊆ Q\Xm , on sait si Imp(Xm |Q0 ) > 0. Dans la suite, on note Atnaïf (V, Y ) l’ensemble des variables renvoyé par l’algorithme naïf à partir des variables V et de la sortie Y après t itérations. Lemme 2. Soit V un ensemble de variables et Y une variable aléatoire discrète. L’algorithme naïf utilisant des arbres totalement aléatoires vérifie : lim Atnaïf (V, Y ) = {Xm ∈ V |Xm pertinente et deg (Xm ) < q} t→∞ Preuve. Pour un ensemble infini d’arbres complètement développés et totalement aléatoires construits sur des sous-espaces de q variables, [10] montre que : Imp∞ (Xm ) = q−1 X k=0 p−k−1 q−k−1 p q 1 q k 1 q−k X I (Xm ; Y |B) (2.1) B∈Pk (V −m ) avec Pk (V −m ) les sous-ensembles de V \Xm de taille k. Soit Xm ∈ Atnaïf (V, Y ) quand t tend vers +∞. L’algorithme a donc trouvé lors d’une itération Imp (Xm ) > 0. L’information mutuelle étant positive, l’un des termes de la deuxième somme de l’équation (2.1) au moins est positif. Donc Xm est pertinente avec deg (Xm ) < q. De même, si Xm est pertinente et deg (Xm ) < q alors l’un des termes de la somme est positif. En effet quand t tend vers +∞, tous les conditionnements possibles de tailles inférieures ou égales à q − 1 sont testés pour la variable Xm . Théorème 3. L’algorithme naïf utilisant des arbres totalement aléatoires est consistant si et seulement si deg (V ) < q. 19 Preuve. Si deg (V ) < q, alors : ∀Xm , Xm pertinente ⇒ deg (Xm ) < q. Le Lemme 2 donne alors le résultat. Si l’algorithme naïf est consistant, alors il a pu identifier toutes les variables pertinentes et uniquement celles-ci. Il a donc pu mettre en mémoire une variable Xm telle que deg (Xm ) = deg (V ) et tout son conditionnement. On a donc 1 + deg (Xm ) ≤ q. Donc deg (V ) < q. Corollaire 1. Soit k le nombre de variables pertinentes. L’algorithme naïf utilisant des arbres totalement aléatoires est consistant pour k ≤ q. Preuve. On déduit du Théorème 1 que k ≤ q ⇒ deg(V ) < k car il n’y a que des variables pertinentes dans un conditionnement minimal. 2.2.2 Algorithme intelligent L’algorithme naïf semble améliorable dans la mesure où les arbres précédemment construits ne sont pas pris en compte. De plus, le conditionnement minimal d’une variable pertinente n’étant composé que de variables pertinentes comme énoncé par le Théorème 1, il paraît naturel de conserver les variables pertinentes identifiées pour les utiliser dans les conditionnements servant à trouver les suivantes. Ceci constitue l’idée générale de l’algorithme proposé (Algorithme 3) que nous appellerons algorithme intelligent. L’idée est d’éviter de tester des conditionnements composés uniquement de variables non pertinentes par exemple et de se concentrer sur les variables qui ont plus de chances d’être dans le conditionnement d’une variable pertinente. Algorithme 3 : Algorithme intelligent Données : V = {X1 , ..., Xp } l’ensemble de variables, Y la variable sortie, n exemples, N le nombre d’itérations maximum, q la taille de la mémoire Résultat : Ensemble F ⊆ {X1 , ..., Xp } des variables pertinentes identifiées 1 F =∅ 2 pour t de 1 à N faire 3 f = |F | 4 R = choix (q − f, V \F ) 5 Q=R∪F 6 Construire un arbre sur Q 7 pour Xm ∈ Q faire 8 Calculer Imp (Xm ) à l’aide de l’arbre construit 9 si Imp (Xm ) > 0 alors 10 Ajouter Xm à F 11 fin 12 fin 13 fin La différence avec le précédent se fait donc uniquement aux lignes 4 et 5 lors de la construction de l’ensemble utilisé pour apprendre les arbres. On utilise 20 ici à chaque fois dans cet ensemble les variables déjà identifiées. Cette méthode augmente les chances de trouver certaines variables en permettant de tester des conditionnements potentiellement plus intéressants que s’ils étaient tirés au hasard. L’algorithme est toujours consistant pour k ≤ q avec k le nombre de variables pertinentes. L’un des inconvénients de cette version brute est que sa consistance n’est plus garantie pour k > q même si le degré d’interaction maximal est inférieur à q. En effet, s’il y a plus de variables pertinentes que ne peut en contenir la mémoire, une fois que l’algorithme aura trouvé q variables, sa mémoire sera remplie et il s’arrêtera sans pouvoir trouver les k − q restantes. Une variation envisageable de l’algorithme peut être d’éliminer un certain nombre de variables identifiées, lors du tirage, afin d’éviter de remplir la mémoire et ainsi de redonner plus de poids à l’exploration (qui consiste à aller chercher de nouvelles variables à étudier) face à l’exploitation (qui consiste à utiliser les variables déjà utilisées et identifiées comme pertinentes). On peut choisir par exemple, de n’utiliser que 50 % des variables pertinentes identifiées lors de l’itération suivante au lieu de l’ensemble F entier. Il paraît plus judicieux de commencer à éliminer aléatoirement ces variables une fois que la mémoire est déjà proche d’être pleine afin d’éviter à l’algorithme de faire de nombreuses itérations quasiment identiques au début. La méthode obtenue est alors l’Algorithme 4 prenant deux nouveaux paramètres en entrée : — Le premier, α, représente le pourcentage de variables identifiées qui ne sera pas utilisé pour la prochaine itération et permet de définir l’importance de l’exploration face à l’exploitation. α = 1 revient à exécuter l’Algorithme 2 tandis que α = 0 équivaut à l’Algorithme 3. Une valeur intermédiaire permet de ne pas bloquer la mémoire inutilement et de renouveler les variables utilisées dans les conditionnements testés. — Le second, β, indique le pourcentage de remplissage de la mémoire à partir duquel l’algorithme doit commencer à ne pas utiliser toutes les variables identifiées pour l’itération suivante. Par exemple, si q = 20 et β = 0.25, l’algorithme s’exécutera de la même manière que l’Algorithme 3 jusqu’à avoir trouvé 5 variables. Une fois ces cinq variables identifiées, il commencera à éliminer α% des variables identifiées pour l’ensemble de variables utilisé lors de l’itération suivante. Ce paramètre fixe donc la place accordée à une phase d’exploration pure. Ces deux paramètres permettent ainsi de compenser certaines difficultés que l’algorithme peut rencontrer selon les paramètres du problème et d’autoriser la convergence dans le cas q < k (avec k le nombre de variables pertinentes) mais aussi de l’accélérer dans d’autres cas. Le théorème suivant précise les conditions de consistance de cet algorithme. Théorème 4. L’algorithme intelligent utilisant des arbres totalement aléatoires est consistant pour : — k≤q — k > q, deg (V ) < q et α ≥ deg(Vq )+1 Preuve. Pour k ≤ q, la même preuve que pour l’algorithme naïf s’applique. 21 Algorithme 4 : Algorithme intelligent amélioré Données : V = {X1 , ..., Xp } l’ensemble de variables, Y la variable sortie, n exemples, N le nombre d’itérations maximum, q la taille de la mémoire, α le pourcentage d’abandon de variables, β le pourcentage de remplissage de la mémoire à partir duquel commencer à abandonner des variables Résultat : Ensemble F ⊆ {X1 , ..., Xp } des variables pertinentes identifiées 1 F =∅ 2 pour t de 1 à N faire 3 f = |F | 4 b = β × q // b représente le nombre de variables en mémoire à partir duquel on commence à libérer de l’espace 5 si f > b alors 6 a = α × f // a, le nombre de variables à enlever de la mémoire 7 G = choix (f − a, F ) 8 R = choix (q − f + a, V \G) 9 Q=R∪G 10 fin 11 sinon 12 R = choix (q − f, V \F ) 13 Q=R∪F 14 fin 15 Construire un arbre sur Q 16 pour Xm ∈ Q faire 17 Calculer Imp (Xm ) à l’aide de l’arbre construit 18 si Imp (Xm ) > 0 alors 19 Ajouter Xm à F 20 fin 21 fin 22 fin 22 Pour k > q, l’idée est de considérer le pire cas. Si l’algorithme a déjà identifié q variables et qu’il lui reste une variable Xm ainsi que toutes les variables de son conditionnement à trouver, il doit libérer dans sa mémoire au moins deg (Xm )+1 places. On doit donc avoir α × q ≥ deg (Xm ) + 1 ⇐⇒ α ≥ 2.3 deg(Xm )+1 . q Simulations L’étude effectuée dans un premier temps est une simulation du comportement des algorithmes décrits précédemment. Il s’agit de tester la vitesse de convergence des différentes méthodes sans calculer effectivement les importances des variables ni construire d’arbres. On simule uniquement l’ordre dans lequel les variables seraient choisies. Nous ne générons ou n’utilisons dans cette section aucun ensemble de données mais nous contentons de simuler des liens entre des variables de manière aléatoire. Sur un ensemble de p variables, on pourra par exemple supposer que pour que la variable X1 apporte de l’information sur la valeur de sortie, on a besoin de connaître la valeur de la variable X2 . Ces expériences partent de l’idée que la structure des données est le facteur le plus influent pour les résultats de nos algorithmes. Étudier le problème en simulant simplement le comportement des algorithmes permet donc de se concentrer sur l’aspect combinatoire du problème. On suppose alors qu’on dispose d’un nombre d’échantillons infini et qu’il suffit de savoir si Imp (Xm ) > 0 pour déterminer la pertinence d’une variable. La valeur de l’importance en ellemême n’a aucun impact et c’est pourquoi nous ne construisons ici aucun arbre de décision. L’accent est mis sur la structure des données. 2.3.1 Arbres utilisés On considère deux cas différents de construction d’arbres pour identifier les variables pertinentes : simuler la construction d’une infinité d’arbres ou d’un arbre particulier. Dans le premier cas, lorsque l’algorithme tire aléatoirement l’ensemble Q des variables qu’il peut mettre en mémoire, on suppose qu’il trouve n’importe quelle variable Xm ∈ Q telle qu’il existe un B ⊆ Q \ Xm tel que I (Xm ; Y |B) > 0. Ceci revient à construire un ensemble infini d’arbres complètement aléatoires. En effet, grâce à une telle forêt, tous les conditionnements possibles seraient testés pour le calcul de l’importance de chaque variable et toute variable pertinente serait identifiée. Cette configuration est peu réaliste 1 mais permet d’évaluer rapidement l’intérêt des méthodes proposées et est facile à étudier théoriquement. Le second cas, plus réaliste, consiste à construire à chaque itération un seul arbre. On applique alors l’idée des random forests présentée dans le chapitre 1.2.4. A chaque nœud, un ensemble de K × q variables est tiré au sort parmi 1. Elle pourrait se justifier pratiquement en construisant plusieurs arbres en parallèle. 23 (a) Exemple de relations de pertinence entre trois variables. Une flèche de X1 vers X2 indique que X1 est dans un conditionnement minimal de X2 . X1 (b) Exemple d’arbre obtenu X1 X2 X3 X1 = 0 X1 = 1 X2 X2 X2 = 0 X2 = 1 X3 X3 X2 = 0 X3 X2 = 1 X3 Figure 2.1 – Dans la simulation, les variables X2 et X3 peuvent être choisie indifféremment au deuxième niveau. X1 sera toujours choisie au premier niveau. les variables mises en mémoire pour choisir la variable sur laquelle diviser le nœud. Pour la construction d’un arbre de décision classique avec un critère d’information mutuelle, on choisit la variable Xk servant à diviser un nœud telle que : p k = arg max I (Xm ; Y |B = b) m=1 avec B l’ensemble des variables choisies dans les nœuds situés sur la branche entre la racine et le nœud et b leurs valeurs le long de la branche. La variable sélectionnée est donc celle qui apporte le plus d’information sur la sortie en prenant en compte les variables déjà sélectionnées. La forme d’arbre étudiée dans un soucis de simplification de la simulation est un cas particulier. Au lieu de sélectionner une variable à chaque nœud, on choisit une unique variable par niveau de l’arbre. De plus, afin de pouvoir simuler le comportement des algorithmes sans estimer en pratique les importances, la variable est choisie aléatoirement parmi celles identifiées comme pertinentes étant données les variables choisies précédemment. On choisira donc au premier niveau une variable marginalement pertinente au hasard parmi les K × q variables, puis une variable pertinente étant donnée la précédente et ainsi de suite. Dans le cas où aucune variable ne remplit les contraintes données, un tirage aléatoire parmi toutes les variables restantes est effectué. Un exemple de construction d’un tel arbre est illustré par la Figure 2.1 pour le cas où K vaut 100%. Un arbre est construit ici à chaque itération ce qui permet de tester pour chaque variable Xm le conditionnement constitué de toutes les variables sélectionnées avant Xm (et les conditionnements inclus dans cet ensemble). Ce cas est donc plus réaliste que le précédent. Sa consistance n’est pas assurée pour K > p1 mais il est intéressant vu sa pertinence pratique. 24 (a) Hypothèse de chaînage 1 2 3 (b) Hypothèse de cliques 4 5 1 2 5 6 4 3 8 7 Figure 2.2 – Représentation graphique des hypothèses sur les données. Une flèche de 1 à 2 indique que 1 est dans le conditionnement minimal de 2. 2.3.2 Hypothèses sur les données La nature des données utilisées et des relations de dépendances entre les variables va nécessairement influencer la vitesse de convergence des algorithmes proposés. Pour ces simulations, nous proposons, en plus d’un cas général, deux cas particuliers : — hypothèse de chaînage : le conditionnement minimal qui rend pertinente la variable Xi est {X1 , X2 , ...Xi−1 }. Ce cas est a priori le plus avantageux pour l’algorithme de sélection de variables intelligent. En effet, toutes les variables identifiées comme pertinentes sont dans le conditionnement des variables qu’il reste à trouver. Un exemple de graphe de relations entre les variables sous cette hypothèse est représenté sur la Figure 2.2a. — hypothèse de cliques : les variables sont réparties en sous-ensembles au sein desquels chaque variable est pertinente uniquement si elle est observée avec les autres. Ce cas est la généralisation d’un XOR et est a priori le plus défavorable à l’algorithme proposé puisque trouver une nouvelle variable pertinente implique de tirer lors de la même itération, toutes les variables contenues dans la même clique qu’elle. La Figure 2.2b U donne U un exemple de ce cas. Plus formellement, dans ce cas, V = V1 ... Vc et : ∀Xm ∈ Vi , Vi \Xm est le seul conditionnement minimal de Xm — le cas général où le conditionnement de chaque variable est généré aléatoirement. On fixe alors deg (V ) le degré d’interaction maximal des variables. Pour chaque variable, on tire de manière aléatoire et uniforme son degré dans {0, .., deg (V )} puis les variables constituant un conditionnement minimal. La génération aléatoire des conditionnements ne prend pas en compte l’existence possible de contraintes quant aux conditionnements rencontrés. Une étude théorique pourrait permettre de dégager des cas impossibles et d’ajouter certaines contraintes de génération si elles existent. Dans le cas de variables binaires par exemple, nous ne sommes pas parvenus à créer un exemple respectant l’hypothèse de cliques sans utiliser des cliques strictement identiques. Nous avons également voulu étudier l’impact de la redondance entre les variables et plus précisément le cas où plusieurs variables fournissent exactement la même information sur la sortie mais aussi celui où des cliques de variables sont redondantes. Intuitivement, la redondance complique l’identification de toutes 25 les variables pertinentes. En effet si l’une d’entre elle est conservée dans la mémoire par l’algorithme intelligent, les arbres construits risquent de conserver cette variable dans les premiers niveaux et ainsi d’empêcher l’identification d’une variable complètement redondante qui apparaîtrait plus bas. Les résultats des simulations sont disponibles dans la Section 3 et confirment l’intérêt de l’algorithme intelligent par rapport à la version naïve. Le passage à la pratique paraît donc pertinent. 2.4 Mise en pratique La manière dont nous avons défini la pertinence d’une variable ne permet pas de s’appliquer en pratique. En effet, sur des données réelles, il est extrêmement rare voire impossible d’observer des importances de variables nulles. L’information mutuelle théoriquement nulle est toujours surestimée à cause du nombre fini d’échantillons. Toutes les variables seraient alors identifiées comme pertinentes, ce qui ne correspond évidemment pas au problème posé. 2.4.1 Modifications des algorithmes Nous avons donc besoin d’une nouvelle méthode pour identifier les variables jugées pertinentes parmi l’ensemble de celles utilisées à chaque itération lors de la construction de l’arbre. L’idée est de remplacer le test Imp (Xm ) > 0 par un test statistique. Dans [11], il est rappelé que : Proposition 1. Sous hypothèse d’indépendance statistique, 2n ln (2) I (X; Y ) suit une loi du χ2 à (CX − 1) (CY − 1) degrés de liberté avec CX la cardinalité de la variable X (c’est-à-dire le nombre de valeurs différentes qu’elle peut prendre), CY la cardinalité de la variable Y de sortie et n le nombre d’échantillons utilisés pour estimer l’information mutuelle. Nous nous intéressons ici à des problèmes de classification binaire, on aura donc toujours CY = 2. Les arbres utilisés effectuant des divisions binaires et les tests statistiques étant locaux, on aura également CX = 2. 2 On réalisera donc après la construction de chaque arbre un test du χ2 en chaque nœud afin de déterminer si la variable est pertinente ou non. Cette méthode est couramment utilisée en sélection de variables. L’Algorithme 5 résume le processus utilisé. Le seuil choisi pour le test du χ2 est évidemment déterminant pour les résultats de l’algorithme. En effet, si dans les simulations, seules des variables effectivement pertinentes étaient retournées, ici, il est possible que l’algorithme 2. Néanmoins, dans l’implémentation utilisée pour les tests, nous avons utilisé comme cardinalité le nombre de valeurs que peut prendre la variable en tout, c’est à dire, dans le cas de variables continues, le nombre d’intervalles dans lesquels peuvent se trouver les valeurs de la variable selon les divisions réalisées dans l’arbre de décision (c’est à dire le nombre de fois où la variable a été sélectionnée dans la branche plus un). Ceci n’a pas pu être corrigé afin d’avoir des résultats à temps et n’impacte que très peu les résultats obtenus. 26 Algorithme 5 : Algorithme de sélection de variable par test du χ2 Données : Un arbre de décision construit sur un ensemble Q ⊆ V = {X1 , ..., Xp } de variables, y la cardinalité de la sortie, error le seuil d’erreur du test du χ2 Résultat : Ensemble F ⊆ Q des variables pertinentes identifiées 1 F =∅ 2 pour chaque noeud t de l’arbre faire 3 f = variable sur laquelle le noeud a été divisé 4 si f ∈ / F alors 5 c=2 6 d = (c − 1)(y − 1) 7 s = seuil(error, d) 8 si 2n ln 2∆i (t) ≥ s alors // avec ∆i (t) le gain au noeud considéré i.e l’information mutuelle entre la variable et la sortie conditionnellement à la branche 9 Ajouter f à F 10 fin 11 fin 12 fin retourne de faux positifs et identifient des variables comme pertinentes alors qu’elles ne le sont pas en réalité. Nous n’avons plus de garantie sur la pertinence des variables retournées par l’algorithme. 2.4.2 Arbres utilisés Pour la mise en pratique, nous avons choisi d’utiliser des arbres de décision de classification classique et non plus la version simplifiée utilisée pour les simulations. Les arbres sont donc construits en utilisant comme critère d’impureté l’entropie de Shannon, en utilisant le paramètre K mentionné dans la Section 1.2.4 et en optimisant à la fois sur la variable et sur le seuil à chaque nœud. D’un point de vue pratique, ce sont les arbres de décision de la librairie python "scikit-learn" 3 qui ont été utilisés. Certaines modifications ont été effectuées dans le code de cette librairie afin de parcourir les arbres pour les tests statistiques et réunir les données nécessaires à ces tests. Ceci nous permet donc d’arriver à l’algorithme intelligent final et utilisé en pratique dont le pseudo-code se trouve dans l’Algorithme 6. Cette version se décline aisément en l’algorithme naïf final en fixant α = 1 et β = 0. 3. https://github.com/scikit-learn/scikit-learn,http://scikitlearn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html 27 Algorithme 6 : Algorithme de mise en pratique Données : V = {X1 , ..., Xp } l’ensemble de variables, Y la variable sortie, n exemples, N le nombre d’itérations maximum, q la taille de la mémoire, α le pourcentage d’abandon de variables, β le pourcentage de remplissage de la mémoire à partir duquel commencer à abandonner des variables, error le seuil d’erreur du test du χ2 Résultat : Ensemble F ⊆ {X1 , ..., Xp } des variables pertinentes identifiées 1 F =∅ 2 pour t de 1 à N faire 3 f = |F | 4 b = β × q // b représente le nombre de variables en mémoire à partir duquel on commence à libérer de l’espace 5 si f > b alors 6 a = α × f // a, le nombre de variables à enlever de la mémoire 7 G = choix (f − a, F ) 8 R = choix (q − f + a, V \G) 9 Q=R∪G 10 fin 11 sinon 12 R = choix (q − f, V \F ) 13 Q=R∪F 14 fin 15 Construire un arbre sur Q 16 F = chi2(arbre, CY , error) ∪ F // avec chi2 l’Algorithme 5 17 fin 28 Figure 2.3 – Exemple de données "madelon" en trois dimensions 2.4.3 Données L’ensemble de données utilisé dans les tests de nos algorithmes, appelé "Madelon" provient d’un challenge de sélection de variables proposé lors de NIPS 4 2003. C’est un problème généré artificiellement, de classification binaire. Les données sont générées en fabriquant des gaussiennes de points pour chaque classe qui sont ensuite réparties aléatoirement sur les sommets d’un hypercube. Le problème peut ainsi être considéré comme une généralisation d’un XOR. Cette configuration en fait donc un problème difficile du point de vue de la sélection de variables. Il peut en effet être compliqué d’identifier la pertinence des variables si elles ont besoin d’être en groupe pour l’être, comme dans l’hypothèse de cliques que nous avons décrite précédemment. Des variables "bruit" aléatoires sont ensuite ajoutées au problème. La Figure 2.3 illustre une configuration "madelon" pour trois variables informatives sans variables de bruit. Une variable seule ne permet pas d’obtenir de l’information sur la classe des points et il faut bien la combinaison des trois pour prédire la classe. La pertinence des variables est donc plus difficile à détecter. 4. "Neural Information Processing Systems", conférence annuelle en intelligence artificielle 29 Chapitre 3 Résultats Dans cette partie, nous présentons dans un premier temps les résultats obtenus lors des simulations et commentons plus particulièrement l’impact des structures des données et des paramètres des algorithmes. Nous développons ensuite les résultats obtenus sur un ensemble de données afin de comparer les performances et d’appuyer l’intérêt de notre algorithme intelligent en terme de vitesse de convergence dans un cas réel. 3.1 Simulations Afin d’étudier la vitesse de convergence des différents algorithmes et l’impact de leurs paramètres, plusieurs types de données ont été testés. Un récapitulatif de toutes les configurations est disponible sur la Table 3.1. Pour chacune de ces configurations, 50 tests ont été réalisés en générant des jeux de données aléatoires, pour la version utilisant une infinité d’arbres et pour celle n’en utilisant qu’un. Tous les résultats présentés sauf dans la section 3.1.3 ou mention contraire, utilisent des ensembles générés avec les paramètres p = 500, k = 20 (avec k le nombre de variables pertinentes), sans hypothèse sur les données et pour un degré d’interaction maximal de 5. Table 3.1 – Paramètres des données testés p 500 500 500 500 500 500 5000 500 500 k 20 20 20 10 20 20 200 20 20 hypothèse aucune chaînage clique aucune aucune aucune aucune aucune clique deg (V ) 5 / / 5 2 10 50 5 / 30 n_cliques / / 5 / / / / / 5 redondance non fixée non fixée non fixée non fixée non fixée non fixée non fixée 2 couples 2 couples de cliques Table 3.2 – Valeurs des paramètres des algorithmes testés Paramètre q K α β Valeurs 6, 10, 15, 18, 20, 25, 50 1 q , 0.25, 0.50, 0.75, 1. 0.0, 0.1, 0.25, 0.50, 0.75, 0.80, 0.90 0.0, 0.25, 0.50, 0.75 Algorithme concerné naïf, intelligent naïf, intelligent intelligent intelligent Les performances des deux algorithmes sont mesurées en regardant le nombre moyen de variables pertinentes identifiées après un certain nombre d’itérations. Les expériences ont été menées jusqu’à 100000 itérations et nous présentons des courbes représentant le nombre moyen de variables pertinentes trouvées en fonction du nombre d’itérations maximum autorisé. Les différentes combinaisons de paramètres utilisées pour les données sont visibles sur la Table 3.1 et les paramètres des algorithmes sur la Table 3.2. Sur les courbes comparant les deux versions de l’algorithme, un trait plein représente l’algorithme intelligent tandis qu’un pointillé indique l’algorithme naïf. Les couleurs elles, sont associées à des valeurs de la taille de la mémoire. 3.1.1 Cas d’une infinité d’arbres Simuler à chaque itération le calcul d’une infinité d’arbres permet d’améliorer significativement la vitesse de convergence de l’algorithme et de comparer rapidement le comportement des deux algorithmes. C’est aussi le cas dans lequel l’étude théorique est la plus simple. La convergence dans le cas q = 50 se fait par exemple en quatre fois moins d’itérations qu’en ne construisant qu’un arbre comme nous le verrons plus tard. La construction d’une infinité d’arbres en pratique est évidemment impossible mais la simulation et les résultats présentés sur la Figure 3.1a permettent de confirmer l’intérêt de l’algorithme proposé en montrant sa supériorité par rapport à l’algorithme naïf dans les cas testés à part pour la très petite valeur de mémoire q = 6. Dans le cas particulier des cliques illustré sur la Figure 3.1b par contre, les deux algorithmes sont plus proches et l’algorithme naïf dépasse légèrement la méthode que nous proposons. Les résultats présentés ensuite sont obtenus pour la construction d’un seul arbre à chaque itération afin de se placer dans une configuration plus réaliste. 3.1.2 Comparaison des deux algorithmes La Figure 3.2 représente l’impact de la taille de la mémoire sur les deux algorithmes étudiés pour une configuration particulière. On remarque la très nette amélioration des performances en utilisant l’algorithme intelligent par rapport à l’algorithme naïf. Dans tous les cas l’algorithme naïf ne parvient pas en 100000 itérations à trouver toutes les variables pertinentes tandis que l’algorithme intelligent y parvient pour q = 25 et q = 50. On retrouve néanmoins le soucis évoqué précédemment dans le cas de très petites valeurs de mémoire pour l’algorithme intelligent. La mémoire se remplit vite et l’algorithme reste alors bloqué sans pouvoir explorer plus de variables. En effet cette courbe illustre une expérience 31 (a) Cas p = 500, k = 20, deg (V ) = 5 (b) Hypothèse des cliques Figure 3.1 – Résultats pour la construction d’une infinité d’arbres 32 Figure 3.2 – Comparaison des deux algorithmes où le paramètre α est fixé à 0. La pente que présentent les courbes de l’algorithme intelligent pour peu d’itérations illustre l’intérêt très net de conserver les variables identifiées pour les itérations suivantes lorsque la taille de la mémoire est suffisante. Quels que soient les paramètres des algorithmes utilisés, la version intelligente est toujours supérieure à la version naïve en terme de vitesse de convergence pour des données sans propriétés particulières et q ≥ 10. On remarque également sur cette figure que l’augmentation de la taille de la mémoire a un impact net et similaire sur les deux algorithmes. 3.1.3 Impact des données Dans cette partie, nous présentons les résultats obtenus par les deux algorithmes sur des données de différentes formes. Nous utilisons ici uniquement la première version de l’algorithme intelligent, c’est-à-dire sans prendre en compte les paramètres α et β (on fixe α = β = 0). Nous discutons plus en détails l’impact de ces derniers dans la partie suivante. Impact de la structure des données. Les hypothèses de chainage et de cliques, assez extrêmes, ont été testées sur les deux algorithmes. On remarque sur la Figure 3.3a que le chaînage réduit drastiquement les performances de l’algorithme naïf alors qu’il augmente significativement celles de l’algorithme proposé. Ceci paraît naturel dans la mesure où, pour identifier toutes les variables, 33 (a) Hypothèse de chainage (b) Hypothèse de cliques Figure 3.3 – Impact de la structure des données l’algorithme naïf devrait les piocher toutes d’un coup. L’algorithme intelligent a évidemment un avantage dans cette configuration puisque toutes les variables qu’il conserve sont nécessaires aux conditionnements des autres. L’hypothèse de cliques a un impact moins intuitif. En effet, il pourrait paraître gênant de conserver des variables identifiées dans la mesure où, sous cette hypothèse, elles ne serviront dans aucun autre conditionnement. Théoriquement, dans le cas de variables marginalement pertinentes et pour un nombre infini d’arbres, l’algorithme naïf est d’ailleurs supérieur à l’algorithme intelligent (preuve en Annexe A). En réalité, cet effet n’est pas forcément handicapant. En effet, si un arbre est construit sur toutes les variables d’une clique, seule celle choisie le plus bas dans l’arbre sera identifiée comme pertinente. Conserver les variables de la clique en cours d’identification dans la mémoire est donc un avantage. Ceci est visible sur la Figure 3.3b. L’algorithme proposé reste supérieur à l’algorithme naïf même si l’écart entre les deux est réduit. On remarque que la comparaison des performances s’inverse par rapport au cas d’un nombre infini d’arbres présenté sur la Figure 3.1b et c’est uniquement sous cette hypothèse de nombre infini d’arbres que l’hypothèse de cliques est la plus défavorable à l’algorithme intelligent. Impact des conditionnements minimaux des variables. Le degré d’interaction maximal impacte très fortement les performances. Comme il est possible de le voir sur la Figure 3.4, des conditionnements petits permettent à l’algorithme naïf de devenir intéressant en terme de performance. Il est toujours dépassé par l’algorithme intelligent mais gagne beaucoup en performance. Dans le cas deg (V ) = 10, les deux algorithmes perdent en performance. Pour q = 25, la différence entre les performances pour deg (V ) = 2 et deg (V ) = 10 est d’un facteur 2 pour l’algorithme intelligent tandis qu’elle est d’un facteur 4 pour l’algorithme naïf. En pratique, il est néanmoins plus probable de travailler avec des données dont les degrés d’interaction sont faibles. Impact de la taille des données Afin de tester la mise à l’échelle de nos résultats dans le cas de données de plus grande taille, nous avons multiplié par 10 les paramètres p, q, k et deg (V ). Les résultats obtenus sont très peu satisfaisants. En effet, au bout de 100000 itérations, on obtient au maximum 30 34 (a) Cas deg (V ) = 2 (b) Cas deg (V ) = 10 Figure 3.4 – Impact de la taille maximale des conditionnements variables pertinentes sur les 200 l’étant réellement comme l’illustre la Figure 3.5. Ceci peut en réalité s’expliquer théoriquement dans le cas d’un nombre d’arbres infini. Considérons la probabilité de trouver une variable pertinente particulière si l’on peut tester tous les conditionnements. D’un point de vue combinatoire, cela revient à réussir à tirer uniformément la variable à identifier et son conditionnement lors du même tirage (pour le cas naïf) de remplissage de la mémoire. En notant c la taille du conditionnement de la variable Xi en question, on a donc : p−c−1 P (tirer Xi et son conditionnement) = q−c−1 p q La Table 3.3 indique les valeurs numériques de cette probabilité pour certaines configurations. Le point notable est ici que pour des tailles de conditionnements identiques, les probabilités pour le cas de base et pour le cas multiplié par 10 sont du même ordre de grandeur. Les performances des algorithmes ne seront donc théoriquement pas affectées par le passage à une échelle plus grande si les conditionnements restent de taille raisonnable. Le phénomène observé sur la Figure 3.5 s’explique en comparant les probabilités de la configuration de base pour des petits conditionnements à celles de la configuration multipliée pour les conditionnements eux aussi multipliés par 10. Ici, l’écart de probabilité augmente très rapidement et il est donc normal que les performances des algorithmes soient fortement impactées. Impact de la redondance dans les données Le premier test effectué pour la redondance des données consiste à placer deux couples de variables au sein desquels les deux variables donnent strictement la même information et d’analyser l’impact sur la capacité des algorithmes à retrouver toutes les variables notamment sur l’algorithme intelligent. En effet, une fois qu’une des variables du couple est en mémoire si elle est choisie haut dans l’arbre, la deuxième variable ne sera jamais détectée comme pertinente. Les Figures 3.6a et 3.6b permettent de comparer les cas avec et sans redondance. L’effet est assez faible mais on remarque néanmoins que pour une taille de mémoire inférieure à 25, 35 Figure 3.5 – Comparaison des deux algorithmes pour des données dont tous les paramètres sont multipliés par dix Table 3.3 – Probabilité de tirer une variable pertinente et son conditionnement selon les paramètres des données deg(V ) + 1 base multiplié deg(V ) + 1 base multiplié 1 2, 40.10−3 2, 49.10−3 10 4, 07.10−16 3, 95.10−15 2 1, 11.10−4 1, 12.10−4 20 2, 07.10−33 2, 10.10−28 3 4, 92.10−6 6, 11.10−6 30 4 2, 08.10−7 3, 01.10−7 40 5 8, 41.10−9 1, 48.10−8 50 7, 34.10−42 1, 66.10−55 2, 38.10−69 La configuration dite "de base" correspond à p = 50, q = 25, k = 20. La configuration "multiplié" correspond à p = 500, q = 250, k = 200. 36 (a) Cas sans redondance (b) Cas avec deux couples de variables identiques Figure 3.6 – Impact de la redondance des variables (b) Cas avec deux cliques de variables identiques (a) Cas sans redondance Figure 3.7 – Impact de la redondance des variables dans le cas des cliques l’algorithme intelligent identifie moins de variables quand il y a redondance. Ce problème peut en fait être simplement résolu en réglant les paramètres α et β. Dans le cas des cliques redondantes, comme l’illustre la Figure 3.7, l’impact est assez peu visible. Les performances de l’algorithme naïf se rapprochent légèrement de celles de l’intelligent mais l’impact n’est pas excessif. Nous pouvions nous attendre à un résultat plus négatif pour l’algorithme intelligent dans la mesure où, une fois l’une des cliques en mémoire, elle complique l’identification de la clique redondante. La randomisation au sein des arbres permet néanmoins de palier sans modification supplémentaire ce problème. 3.1.4 Impact des paramètres Impact de K. L’impact de K présenté sur la Figure 3.8 est assez léger. On remarque tout de même qu’il est plus intéressant d’utiliser une valeur de K différente de 1q (qui revient à choisir de façon totalement aléatoire la variable sur laquelle effectuer la division à chaque nœud). En effet, on remarque que dans 37 (a) Algorithme aléatoire (b) Algorithme intelligent Figure 3.8 – Impact du paramètre K sur les deux algorithmes les deux cas, construire des arbres totalement aléatoires ralentit légèrement la convergence de la méthode. L’impact de ce paramètre dans le cas de l’hypothèse de chaînage est plus marqué (Figure 3.9). Ceci s’explique simplement par le fait qu’il existe un ordre dans les variables qu’il n’est possible de retrouver efficacement qu’en choisissant de manière ordonnée les variables sur lesquelles diviser les nœuds. Figure 3.9 – Impact de K sous l’hypothèse de chaînage Intérêt de l’élimination des variables. Comme l’illustre la Figure 3.10a, l’élimination de variables dès le début de l’algorithme peut être contre-productive. En effet, sur cette courbe, le cas où aucune variable n’est éliminée au fur et à mesure est efficace par rapport aux autres. Ceci est dû à de nombreuses itérations au début de l’exécution pendant lesquelles l’algorithme se comporte quasiment comme sa version naïve en n’utilisant que très peu de variables identifiées. Ce problème est résolu par le paramètre β comme le montre la Figure 3.10b. En effet, en ne commençant à éliminer des variables que quand la mémoire est 38 (a) Limites de l’effet de l’élimination (b) Intérêt d’éliminer certaines variables Figure 3.10 – Impact du paramètre α Figure 3.11 – Impact de β pour α = 0.9 déjà presque remplie, les performances augmentent significativement et ne pas éliminer de variables devient moins intéressant. Les paramètres α et β sont en fait très liés. Par exemple, la Figure 3.11 montre qu’en éliminant à chaque itération un nombre très important de variables (et donc en se rapprochant a priori de l’algorithme naïf), on peut améliorer très significativement les performances en ne commençant à éliminer que très tard. Il s’agit donc de trouver un juste milieu au réglage de ces paramètres. Dans la plupart des cas testés, la configuration optimale se situait à α = 0.75 et β = 0.5. On accumule donc un certain nombre de variables avant de commencer à en chercher d’autres en ne les utilisant pas toutes. Dans le cas de l’hypothèse de chaînage, l’effet de α est encore plus marqué (comme l’illustre la Figure 3.12). En effet, utiliser α 6= 0 réduit très fortement les performances et les rapproche très vite de celles de l’algorithme naïf. Fixer ces paramètres peut donc nécessiter un a priori sur les données si l’on veut obtenir des performances optimales. 39 Figure 3.12 – Impact de α sous l’hypothèse de chaînage 3.1.5 Conclusion La plupart des cas testés confirment qu’en réglant les paramètres de l’algorithme intelligent, il dépasse assez largement les performances de l’algorithme naïf. Certains de ces réglages peuvent néanmoins nécessiter un a priori sur la structure des données et les liens entre les variables. 3.2 3.2.1 Données simulées : Madelon Méthodologie Des ensembles de données du type de l’ensemble "madelon" peuvent être générés aisément grâce à la librairie Python scikit-learn en réglant de nombreux paramètres tels que le nombres d’exemples, de variables, de variables pertinentes, redondantes ou répétées notamment. L’intérêt principal d’utiliser cet ensemble de données réside dans le fait que nous connaissons exactement l’ensemble des variables pertinentes, ce qui n’est pas le cas pour des données réelles. Nous pouvons sur ces ensembles fixer : — le nombre d’exemples (n_ex) — le nombre de variables en tout (n_var) — le nombre de variables informatives, qui constitue la dimension du sousespace dans lequel se situe l’hypercube où les données sont placées (n_pert) — le nombre de variables redondantes i.e de combinaisons linéaires des variables informatives (n_red) — le nombre de variables identiques à des variables informatives ou redondantes (n_rep) — le nombre de classes, que nous fixerons à 2 40 Table 3.4 – Paramètres des données Madelon utilisées Nom NIPS Base Redondance Répétition Mix n_ex 2000 2000 2000 2000 2000 n_var 500 500 500 500 500 n_pert 5 20 10 10 10 n_red 5 0 10 0 5 n_rep 10 0 0 10 5 n_clusters 16 10 10 10 10 — le nombre de clusters par classe qui sera fixé à 10 à part pour le problème initialement proposé à NIPS (n_clusters) — f lipy le taux d’exemples dont la classe est changée aléatoirement et qui est fixé à 0.01 — un facteur multipliant la dimension de l’hypercube que nous fixerons à 2 comme dans l’ensemble de données initialement proposé — le fait de répartir les clusters aux sommets d’un hypercube ou d’un polytope quelconque. Nous utiliserons toujours le cas de l’hypercube. Nous évaluerons donc les performances de nos algorithmes en comparant l’ensemble de variables renvoyées à l’ensemble des variables pertinentes. Il est également possible pour évaluer le résultat des algorithmes d’apprendre une forêt d’arbres sur les variables identifiées comme pertinentes et de voir les performances obtenues en apprentissage et en test ainsi que de les comparer aux performances obtenues quand les modèles sont appris sur toutes les variables. On peut alors par exemple remarquer si des variables de bruit ont bien été ignorées ou si toute l’information a été extraite. Il reste néanmoins impossible par cette méthode de savoir si toutes les variables pertinentes ont été identifiées. En effet, obtenir une bonne performance en test signifie que des variables pertinentes ont été extraites, voire que toute l’information est contenue dans les variables sélectionnées mais ne permet en aucun cas de savoir si les variables non sélectionnées sont non pertinentes. Or notre problème consiste à identifier l’intégralité des variables pertinentes. Nous avons testé notre algorithme sur les données présentant les mêmes caractéristiques que les originales mais aussi en les paramétrant de manière à pouvoir tester l’impact de différentes structures de données. Les paramètres utilisés sont récapitulés sur la Table 3.4. 3.2.2 Comparaison des algorithmes et résultats généraux Les courbes présentées dans cette partie portent sur l’ensemble de données "NIPS". Afin de juger de la qualité des résultats obtenus, il convient de vérifier si l’algorithme parvient à identifier les variables pertinentes mais aussi s’il ne renvoie pas trop de faux positifs. Les courbes seront donc toujours présentées par deux : (1) une courbe représentant le nombre de variables pertinentes (et effectivement pertinentes) identifiées par l’algorithme en fonction du nombre d’itérations et (2) la précision, i.e le nombre de vrais positifs sur le nombre total de variables retournées par l’algorithme en fonction du nombre d’itérations. Les expériences sont menées jusqu’à 10000 arbres construits et moyennées sur cinq 41 Nombre d’arbres Seuil 10−5 10−7 10−9 Nombre d’arbres Seuil 10−5 10−7 10−9 1 Pos. Préc. 0.91 90.05 0.13 100 0.7 100 1000 Pos. Préc. 19.34 22.66 14.10 94.27 11.8 100 10 Pos. Préc. 6.46 88.6 3.21 100 5.5 100 10000 Pos. Préc. 19.98 5.45 17.79 69.46 12.2 98.75 100 Pos. Préc. 15.47 66.91 10.53 99.42 10.8 100 Table 3.5 – Nombre moyen de variables pertinentes identifiées (pos.) et précision moyenne (préc.) par rapport au nombre d’arbres construits pour l’algorithmme naïf avec q = 50 et K = 1. ensembles de données (générés à nouveau à chaque fois à partir des paramètres de la Table 3.4) à chaque fois pour l’algorithme intelligent. Seuil du test statistique Le réglage du seuil du test statistique effectué en chaque nœud des arbres construits influe fortement sur les résultats obtenus. Il convient donc de le régler avant de tester plus avant les algorithmes. La Table 3.5 montre le nombre moyen de variables pertinentes identifiées ainsi que la précision moyenne obtenue pour l’algorithme naïf dans un cas particulier, pour trois valeurs du seuil du test statistique. Comme on peut le remarquer, après la construction de 10000 arbres dans le cas où le seuil vaut 10−5 , la précision n’est plus que de l’ordre de 5%. Ceci signifie que l’algorithme identifie quasiment toutes les variables comme pertinentes ce qui n’est pas du tout le but recherché. Nous avons fixé le paramètre à 10−7 qui présente de meilleurs résultats en précision et garde un nombre de variables identifiées au bout de 10000 itérations correct. En effet, le cas 10−9 garde une précision excellente mais demanderait un nombre d’itérations très grand pour retrouver toutes les variables pertinentes (la moyenne de 12.2 variables identifiées est atteinte depuis 2500 itérations, l’évolution à partir de ce moment est donc très lente). Comparaison des algorithmes Les Figures 3.13a et 3.13b montrent les résultats obtenus sur l’ensemble "NIPS" pour une configuration particulière. Les performances des deux algorithmes sont relativement proches mais la version intelligente reste supérieure tant en nombre de variables pertinentes identifiées qu’en précision. Néanmoins, ceci n’est pas le cas pour toutes les configurations. Par exemple, les Figures 3.14a et 3.14b présentent un cas très défavorable à l’algorithme intelligent. On remarque néanmoins que la précision de ce dernier est toujours bonne même si le nombre de variables retrouvées est très faible. De plus, ce paramétrage est également mauvais pour l’algorithme naïf qui est beaucoup moins performant que dans le cas présenté précédemment. A valeur de K fixée, il existe néanmoins toujours un paramétrage de α et β qui permet de dépasser ou au moins d’égaler l’algorithme naïf en terme de 42 Table 3.6 – Score de classification pour "Base" et "Nips" Nombre d’arbres Seuil Naïf (meilleur apprentissage) Naïf (meilleur test) Intelligent (meilleur apprentissage) Intelligent (meilleur test) Toutes les variables Uniquement les pertinentes BASE App. Test 99.01 65.53 99.01 65.53 99.14 63.63 98.82 66.85 99.02 61.61 99.48 83.85 NIPS App. Test 99.08 80.30 98.75 80.61 99.03 79.03 98.93 81.78 99.63 91.27 99.60 94.48 Table 3.7 – Paramètres utilisés pour obtenir les meilleurs résultats de classification de "Base" Naïf (apprentissage) Naïf (test) Intelligent (apprentissage) Intelligent (test) q 25 25 50 25 BASE K α 0.25 / 0.25 / 0.25 0.0 0.5 0.75 β / / / 0.25 q 50 15 25 25 NIPS K α 0.5 / 0.5 / 0.25 0.75 0.25 0.0 β / / 0.25 / nombre de variables pertinentes identifiées. La précision de l’algorithme intelligent reste elle, dans tous les cas, supérieure à celle de l’algorithme naïf. Le meilleur résultat obtenu l’a été pour K = 0.75, α = 0.8, β = 0. Résultats de classification La Table 3.6 indique les meilleurs résultats moyens obtenus en classification et en test à partir des variables identifiées par les deux algorithmes testés en utilisant les paramètres indiqués dans la Table 3.7. Ces résultats ont été obtenus en construisant des forêts aléatoires de dix arbres. Ils sont à comparer à ceux obtenus en utilisant toutes les variables et ceux obtenus en utilisant uniquement les variables pertinentes. Sur l’ensemble de type "Base", on remarque que n’utiliser que les variables pertinentes permet un gain de 20% en test, ce qui prouve que les variables aléatoires ajoutées constituent bien un bruit important qu’il est nécessaire d’éliminer. L’algorithme naïf et l’algorithme intelligent présentent des résultats très proches sous ce critère. Ils permettent tous les deux d’améliorer le score de test de l’ordre de quelques pourcents par rapport à l’utilisation de toutes les variables. On peut donc en conclure que toutes les variables pertinentes ne sont pas identifiées ou que trop de variables "bruit" sont ajoutées dans les ensembles. C’est en réalité une combinaison des deux effets avec, pour le cas de l’algorithme intelligent avec le meilleur score de test, une moyenne de 16.2 variables pertinentes identifiées et une précision de 52.9%. Les résultats observés sur "Nips" sont plus surprenants. En effet, la perte de performance en test par rapport à l’utilisation de toutes les variables est contre-intuitive surtout compte tenu des bons résultats en terme de nombre de variables identifiées comme de précision obtenus sur cet ensemble de données. 43 (a) Nombre de variables pertinentes identifiées (b) Précision Figure 3.13 – Résultats sur "NIPS" pour K = 0.25, α = 0.75, β = 0 44 (a) Nombre de variables pertinentes identifiées (b) Précision Figure 3.14 – Résultats sur "NIPS" pour K = 1q , α = 0., β = 0 45 3.2.3 Impact des données L’impact du nombre d’échantillons disponibles dans la base de données n’a pas pu être testé par manque de temps pour les expériences. Néanmoins, théoriquement, si l’algorithme dispose de moins d’exemples, les informations mutuelles estimées sont moins précises et il devient donc plus difficile pour les algorithmes de différencier les variables pertinentes des variables non pertinentes. Nous présentons donc ici l’impact de la structure des données. Impact de la redondance Les Figures 3.15a et 3.15b montrent sur un cas particulier l’impact négatif de la redondance sur l’algorithme intelligent. En effet, ses performances sont réduites en terme de nombre de variables identifiées. Ceci s’explique par le fait que les variables pertinentes conservées risquent d’être utilisées dans la partie haute des arbres et de compliquer l’identification des variables redondantes en dessous en diminuant leur information mutuelle conditionnelle avec la sortie. Néanmoins, cette structure de données augmente significativement la précision des deux types d’algorithmes (Figure 3.16a et 3.16b). La redondance permet de choisir, au moment de diviser un nœud, des variables donnant une information mutuelle plus faible que s’il n’y avait pas de redondance mais néanmoins supérieure à celle une variable non pertinente. La différenciation entre les deux types de variables est donc facilitée. De plus, les variables redondantes sont ici des combinaisons linéaires des variables pertinentes de base. La nature du problème laisse supposer que certaines variables redondantes sont alors plus pertinentes que les variables de base, ce qui creuse encore l’écart entre variables pertinentes et non pertinentes. Cette structure particulière favorise nettement l’algorithme naïf dans toutes les configurations testées en terme de nombre de variables identifiées (mais pas en précision) et il n’est pas toujours possible malgré le réglage des différents paramètres de l’algorithme intelligent de rattraper les performances de l’algorithme naïf. La meilleure performance réalisée pour l’algorithme intelligent est de 18.2 variables identifiées dans la configuration q = 20, K = 0.5, α = 0.8, β = 0.0 avec une précision de 90.29%. L’algorithme naïf quant à lui obtient au mieux 16.8 variables identifiées en moyenne pour q = 50, K = 0.5 et une précision de 74.47%. Il est donc possible d’obtenir de meilleures performances avec l’algorithme intelligent qu’avec l’algorithme naïf mais le réglage des paramètres est ici crucial et l’algorithme naïf obtient le plus souvent de meilleurs résultats en terme de nombre de variables identifiées malgré une précision plus toujours plus faible. Impact de la répétition Comme l’illustrent les Figures 3.17a et 3.17b, les performances de l’algorithme naïf et de l’algorithme intelligent sont toutes les deux augmentées par la répétition de variable. L’algorithme naïf bénéficie tout particulièrement de cette configuration et gagne significativement en performance. De plus, comme le confirment les Figures 3.18a et 3.18b, la précision des deux algorithmes est également augmentée dans cette configuration. La répétition de variables pertinentes semble donc améliorer les deux algorithmes quel que soit le critère regardé. 46 (a) Sur "Base" (b) Sur "Redondance" Figure 3.15 – Nombre de variables identifiées pour K = 0.5, α = 0.5, β = 0.0 sur "Base et "Redondance" (b) Sur "Redondance" (a) Sur "Base" Figure 3.16 – Précision pour K = 0.5, α = 0.5, β = 0.0 sur "Base" et "Redondance" 47 (a) Sur "Base" (b) Sur "Répétition" Figure 3.17 – Nombre de variables identifiées pour K = 0.5, α = 0.75, β = 0.25 sur "Base et "Répétition" Ce résultat peut paraître surprenant. En effet, supposons que X1 et X2 sont identiques. Si on construit un arbre dans lequel la variable X1 est sélectionnée en un nœud, X2 ne pourra plus être sélectionnée dans les nœuds situés en dessous car son information mutuelle conditionnelle avec la sortie est nulle. La variable X1 masque donc la pertinence de X2 . Néanmoins, si X1 est dans un conditionnement minimal d’une variable X3 , cette dernière pourra être identifiée en utilisant indifféremment X1 ou X2 ce qui facilite l’identification. L’algorithme intelligent bénéficie moins de cet effet, car, en conservant les variables, il augmente les chances de réutiliser par exemple X1 en haut de l’arbre et donc amplifie l’effet négatif de la répétition sans modifier son effet positif. C’est pourquoi les performances des deux algorithmes sont plus proches que sur le cas précédent. Le meilleur résultat moyen pour l’algorithme intelligent est de 19.83 variables pertinentes identifiées avec une précision de 51.35% avec les paramètres q = 50, K = 0.25, α = 0.5, β = 0.25, tandis que l’algorithme naïf parvient au mieux à 19.8 variables identifiées en moyenne pour une précision de 42.38% dans la configuration q = 50, K = 0.5. Les performances maximales sont donc similaires avec un avantage pour l’algorithme intelligent en précision. Comme dans le cas de la redondance des variables, le paramétrage est crucial dans le résultat obtenu pour les deux algorithmes. Impact du mélange de redondance et répétition Le mélange de redondance et de répétition permet à l’algorithme intelligent comme à l’algorithme naïf de gagner en performances (Figures 3.19a et 3.19b) de façon très nette mais aussi en précision (Figures 3.20a et 3.20b) de façon un peu moins marquée. La redondance, qui tend à faire baisser les performances de l’algorithme intelligent ne compense pas l’effet positif de la répétition que nous avons pu observer. Ce résultat est encourageant pour la mise en pratique sur des données réelles dans la mesure où il est très probable d’avoir de la redondance entre des variables voire des copies totales. Cet effet peut néanmoins être encouragé par la nature des données qui peut permettre à une combinaison linéaire de variables pertinentes d’être plus pertinente que chacune des variables qui la compose. 48 (a) Sur "Base" (b) Sur "Répétition" Figure 3.18 – Précision pour K = 0.5, α = 0.75, β = 0.25 sur "Base" et "Répétition" (b) Sur "Mix" (a) Sur "Base" Figure 3.19 – Nombre de variables identifiées pour K = 0.5, α = 0.75, β = 0.25 sur "Base et "Répétition" Le meilleur résultat moyen obtenu pour l’algorithme naïf comme pour l’algorithme intelligent est de retrouver l’intégralité des variables pertinentes. Ceci se fait sur la configuration q = 10, K = 0.5, α = 0.75, β = 0.75 pour l’algorithme intelligent avec une précision de 83.5% et pour le paramétrage q = 50, K = 0.5 mais avec une précision de seulement 35.42% pour l’algorithme naïf. On a donc à nouveau la possibilité d’obtenir de bien meilleurs résultats avec l’algorithme intelligent qu’avec l’algorithme naïf en réglant les paramètres. 3.2.4 Impact des paramètres L’impact des différents paramètres des algorithmes sera montré (sauf mention contraire) sur l’ensemble de données "Base", afin d’en faciliter l’interprétation. 49 (a) Sur "Base" (b) Sur "Mix" Figure 3.20 – Précision pour K = 0.5, α = 0.75, β = 0.25 sur "Base" et "Mix" Impact de K Les résultats obtenus par l’algorithme naïf sur l’ensemble "NIPS" pour une mémoire de taille 50 ainsi que l’impact du paramètre K sont visibles sur les Figure 3.21a et 3.21b. La seule valeur de K se distinguant vraiment des autres est le cas dans lequel on construit les arbres de manière aléatoire. En effet, ceci donne de moins bon résultat en terme de nombre de variables pertinentes identifiées (courbe bleue sur la Figure 3.21a), néanmoins, cette configuration est aussi celle qui permet d’avoir le moins de faux positifs possibles et donc la meilleure précision (courbe bleue sur la Figure 3.21b). Le même phénomène s’observe quelle que soit la valeur de la taille de la mémoire mais est de plus en plus marqué avec l’augmentation de cette taille. Il est intuitif que l’utilisation d’arbres complètement aléatoires complique l’identification des variables pertinentes. La meilleure précision s’explique par le fait que, le choix à chaque nœud n’étant pas optimisé, il est moins probable d’avoir une variable théoriquement non pertinente avec une valeur d’importance passant le test statistique choisie en un nœud. Il convient donc pour régler le paramètre K dans le cas de l’algorithme naïf de savoir si la présence de faux positifs est plus gênante que l’absence de certaines variables pertinentes et de trouver un compromis dans le résultat. Le résultat obtenu par l’algorithme naïf est néanmoins satisfaisant puisque toutes les variables pertinentes sont identifiées en moins de 10000 itérations pour la plupart des configurations malgré une précision parfois assez faible. Sur l’ensemble de données "Base", on remarque que construire les arbres de manière complètement aléatoire ou complètement déterministe n’est pas efficace en terme de nombre de variables trouvées (Figure 3.22a). Néanmoins, comme pour l’algorithme naïf et pour les mêmes raisons, le cas complètement aléatoire a une meilleure précision que les autres cas (Figure 3.22b). L’impact de ce paramètre est beaucoup plus marqué que ce que nous avions pu observer en simulation dans la Section 3.1.4. La construction des arbres et donc le calcul effectif des approximations des importances des variables mène à ce résultat. Le cas déterministe peut s’expliquer par le fait que les mêmes arbres sont construits de nombreuses fois parmi les 10000 et ne permettent donc pas d’identifier de nouvelles variables. Dans les autres cas, la randomisation de la construction permet de placer des variables différentes aux nœuds dans lesquels 50 (a) Nombre de variables pertinentes identifiées (b) Précision Figure 3.21 – Impact du paramètre K sur l’algorithme naïf sur "NIPS" (a) Nombre de variables pertinentes identifiées (b) Précision Figure 3.22 – Impact du paramètre K sur l’algorithme intelligent sur "Base" il y a encore de nombreux exemples. La précision quant à elle, est affectée, comme expliqué précédemment, par l’optimisation du choix de la variable sur laquelle effectuer la division en chaque nœud. La variable utilisée en chaque nœud est en effet celle pour laquelle il est le plus probable de passer le test statistique. Impact de l’élimination de variables Les Figures 3.23a et 3.23b montrent l’impact du paramètre α pour une configuration particulière. On remarque que prendre α 6= 0 peut avoir un effet différent selon la valeur de α. Néanmoins, le meilleur compromis se trouve pour α = 0.5 et on remarque nettement l’intérêt de ce paramètre pour identifier plus de variables. L’impact du paramètre est néanmoins assez léger notamment dans le cas K = 1q que nous avons déjà identifié comme problématique. Les Figures en Annexe B illustrent en effet que le réglage du paramètre α ne permet pas dans certains cas d’obtenir de meilleurs résultats que l’algorithme naïf et donne des résultats très similaires quelles que soient les valeurs choisies (à part α = 0) même si la précision reste supérieure. L’impact de ce paramètre reste globalement plus léger que sur les simulations même s’il permet d’améliorer significativement les performances notamment dans le cas où la mémoire est de petite taille par rapport aux nombres de variables pertinentes. Il est donc nécessaire de le fixer à des valeurs différentes de 0 dans la mesure où, dans un cas concret, on ne connaît pas le nombre de 51 (a) Nombre de variables pertinentes identifiées (b) Précision Figure 3.23 – Impact du paramètre α sur l’algorithme intelligent sur "Base" (a) Nombre de variables pertinentes identifiées (b) Précision Figure 3.24 – Impact du paramètre β sur l’algorithme intelligent sur "Base" variables pertinentes et n’avons pas le choix de la mémoire disponible. Les Figures 3.24a et 3.24b montrent l’intérêt, comme nous l’avions vu d’un point de vue théorique dans les simulations, de commencer à éliminer certaines variables de la mémoire une fois que celle-ci est déjà en partie remplie. La précision ainsi que le nombre de variables identifiées sont ici tous les deux positivement impactés par l’usage de β = 0.5. De nouveau, il convient de régler les deux paramètres conjointement afin d’obtenir les meilleurs résultats. La configuration K = 0.5, α = 0.25 et β = 0.25 a par exemple donné les meilleurs résultats pour q = 50 (environ 18 variables identifiées) mais la précision reste aux alentours de 60%. 3.2.5 Conclusion L’écart entre l’algorithme intelligent et l’algorithme naïf est beaucoup moins frappant en pratique sur les données testées que sur les simulations réalisées précédemment. On note notamment un impact de la structure des données qui peut être défavorable à l’algorithme intelligent. Néanmoins, notre version intelligente est toujours plus précise que l’algorithme naïve même si elle est parfois équivalente voire un peu moins bonne en performances. Une trop grande randomisation dans les arbres construits a notamment un impact négatif sur l’écart entre les deux versions de l’algorithme et pénalise l’algorithme intelligent. En 52 effet, dans ces cas-là, le fait de garder en mémoire des variables pertinentes représente un moins grand avantage car elles ne seront quand même peut-être pas choisies dans un ordre pertinent lors de la construction des arbres. Le seul moyen d’être plus performant que l’algorithme naïf dans ce cas précis est donc d’augmenter la valeur de α. Il convient néanmoins de nuancer les résultats obtenus. En effet, les données Madelon étant particulières, l’identification des variables ne peut se faire qu’en utilisant des ordres particuliers le long des branches, ce qui, dans le cas d’une grande randomisation lors de la construction des arbres complexifie la tâche des algorithmes. La structure des données jouant fortement sur les meilleurs paramètres à utiliser, il peut être compliqué de régler les différents paramètres pour obtenir les meilleures performances possibles et notamment pour bénéficier de l’apport de l’algorithme intelligent. Nous pouvons également noter l’effet surprenant de la répétition de variables et de la redondance qui permet à nos algorithmes d’améliorer leurs performances et les rend ainsi intéressants à utiliser sur des données réelles. Nous pouvons de plus supposer que dans le cas de structures de données plus simples, les résultats seraient plus proches de ceux obtenus en simulation et la domination de l’algorithme intelligent plus nette. En effet, Madelon se rapproche plus du cas des cliques que du cas général majoritairement testé. 53 Discussion et perspectives Nous avons étudié un algorithme naïf de sélection de variables et montré ses limites en terme de vitesse de convergence. Dans la plupart des configurations testées, identifier toutes les variables pertinentes en construisant moins de 100000 arbres n’a pas été possible en utilisant cette méthode. Nous avons également proposé un nouvel algorithme permettant d’utiliser les variables déjà identifiées pour en trouver de nouvelles et avons montré que sa vitesse de convergence était meilleure que celle de l’algorithme naïf sous toutes les hypothèses sur les données testées. L’un des inconvénients de cet algorithme est qu’il impose de construire les arbres de manière séquentielle alors qu’il était possible pour l’algorithme naïf de construire plusieurs arbres en parallèle et ainsi de gagner du temps. L’impact de la construction de plusieurs arbres en parallèle sur les variables découvertes et sur le nombre d’itérations réalisées dans le cas de l’algorithme intelligent peut être un point intéressant à étudier. Les résultats obtenus sur les différents ensembles de données de type Madelon confirment l’intérêt de l’approche de notre algorithme intelligent par rapport à l’algorithme naïf mais aussi la nécessité de bien régler les différents paramètres. L’écart entre les deux algorithmes est le plus souvent réduit par rapport aux simulations effectuées mais cela peut être due à la nature des données et pas uniquement aux algorithmes. Les résultats obtenus dans le cas de données contenant de la redondance et des répétitions sont encourageants quant à l’utilisation de nos algorithmes sur des données réelles. Néanmoins, nos algorithmes n’ont pu être testés que sur un ensemble de données dont la structure est très particulière. En effet, celui-ci ressemble plus à l’hypothèse de cliques que nous avons présenté lors des simulations qu’au cas général. Plusieurs pistes de poursuite de ce travail peuvent s’ouvrir : — Le problème étudié peut également être légèrement modifié pour trouver par exemple les k variables les plus pertinentes et non plus toutes les variables pertinentes. L’idée immédiate serait de conserver à chaque itération les k variables les plus pertinentes trouvées et essayer à partir de celles-ci d’en trouver de nouvelles plus pertinentes. Un problème de masquage des variables moyennement pertinentes par les plus pertinentes pourraient alors apparaître et nécessiter un travail plus fin sur les variables à conserver. — Le fait d’effectuer de nombreux tests statistiques lors de la détermination de la pertinence d’une variable peut conduire à des résultats biaisés. En effet, si la même variable est testée plusieurs fois, il conviendrait de corriger statistiquement le résultat du test afin de ne pas augmenter arti54 ficiellement les chances de la variable d’être considérée comme pertinente simplement parce qu’elle est testée de nombreuses fois. Ceci conduirait à sélectionner moins de variables pertinentes mais sûrement aussi à améliorer la précision des algorithmes. — Des tests sur des données réelles sont nécessaires bien qu’il soit difficile dans ce cas d’évaluer la performance des algorithmes pour notre problème particulier consistant à identifier toutes les variables pertinentes. — L’étude théorique des structures de données possibles dans le cas de variables binaires a été entamée pendant ce stage mais n’a pas abouti à des résultats finaux. Il serait intéressant de développer des résultats sur ce sujet afin de pouvoir générer des problèmes aux structures particulières et tester les algorithmes. D’un point de vue personnel, ce stage m’a permis de confirmer mon intérêt pour la démarche de recherche et me permet de m’engager dans ma thèse avec enthousiasme. Travailler dans un domaine aussi passionnant et actuel que l’apprentissage automatique a représenté un véritable plaisir pour moi et les apports aussi bien personnels que professionnels que j’en ai tirés me seront, j’en suis certaine, très utiles par la suite. J’ai également développé, en plus des nombreuses connaissances sur l’apprentissage automatique et les arbres de décision plus particulièrement, des compétences techniques. En effet, j’ai pu découvrir le cython et travailler de manière plus soutenue avec des clusters de calcul ainsi qu’avec les librairies python pandas, numpy, scipy et scikit-learn (pour laquelle j’ai même été amenée à m’intéresser au code source). 55 Bibliographie [1] L. Breiman, J. Friedman, R. Olshen, and C. Stone. Classification and Regression Trees. Wadsworth and Brooks, Monterey, CA, 1984. [2] Leo Breiman. Bagging predictors. Mach. Learn., 24(2) :123–140, 1996. [3] Leo Breiman. Random forests. Mach. Learn., 45(1) :5–32, October 2001. [4] Thomas M. Cover and Joy A. Thomas. Elements of Information Theory. Wiley-Interscience, 2006. [5] Isabelle Guyon and André Elisseeff. An introduction to variable and feature selection. J. Mach. Learn. Res., 3 :1157–1182, March 2003. [6] Trevor Hastie, Robert Tibshirani, and Jerome Friedman. The Elements of Statistical Learning. Springer New York Inc., 2001. [7] Tin Kam Ho. The random subspace method for constructing decision forests. IEEE Trans. Pattern Anal. Mach. Intell., 20(8) :832–844, 1998. [8] Ron Kohavi and George H. John. Wrappers for feature subset selection. Artif. Intell., 97(1-2) :273–324, December 1997. [9] Gilles Louppe and Pierre Geurts. Ensembles on random patches. In ECML/PKDD (1), volume 7523 of Lecture Notes in Computer Science, pages 346–361. Springer, 2012. [10] Gilles Louppe, Louis Wehenkel, Antonio Sutera, and Pierre Geurts. Understanding variable importances in forests of randomized trees. In Advances in Neural Information Processing Systems 26, pages 431–439. 2013. [11] Louis Wehenkel. On uncertainty measures used for decision tree induction, 1996. 56 Annexe A Comparaison théorique des algorithmes pour le cas de variables marginalement pertinentes Proposition 2. Si pour toute variable Xm pertinente, Xm est marginalement pertinente alors la probabilité pour l’algorithme naïf utilisant des arbres totalement aléatoires de trouver au moins une nouvelle variable pertinente s’il en a déjà trouvé t est plus élevée que celle associée à l’algorithme intelligent avec α = 0. Preuve. On note Pnaïf la probabilité pour l’algorithme naïf utilisant des arbres totalement aléatoires de trouver au moins une nouvelle variable pertinente s’il en a déjà trouvé t et Pintelligent cette même probabilité pour l’algorithme intelligent utilisant des arbres totalement aléatoires. On a alors : p−k+t Pnaïf = 1 − et : q p q p−k q−t p−t q−t Pintelligent = 1 − 57 Donc : Pnaïf ≥ Pintelligent ⇐⇒ 1 − (p−k+t ) (p−k q q−t ) ≥ 1 − p−t p (q ) (q−t) ⇐⇒ (p−k+t ) (p−k q q−t ) ≤ p−t (pq) (q−t) ⇐⇒ (p−k+t)! p! ≤ (p−k)! (p−t)! ⇐⇒ (p−k+t)! (p−k)! ≤ p! (p−t)! ⇐⇒ Qt i=1 p−k+i≤ Qt j=1 p−t+j Or t ≤ k, donc ∀1 ≤ i ≤ t, p − t + i ≥ p − k + i. Donc l’algorithme naïf a une probabilité plus forte de trouver de nouvelles variables que l’algorithme intelligent. 58 Annexe B Impact de α dans le cas K = q1 sur l’ensemble Madelon "Base" Figure B.1 – Nombre de variables identifiées : Impact du paramètre α sur l’algorithme intelligent sur "Base" pour K = 1q 59 Figure B.2 – Précision : Impact du paramètre α sur l’algorithme intelligent sur "Base" pour K = 1q 60