Arbres de décision

6.4 Arbres de décision

Objectifs d'apprentissage

À la fin de cette section, vous devriez être en mesure de :

  • 6.4.1 Mesurer l'information à l'aide de l'entropie.
  • 6.4.2 Comprendre comment l'entropie peut être utilisée pour classifier des données.
  • 6.4.3 Construire un classifieur par arbre de décision descendant.
  • 6.4.4 Utiliser des arbres de décision pour classifier des données et faire des prédictions.

Comment prenez-vous des décisions ? Souvent, nous choisissons un produit plutôt qu'un autre en nous fondant sur une combinaison de caractéristiques. Par exemple, imaginez que vous envisagiez d'acheter un nouveau smartphone. Vous pourriez comparer différents modèles selon des critères tels que la qualité de l'appareil photo, l'autonomie de la batterie, la vitesse du processeur et le prix. S'il existe de nombreuses options, vous pourriez organiser votre processus décisionnel sous la forme d'un organigramme ou d'un arbre.

Prenons un exemple simple : le jeu des 20 questions. Une personne pense à une personne, un lieu ou une chose, et les autres posent tour à tour des questions pour tenter de restreindre l'espace des réponses possibles jusqu'à disposer de suffisamment d'informations pour identifier l'objet. Supposons qu'il n'y ait que cinq objets parmi lesquels choisir (une version très simple du jeu des 20 questions !) : Arbre, Chien, Humain, Roche et Diamant. Le diagramme de la Figure 6.18, que l'on peut qualifier d'arbre de décision, présente les questions et les réponses permettant d'identifier chacun de ces éléments.

Un arbre de décision. La boîte supérieure indique « est-ce vivant ? » et se divise en « oui » ou « non ». La boîte « oui » se divise vers « Est-ce un animal ? », avec « non » menant à « arbre » et « oui » menant à « est-ce que cela marche sur deux pattes ? ». De là, « oui » mène à « humain » et « non » mène à « chien ». La branche initiale « non » mène à « cela vaut-il beaucoup d'argent ? », avec « oui » menant à « diamant » et « non » menant à « roche ».
Figure 6.18 Un arbre de décision simple

En apprentissage automatique, un arbre de décision (decision tree) est un algorithme utilisé aussi bien pour les tâches de classification que de régression, offrant une approche visuelle et intuitive pour résoudre des problèmes complexes grâce à des structures arborescentes qui gardent trace des décisions fondées sur les caractéristiques du jeu de données. Les arbres de décision allient simplicité et flexibilité dans l'analyse de données. Ce sont des structures simples à comprendre et à créer, inspirées par la façon dont notre esprit fait des choix. Les arbres de décision décomposent les décisions en une suite de choix simples, un peu comme si l'on suivait un chemin semé de cailloux à travers une forêt dense. Leur flexibilité réside principalement dans leur nature non linéaire. Au lieu d'essayer d'ajuster les données à un modèle linéaire ou à une autre structure rigide, l'arbre de décision classifie les données à l'aide d'une série de choix qui dépendent d'autres choix, qui peuvent à leur tour dépendre d'autres choix, etc.

Dans cette section, nous présenterons la théorie de l'information et l'entropie — une mesure de l'information utile pour construire et exploiter des arbres de décision, illustrant leur puissance remarquable tout en attirant l'attention sur leurs pièges potentiels.

Information et entropie

