Aller au contenu

Algorithme ID3

Un article de Wikipédia, l'encyclopédie libre.
Arbre de décision potentiel généré par ID3. Les attributs sont disposés sous forme de nœuds en fonction de leur capacité à classer les exemples. Les valeurs des attributs sont représentées par des branches.

En intelligence artificielle, plus précisément en apprentissage automatique, l’algorithme ID3 (acronyme de Iterative Dichotomiser 3) est un algorithme de classification supervisé, c’est-à-dire qu'il se base sur des exemples déjà classés dans un ensemble de classes pour déterminer un modèle de classification. Le modèle que produit ID3 est un arbre de décision. Cet arbre servira à classer de nouveaux échantillons.

ID3 a été développé par Ross Quinlan en 1986[1]. L'algorithme C4.5[2] est une amélioration d'ID3, notamment du point de vue de la facilité d'implémentation.

Principe général

[modifier | modifier le code]

Chaque exemple en entrée est constitué d'une liste d'attributs. Un de ces attributs est l’attribut « cible » et les autres sont les attributs « non cibles ». On appelle aussi cette "cible" la "classe". En fait l’arbre de décision va permettre de prédire la valeur de l’attribut « cible » à partir des autres valeurs. Bien entendu, la qualité de la prédiction dépend des exemples : plus ils sont variés et nombreux, plus la classification de nouveaux cas sera fiable.

Un arbre de décision permet de remplacer un expert humain dont il modélise le cheminement intellectuel. À chaque nœud correspond une question sur un attribut non cible. Chaque valeur différente de cet attribut sera associée à un arc ayant pour origine ce nœud. Les feuilles de l'arbre, quant à elles, indiquent la valeur prévue pour l’attribut cible relativement aux enregistrements contenus par la branche (indiqués par les différents arcs) reliant la racine à cette feuille.

ID3 construit l'arbre de décision récursivement. À chaque étape de la récursion, il calcule parmi les attributs restant pour la branche en cours, celui qui maximisera le gain d'information. C’est-à-dire l'attribut qui permettra le plus facilement de classer les exemples à ce niveau de cette branche de l'arbre. On appelle ce calcul l'entropie de Shannon dont voici la formule utilisée :

fonction ID3(exemples, attributCible, attributsNonCibles)
   si exemples est vide alors /* Nœud terminal */
       renvoyer un nœud Erreur
   sinon si attributsNonCibles est vide alors /* Nœud terminal */
       renvoyer un nœud ayant la valeur la plus représentée pour attributCible
   sinon si tous les exemples ont la même valeur pour attributCible alors /* Nœud terminal */
       renvoyer un nœud ayant cette valeur
   sinon /* Nœud intermédiaire */
       attributSélectionné = attribut maximisant le gain d'information parmi attributsNonCibles
       attributsNonCiblesRestants = suppressionListe(attributsNonCibles, attributSélectionné)
       nouveauNœud = nœud étiqueté avec attributSélectionné
       
       pour chaque valeur de attributSélectionné faire
           exemplesFiltrés = filtreExemplesAyantValeurPourAttribut(exemples, attributSélectionné, valeur)
           nouveauNœud->fils(valeur) = ID3(exemplesFiltrés, attributCible, attributsNonCiblesRestants)
       finpour
       
       renvoyer nouveauNœud

Références

[modifier | modifier le code]
  • J. Ross Quinlan, Machine Learning, 1986, « Induction of decision trees », p. 81-106

Notes et références

[modifier | modifier le code]
  1. Quinlan, J. R. 1986. Induction of Decision Trees. Mach. Learn. 1, 1 (Mar. 1986), 81–106
  2. Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan Kaufmann Publishers, 1993.