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.
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é . Plus 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 () ; 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é est . Rappelons que les probabilités sont toujours comprises entre 0 et 1, et si , alors par les propriétés des logarithmes, nous avons . 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 est , tandis que l'information obtenue en apprenant qu'une pièce lancée est tombée sur pile est , soit un bit d'information.
Supposons que la probabilité que ma voiture démarre un jour donné soit , et donc que la probabilité qu'elle ne démarre pas soit . L'information liée à l'événement « elle démarre » est , tandis que l'information liée à l'événement « elle ne démarre pas » est . 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 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 , prenant valeurs avec les probabilités associées , l'entropie de est :
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 : pour « la voiture démarre » et pour « la voiture ne démarre pas ».
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 , 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 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.
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 ou Bleus . Les probabilités de chaque cas sont et . L'entropie totale du nœud racine est donc :
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 ou , où 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 . (Ce point se situe à mi-chemin entre deux valeurs adjacentes de , 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 {3 Rouges, 2 Bleus} et Droite {6 Rouges, 8 Bleus}. Notons que contient 5 points, son poids par rapport à son nœud parent est donc . De même, le poids de est . Le gain d'information, ou IG, d'une division est défini par :
Calculons d'abord les mesures d'entropie de et .
Ainsi, le gain d'information de cette division est . 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 .
Effectuons une division sur (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 . 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.
É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 . 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.
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
. En partant du nœud racine, suivez la branche de gauche . Allez à nouveau à gauche . Suivez encore une fois la branche de gauche . Cela nous conduit à un nœud feuille étiqueté Bleu. Ainsi, (9.9, 2.5) doit être étiqueté Bleu.
. En partant du nœud racine, suivez la branche de gauche . Puis allez à droite . Il s'agit d'un nœud feuille Rouge, et le point (15.1, 12.6) reçoit donc l'étiquette Rouge.
. En partant du nœud racine, suivez la branche de gauche . Allez à nouveau à gauche . Puis suivez la branche de droite , ensuite à gauche , puis encore à gauche . Enfin, prenez la branche de droite , 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 :
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 |
Solution
D'après ce tableau, M a vu juste 2 fois sur 3, ce qui correspond à une exactitude de .
É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 : , , et — 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 , , , le modèle M s'est divisé sur l'inégalité . Cela scinde l'ensemble en = {(7.6, 10.2, Rouge), (7.9, 10.6, Rouge), (3.2, 11, Bleu), (5.2, 12.2, Rouge), (1.9, 13, Rouge)} et = {(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.
Reclassifions maintenant les points (9.9, 2.5), (15.1, 12.6) et (3.5, 10.2) comme dans le Tableau 6.9.
. En partant du nœud racine, suivez la branche de gauche . Allez à nouveau à gauche . Suivez encore une fois la branche de gauche , qui est une feuille bleue.
. En partant du nœud racine, suivez la branche de gauche . Puis allez à droite , qui est une feuille rouge.
. En partant du nœud racine, suivez la branche de gauche . Allez à nouveau à gauche . Suivez ensuite la branche de droite , 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 |
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 . 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 :