La théorie de l'information (information theory) fournit un cadre pour mesurer et gérer le caractère unique des données, ou le degré de surprise ou d'incertitude associé à un événement ou un message. Par exemple, si je souhaite envoyer un message composé uniquement de la lettre « A » répétée 1 000 fois, je n'ai pas besoin d'envoyer 1 000 fois « A ». En réalité, la chaîne « 1 000A » remplit cette fonction en seulement 6 caractères (en supposant que le destinataire du message l'interprète correctement). Un concept connexe, l'entropie, est une mesure de la quantité d'information contenue dans un message, une structure ou un système, comme nous l'explorerons dans la section suivante.

Information

Considérons un événement ayant une certaine probabilité pp. Plus pp est élevée, plus l'événement est probable, et par conséquent, peu d'information (ou d'incertitude) est contenue dans la survenue de cet événement. Par exemple, l'événement « ma voiture démarre lorsque j'y monte le matin » contient une quantité d'information assez faible, car ma voiture est fiable et je m'attends à ce qu'elle démarre. Si, en revanche, elle ne démarre pas un matin, cet événement de faible probabilité serait surprenant et contiendrait beaucoup plus d'information.

L'information est généralement mesurée en bits, où un bit représente la quantité d'information nécessaire pour distinguer deux événements ou messages équiprobables. Par exemple, lorsque vous lancez une pièce équilibrée, vous gagnez un bit d'information parce que vous passez d'un état d'incertitude quant à l'issue (pile ou face) à la connaissance de l'issue (pile, par exemple). Pour mesurer le nombre de bits d'un nombre entier, on utilise le logarithme en base 2 (log2xlog2x) ; il n'est donc pas surprenant d'apprendre que le logarithme en base 2 joue un rôle majeur dans la mesure de l'information.

L'information d'un événement de probabilité pp est −log2p−log2p. Rappelons que les probabilités pp sont toujours comprises entre 0 et 1, et si 0<p<10<p<1, alors par les propriétés des logarithmes, nous avons log2p<0log2p<0. Cela explique le signe négatif qui apparaît dans la formule, puisqu'il est logique de mesurer l'information par un nombre positif.

Remarquons que l'information contenue dans un événement certain (p=1)(p=1) est −log21=0−log21=0, tandis que l'information obtenue en apprenant qu'une pièce lancée est tombée sur pile (p=1/2)(p=1/2) est −log2(12)=−(−1)=1−log2(12)=−(−1)=1, soit un bit d'information.

Supposons que la probabilité que ma voiture démarre un jour donné soit p=255/256p=255/256, et donc que la probabilité qu'elle ne démarre pas soit 1−p=1/2561−p=1/256. L'information liée à l'événement « elle démarre » est −log2(255256)=0.0056−log2(255256)=0.0056, tandis que l'information liée à l'événement « elle ne démarre pas » est −log2(1256)=8−log2(1256)=8. En somme, il y a 8 bits d'information dans le fait de savoir que ma voiture ne démarre pas, car cela ne se produirait qu'environ une fois tous les 28=25628=256 jours.

Entropie

L'entropie (entropy) est une mesure qui quantifie la quantité moyenne d'information, ou d'incertitude, dans une variable aléatoire ou une distribution de probabilité. Elle est étroitement liée à l'information. On peut concevoir l'entropie comme une mesure du désordre, du caractère aléatoire ou de l'imprévisibilité au sein d'un système.

Pour une variable aléatoire discrète XX, prenant nn valeurs xixi avec les probabilités associées pipi, l'entropie de XX est :

H(X)=−∑i=1npilog2piH(X)=−∑i=1npilog2pi

Exemple 6.7

Problème

Calculez l'entropie du système décrit dans l'exemple précédent concernant la probabilité qu'une voiture démarre un jour donné.

Solution

Rappelons que les probabilités sont : 255256255256 pour « la voiture démarre » et 12561256 pour « la voiture ne démarre pas ».

H ( X ) = − [ 255 256 log 2 ( 255 256 ) + 1 256 log 2 ( 1 256 ) ] = − ( − 0.00562 − 0.03125 ) = 0.03687 H ( X ) = − [ 255 256 log 2 ( 255 256 ) + 1 256 log 2 ( 1 256 ) ] = − ( − 0.00562 − 0.03125 ) = 0.03687

La faible valeur de l'entropie, 0,03687, indique que l'issue de l'événement est hautement prévisible. Cela est cohérent puisque la probabilité que la voiture démarre est de 255256=0.996255256=0.996, soit 99,6 %, ce qui implique que nous pourrions prédire que la voiture démarre et avoir raison 99,6 % du temps.

La notion d'entropie est fondamentale dans la création des arbres de décision, comme nous le verrons dans la section suivante.

Construire un arbre de décision

Supposons que vous souhaitiez classifier des données en un certain nombre de catégories en fonction des valeurs de leurs caractéristiques (variables d'entrée). Nous supposerons que vous disposez d'une grande quantité de données étiquetées pour l'entraînement. À titre d'illustration, disons que vos données sont constituées d'un ensemble SS de points dans le plan étiquetés Rouge et Bleu. Le format de chaque point est (X, Y, Étiquette). Voici votre ensemble d'entraînement.

(18.4, 3.3, Rouge) (10.1, 6.3, Bleu) (9.1, 14.7, Bleu) (16.3, 5, Rouge)

(12.8, 1.9, Bleu) (6.9, 2.8, Bleu) (3.2, 11, Bleu) (17.7, 1.3, Rouge)

(8.6, 18.3, Bleu) (16.9, 5, Rouge) (1.9, 13, Rouge) (12.6, 6.7, Bleu)

(7.9, 10.6, Rouge) (14.6, 14.5, Bleu) (9.4, 12.8, Bleu) (7.6, 10.2, Rouge)

(19.6, 16.4, Bleu) (19.5, 4, Rouge) (5.2, 12.2, Rouge)

Un nuage de points coloré du jeu de données S est présenté à la Figure 6.19.

Un nuage de points comportant 19 points de données — 9 points sont rouges et 10 sont bleus. Les axes X et Y vont tous deux de 0 à 20
Figure 6.19 Nuage de points étiqueté du jeu de données SS. Remarquez la répartition du rouge et du bleu, qu'il serait impossible de prédire à l'aide d'une régression linéaire ou logistique classique.

Remarquez sur la Figure 6.19 que les points rouges se répartissent grosso modo en deux groupes entourés de points bleus. Afin de capturer cette structure, vous aurez besoin d'un outil plus flexible que la régression linéaire ou logistique. Nous allons mettre en place un arbre de décision !

Comme nous l'avons vu précédemment, un arbre de décision est un algorithme de classification qui construit une structure hiérarchique où chaque nœud interne représente une décision fondée sur une caractéristique des données et chaque nœud feuille représente une décision finale, une étiquette ou une prédiction. Le nombre potentiel d'arbres de décision pour un jeu de données donné est considérable ; une partie du processus consiste donc à concevoir l'arbre de manière à ce que chaque choix apporte le gain d'information le plus élevé.

L'entropie est souvent utilisée comme mesure pour déterminer la meilleure caractéristique permettant de diviser les données à chaque nœud. La caractéristique qui maximise le gain d'information (c'est-à-dire qui minimise l'entropie) est choisie comme critère de division. Chaque nœud représente un choix qui sépare les données en sous-ensembles jusqu'à ce que l'entropie soit minimisée (ou inférieure à un seuil prédéfini) dans chaque sous-ensemble. Tout sous-ensemble composé de données ne comportant qu'une seule étiquette ou catégorie est dit pur, et aucune division supplémentaire n'est nécessaire. Un tel sous-ensemble devient un nœud feuille. Cependant, les nœuds feuilles ne doivent pas nécessairement tous être purs. Parfois, un nœud feuille contient simplement une majorité d'une étiquette donnée. Cela peut être fait pour éviter le surapprentissage du modèle, comme nous le verrons dans Utiliser un arbre de décision pour prédire.

Notez que le gain d'information n'est pas la seule mesure pouvant être utilisée pour choisir des divisions optimales. Il existe d'autres critères, tels que l'indice de Gini (Gini index), qui est employé dans l'algorithme CART (Classification and Regression Tree). Bien que nous n'aborderons pas ces alternatives, il est important de savoir qu'elles existent.

Dès lors, comment construisons-nous les nœuds de l'arbre ? Commençons par le nœud racine comprenant l'ensemble du jeu de données. Dans notre exemple, il y a 10 points rouges et 9 points bleus. Considérons cela comme un ensemble présentant une incertitude quant à l'inclusion de points Rouges (r)(r) ou Bleus (b)(b). Les probabilités de chaque cas sont P(r)=919=0.47P(r)=919=0.47 et P(b)=1019=0.53P(b)=1019=0.53. L'entropie totale du nœud racine est donc :

H(root)=−[0.47log2(0.47)+0.53log2(0.53)]=0.9974H(root)=−[0.47log2(0.47)+0.53log2(0.53)]=0.9974

Cette valeur est très proche de l'entropie d'un tirage à pile ou face. Nous devons séparer les points selon une caractéristique du jeu de données. Nous utiliserons une inégalité telle que X≤aX≤a ou Y≤aY≤a, où aa est une constante judicieusement choisie. Ce choix repose sur la maximisation du gain d'information (information gain), qui sera défini plus loin dans ce chapitre.

Le type d'arbre de décision que nous construisons est également appelé un arbre de régression (regression tree), car les caractéristiques sont numériques et nous allons utiliser des comparaisons de nombres pour prendre des décisions. Commençons par un choix arbitraire, par exemple X≤7.75X≤7.75. (Ce point se situe à mi-chemin entre deux valeurs adjacentes de XX, 7,6 et 7,9. Cela fournit une zone tampon entre les points, ce qui produit souvent de meilleures prédictions sur des données bruitées.) L'inégalité divise les données en deux sous-ensembles : Gauche =L==L= {3 Rouges, 2 Bleus} et Droite =R==R= {6 Rouges, 8 Bleus}. Notons que LL contient 5 points, son poids par rapport à son nœud parent est donc wL=519wL=519. De même, le poids de RR est wL=1419wL=1419. Le gain d'information, ou IG, d'une division est défini par :

IG=H(parent)−wLH(L)−wRH(R)IG=H(parent)−wLH(L)−wRH(R)

Calculons d'abord les mesures d'entropie de LL et RR.

H(L)=−[35log2(35)+25log2(25)]=0.9710H(L)=−[35log2(35)+25log2(25)]=0.9710
H(R)=−[614log2(614)+814log2(814)]=0.9852H(R)=−[614log2(614)+814log2(814)]=0.9852

Ainsi, le gain d'information de cette division est IG=0.9974−519(0.9710)−1419(0.9852)=0.016IG=0.9974−519(0.9710)−1419(0.9852)=0.016. Le gain d'information est positif, ce qui est une bonne chose. Il est possible d'obtenir un gain d'information négatif si la division est choisie de telle sorte qu'elle augmente l'entropie totale. Mais dans quelle mesure cette division est-elle bonne ? Intuitivement, nous aurions pu faire mieux en effectuant une division qui regroupe une plus grande proportion de rouge ou de bleu dans l'un des deux sous-ensembles. Cependant, pour trouver la division absolument optimale, il faudrait essayer toutes les possibilités et retenir celle qui produit le plus grand IG. Ce n'est pas difficile à réaliser pour un ordinateur, car il n'y a qu'un nombre fini de points, et donc un nombre fini de manières de les séparer en sous-ensembles. À titre de comparaison, effectuons une autre tentative en utilisant l'autre caractéristique (Y)(Y).

Effectuons une division sur Y≤13.75Y≤13.75 (qui est à mi-chemin entre deux valeurs adjacentes de Y, 13 et 14,5). À présent, L = {9 Rouges, 6 Bleus}, et R = {0 Rouge, 4 Bleus}. L'entropie de L est −[915log2(915)+615log2(615)]=0.9710−[915log2(915)+615log2(615)]=0.9710. Notons que R est un nœud pur, dont l'entropie est de 0. Une entropie égale à 0 implique que le résultat est certain, c'est-à-dire qu'il n'y a plus aucune incertitude.

IG=0.9974−1519(0.9710)−419(0)=0.231IG=0.9974−1519(0.9710)−419(0)=0.231

Étant donné que la valeur de l'IG est plus élevée pour cette division que pour la précédente, il est préférable de diviser sur Y≤13.75Y≤13.75. Il s'avère qu'il s'agit bien de la division présentant le gain d'information le plus élevé ; nous l'utiliserons donc pour commencer à construire notre arbre de décision. Chaque nouveau nœud a le potentiel de devenir un nouveau nœud parent, ou, s'il s'agit d'un nœud pur, nous ne créons pas de branche supplémentaire à partir de celui-ci.

La Figure 6.20 présente une version sous forme d'organigramme de l'arbre de décision complet, qui classifie intégralement tous les points de données de sorte que tous les nœuds feuilles soient purs. Vous pouvez également observer la façon dont chaque inégalité partitionne le plan à la Figure 6.21.

Un organigramme d'un arbre de décision complet. La case supérieure indique « y est inférieur ou égal à 13,75 » et se ramifie vers la gauche vers « x est inférieur ou égal à 14,55 » ou « bleu ». La case de gauche se ramifie vers la gauche vers « y est inférieur ou égal à 8,45 » et vers la droite vers « rouge ». Les cases continuent de se ramifier jusqu'à ce que le résultat soit « rouge » ou « bleu ».
Figure 6.20 Organigramme d'un arbre de décision. Le nœud racine est situé au sommet. Chaque nœud interne pose une question sur les données et oriente en conséquence. Les nœuds feuilles indiquent l'étiquette des données.

Un nuage de points comportant 19 points de données — 9 points sont rouges et 10 sont bleus. Les axes X et Y s'étendent tous deux de 0 à 20. Le jeu de données est classé en sept régions rouges et bleues séparées par des lignes violet clair définies par des inégalités.
Figure 6.21 Régions du plan correspondant aux nœuds purs. Le jeu de données est entièrement catégorisé en régions rouges et bleues séparées par des lignes définies par des inégalités.

Dans l'exemple précédent, le nombre maximal de comparaisons, ou de décisions, pouvant être prises sur une donnée d'entrée quelconque correspondrait à la longueur de la branche la plus longue de l'arbre, qui comporte 7 nœuds. Le nombre de niveaux, ou la longueur de la branche la plus longue dans un arbre de décision, est appelée sa profondeur (depth). Cet arbre a donc une profondeur de 7. Cependant, les derniers niveaux de l'arbre risquent en réalité de surapprendre sur les données d'entraînement. Dans la section suivante, nous verrons comment tester et utiliser des arbres de décision, et nous explorerons des méthodes pour réduire leur variance due au surapprentissage au moyen de l'élagage et d'autres approches.

Utiliser un arbre de décision pour prédire

Une fois votre modèle d'arbre de décision créé, il peut être utilisé pour classifier de nouvelles données. Il suffit de suivre l'organigramme pour identifier dans quel nœud feuille se situe votre point de données.

Exemple 6.8

Problème

À l'aide du modèle d'arbre de décision M, classifiez les points suivants comme Rouge ou Bleu : (9.9, 2.5), (15.1, 12.6), (3.5, 10.2). (Indice : suivez l'organigramme présenté à la Figure 6.20.)

Solution

(X,Y)=(9.9,2.5)(X,Y)=(9.9,2.5). En partant du nœud racine, suivez la branche de gauche (Y=2.5≤13.75)(Y=2.5≤13.75). Allez à nouveau à gauche (X=9.9≤14.55)(X=9.9≤14.55). Suivez encore une fois la branche de gauche (Y=2.5≤8.45)(Y=2.5≤8.45). Cela nous conduit à un nœud feuille étiqueté Bleu. Ainsi, (9.9, 2.5) doit être étiqueté Bleu.

(X,Y)=(15.1,12.6)(X,Y)=(15.1,12.6). En partant du nœud racine, suivez la branche de gauche (Y=12.6≤13.75)(Y=12.6≤13.75). Puis allez à droite (X=15.1>14.55)(X=15.1>14.55). Il s'agit d'un nœud feuille Rouge, et le point (15.1, 12.6) reçoit donc l'étiquette Rouge.

(X,Y)=(3.5,10.2)(X,Y)=(3.5,10.2). En partant du nœud racine, suivez la branche de gauche (Y=10.2≤13.75)(Y=10.2≤13.75). Allez à nouveau à gauche (X=3.5≤14.55)(X=3.5≤14.55). Puis suivez la branche de droite (Y=10.2>8.45)(Y=10.2>8.45), ensuite à gauche (X=3.5≤8.65)(X=3.5≤8.65), puis encore à gauche (X=3.5≤4.2)(X=3.5≤4.2). Enfin, prenez la branche de droite (X=3.5>2.55)(X=3.5>2.55), ce qui attribue l'étiquette Bleu au point (3.5, 10.2).

Entraînement et test

Le modèle d'arbre de décision M que nous avons construit dans la section précédente classifie le jeu de données initial S avec une exactitude de 100 %. La raison en est très simple : nous l'y avons forcé ! En partant du nœud racine contenant tous les points, les données ont été divisées en sous-ensembles de plus en plus petits jusqu'à ce que chaque nœud feuille contienne un sous-ensemble pur (une seule et même étiquette). Toutefois, rien ne garantit que M représente fidèlement la structure sous-jacente des données. Considérez notre jeu de données S comme un échantillon aléatoire de points prélevé dans une population de points plus vaste. Il se peut que du bruit, des valeurs aberrantes et d'autres facteurs aient été présents dans notre échantillon et conduisent M à fournir des prédictions fallacieuses. Afin d'évaluer le pouvoir prédictif d'un arbre de décision, nous devons le tester sur un ensemble de test comprenant des données étiquetées supplémentaires. Nous mesurons l'exactitude du modèle à l'aide de :

Accuracy=Number of correct predictionsNumber of predictionsAccuracy=Number of correct predictionsNumber of predictions

Exemple 6.9

Problème

Supposons que les trois points de l'Exemple 6.8 possèdent des étiquettes connues, comme indiqué dans le Tableau 6.8. Quelle est l'exactitude de notre modèle d'arbre de décision sur ces points de test ?

X Y Étiquette Étiquette prédite
9.9 2.5 Bleu Bleu
15.1 12.6 Rouge Rouge
3.5 10.2 Rouge Bleu
Tableau 6.8 Points de test

Solution

D'après ce tableau, M a vu juste 2 fois sur 3, ce qui correspond à une exactitude de 2/3=66.6%2/3=66.6%.

Élagage, limitation de la profondeur et autres méthodes pour réduire la variance

Les arbres de décision souffrent fréquemment de surapprentissage (variance élevée), ce qui nuit à leur exactitude. Heureusement, plusieurs méthodes permettent d'atténuer ce problème.

Un arbre de décision comportant un grand nombre de nœuds internes est sujet au surapprentissage, car il peut prendre des décisions fondées sur une très petite quantité de données ou sur une différence minime entre les caractéristiques de ces données. « Couper les cheveux en quatre » est une expression courante pour souligner des détails insignifiants qui n'ont en réalité que peu d'importance. En règle générale, nous ne voulons pas que nos modèles s'attachent à des détails superflus. L'élagage (pruning) est le processus consistant à réduire la taille d'un arbre de décision en supprimant les branches qui divisent les données de manière trop fine.

Par exemple, lors de la création du modèle M, le sous-ensemble de S défini par la séquence gauche, gauche, droite — c'est-à-dire : Y≤13.75Y≤13.75, X≤14.55X≤14.55, et Y>8.45Y>8.45 — comprend les points (7.6, 10.2, Rouge), (7.9, 10.6, Rouge), (3.2, 11, Bleu), (5.2, 12.2, Rouge), (9.4, 12.8, Bleu) et (1.9, 13, Rouge). Comme on peut le voir sur la Figure 6.20, il faut trois inégalités supplémentaires pour séparer les quatre points rouges et les deux points bleus en régions de même couleur. À l'issue de ce processus, chacun des deux points bleus et l'un des points rouges deviennent les seuls éléments de leurs sous-ensembles respectifs.

Splitting a set into singletons (one-element subsets) is generally not a great idea in machine learning, as this puts too much predictive weight on a single observation. One method of pruning is to remove branches that split the data into sets L and R in which one of L or R is a singleton (or below a predefined proportion of the original set). Then the node becomes a leaf consisting of data having multiple labels. The label of this new leaf is determined by majority vote. That is, the label that occurs most often becomes the predicted label of any data that finds itself to this node. This method is commonly called error-based (reduced-error) pruning, as it seeks to remove branches that do not significantly increase the classification error rate.

Exemple 6.10

Problème

Utilisez l'élagage pour réduire la complexité du modèle d'arbre de décision M décrit dans cette section. Reclassifiez ensuite les points de données donnés dans l'Exemple 6.8.

Solution

À partir du nœud dont le chemin est Y≤13.75Y≤13.75, X≤14.55X≤14.55, Y>8.45Y>8.45, le modèle M s'est divisé sur l'inégalité X≤8.65X≤8.65. Cela scinde l'ensemble en LL = {(7.6, 10.2, Rouge), (7.9, 10.6, Rouge), (3.2, 11, Bleu), (5.2, 12.2, Rouge), (1.9, 13, Rouge)} et RR = {(9.4, 12.8, Bleu)}. Puisque la division produirait un singleton, nous transformons simplement ce nœud en feuille et élaguons toutes les branches et tous les nœuds situés en dessous. Le nœud est désormais une feuille comptant quatre points de données rouges et deux points bleus ; cette feuille est donc étiquetée Rouge. L'organigramme et les régions correspondantes du plan sont présentés à la Figure 6.22 et à la Figure 6.23. Remarquez que l'arbre élagué a une profondeur de 4, ce qui est bien inférieur à la profondeur de 7 de l'arbre initial.

Un organigramme d'un arbre de décision complet. La case supérieure indique « y est inférieur ou égal à 13,75 » et se ramifie vers la gauche vers « x est inférieur ou égal à 14,55 » ou « bleu ». La case de gauche se ramifie vers la gauche vers « y est inférieur ou égal à 8,45 » et vers la droite vers « rouge ». La case de gauche se ramifie en « rouge » ou « bleu ».
Figure 6.22 Organigramme de l'arbre de décision élagué de l'Exemple 6.10
Un nuage de points comportant 19 points de données — 9 points sont rouges et 10 sont bleus. Les axes X et Y s'étendent tous deux de 0 à 20. Le jeu de données est classé en quatre régions rouges et bleues séparées par des lignes violet clair définies par des inégalités.
Figure 6.23 Régions du plan correspondant aux nœuds purs pour l'arbre élagué. Le modèle élagué divise le plan en un nombre de régions inférieur à celui du modèle d'origine, ce qui permet vraisemblablement de mieux saisir la véritable structure sous-jacente sans tomber dans le surapprentissage.

Reclassifions maintenant les points (9.9, 2.5), (15.1, 12.6) et (3.5, 10.2) comme dans le Tableau 6.9.

(X,Y)=(9.9,2.5)(X,Y)=(9.9,2.5). En partant du nœud racine, suivez la branche de gauche (Y=2.5≤13.75)(Y=2.5≤13.75). Allez à nouveau à gauche (X=9.9≤14.55)(X=9.9≤14.55). Suivez encore une fois la branche de gauche (Y=2.5≤8.45)(Y=2.5≤8.45), qui est une feuille bleue.

(X,Y)=(15.1,12.6)(X,Y)=(15.1,12.6). En partant du nœud racine, suivez la branche de gauche (Y=12.6≤13.75)(Y=12.6≤13.75). Puis allez à droite (X=15.1>14.55)(X=15.1>14.55), qui est une feuille rouge.

(X,Y)=(3.5,10.2)(X,Y)=(3.5,10.2). En partant du nœud racine, suivez la branche de gauche (Y=10.2≤13.75)(Y=10.2≤13.75). Allez à nouveau à gauche (X=3.5≤14.55)(X=3.5≤14.55). Suivez ensuite la branche de droite (Y=10.2>8.45)(Y=10.2>8.45), qui est désormais une feuille rouge.

X Y Étiquette Étiquette prédite
9.9 2.5 Bleu Bleu
15.1 12.6 Rouge Rouge
3.5 10.2 Rouge Rouge
Tableau 6.9 Points de test reclassifiés

Le modèle s'avère désormais exact à 100 % sur les données de test. (Bien entendu, un modèle entraîné sur des données du monde réel comportant beaucoup plus d'observations ne peut pas atteindre une exactitude de 100 %, mais cela est possible sur de très petits jeux de données.) Remarquez que l'exactitude du modèle sur l'ensemble d'entraînement d'origine S n'est plus de 100 %. Sur S, l'arbre élagué classe par erreur deux points, (3.2, 11) et (9.4, 12.8), comme rouges alors qu'ils sont en réalité bleus ; l'exactitude sur l'ensemble d'entraînement est donc désormais de 17/19=89.5%17/19=89.5%. Cela reste un très bon résultat !

D'autres méthodes existent pour élaguer un arbre de décision. On distingue deux approches principales : le pré-élagage et le post-élagage. Le pré-élagage consiste à fixer d'emblée des paramètres ou des critères relatifs à la complexité de l'arbre de décision. De nouvelles branches ne sont ajoutées que si ces critères sont respectés. Le post-élagage intervient après que l'arbre complet a été construit sans restriction. Lors du post-élagage, les branches et les nœuds sont éliminés selon des règles définies par l'utilisateur, ce qui transforme des nœuds jusqu'alors internes en nœuds feuilles. L'élagage basé sur l'erreur peut être implémenté aussi bien sous forme d'algorithme de pré-élagage que de post-élagage.

  • L'élagage limité par la profondeur (depth-limiting pruning), comme son nom l'indique, signifie qu'un arbre de décision ne peut pas croître au-delà d'une profondeur (ou d'un nombre de niveaux) prédéfinie. Cette technique de pré-élagage contribue à limiter le nombre de petites divisions, mais il convient de veiller à ne pas fixer la profondeur à une valeur trop basse, sous peine d'empêcher le modèle de distinguer des éléments importants.
  • L'élagage limité par les feuilles (leaf-limiting pruning) impose un plafond au nombre total de feuilles. À l'instar de la limitation de profondeur, la limitation des feuilles sert à restreindre la complexité globale du modèle d'arbre de décision, mais elle peut conduire au sous-apprentissage et diminuer le pouvoir prédictif du modèle lorsque les données elles-mêmes recèlent une forte complexité qu'il est nécessaire de capturer.
  • L'élagage par longueur de description minimale (MDL) (minimum description length (MDL) pruning) est une méthode de post-élagage qui vise à trouver la forme la moins complexe d'un arbre de décision offrant un niveau d'exactitude acceptable. D'une manière générale, un compromis s'impose toujours entre simplicité et exactitude dans tout algorithme d'apprentissage automatique. La démarche de la méthode MDL consiste à privilégier la simplicité. Une description détaillée de l'algorithme MDL dépasse le cadre de cet ouvrage.

Arbres de décision en Python

Le paquet Python sklearn propose des algorithmes performants pour créer et manipuler des arbres de décision. Notons que le classifieur par arbre de décision est ici limité à une profondeur maximale de 3 et que l'indice de Gini est employé à la place du gain d'information. Les données sont issues du jeu de données RedBlue.csv.

Code Python

      # Import libraries
      import pandas as pd  ## for dataset management
      from sklearn.tree import DecisionTreeClassifier 
      from sklearn import tree
      import matplotlib.pyplot as plt
      
      # Read data file
      data = pd.read_csv('RedBlue.csv')
      
      inputs = data[['X', 'Y']]
      output = data['Label']
      
      # Train Decision Tree Classifier
      clf = DecisionTreeClassifier(max_depth=3)
      clf = clf.fit(inputs,output)
      
      # Plot tree with customization
      plt.figure(figsize=(12, 8))  # Set the size of the plot
      tree.plot_tree(clf,
                     rounded=True,       # Round the edges of the box
                     fontsize=10)        # Adjust font size for clarity
      plt.show()  # Display the plot
    

Le résultat obtenu ressemble à ce qui suit :

Une visualisation d'arbre de décision montrant la structure d'un modèle de classification. L'arbre comporte plusieurs nœuds, chacun représentant une décision basée sur les valeurs des caractéristiques (x[0] et x[1]). Les branches représentent les issues possibles de ces décisions. Les feuilles de l'arbre représentent les classifications finales, avec des valeurs indiquant le nombre d'échantillons dans chaque classe. Les valeurs d'impureté de Gini sont affichées à chaque nœud, mesurant le degré d'impureté ou d'incertitude dans les données à ce point de l'arbre.