Algorithme ID3
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
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 :
Algorithme
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
- J. Ross Quinlan, Machine Learning, 1986, « Induction of decision trees », p. 81-106
Voir aussi
Notes et références
- Quinlan, J. R. 1986. Induction of Decision Trees. Mach. Learn. 1, 1 (Mar. 1986), 81â106
- Quinlan, J. R. C4.5: Programs for Machine Learning. Morgan Kaufmann Publishers, 1993.