Python >> Tutoriel Python >  >> Python

Apprentissage de l'arbre de décision - Un guide illustré utile en Python

Ce didacticiel vous montrera tout ce dont vous avez besoin pour commencer à former vos premiers modèles à l'aide de l'apprentissage par arbre de décision en Python. Pour vous aider à bien saisir ce sujet, je l'ai abordé sous différents angles :textuel, visuel et audiovisuel. Alors, commençons !

Pourquoi des arbres de décision ?

L'apprentissage en profondeur est devenu la mégatendance de l'intelligence artificielle et de l'apprentissage automatique. Pourtant, la formation de grands réseaux de neurones n'est pas toujours le meilleur choix. C'est le bazooka du machine learning, efficace mais pas efficient.

Un humain ne comprendra pas en pratique pourquoi le réseau neuronal classe d'une manière ou d'une autre. Ce n'est qu'une boîte noire. Devriez-vous investir aveuglément votre argent dans une action recommandée par un réseau de neurones ? Comme vous ne connaissez pas la base de la décision d'un réseau de neurones, il peut être difficile de faire aveuglément confiance à ses recommandations.

De nombreuses divisions de ML dans les grandes entreprises doivent être en mesure d'expliquer le raisonnement de leurs algorithmes de ML . Les modèles d'apprentissage en profondeur ne parviennent pas à le faire, mais c'est là que les arbres de décision excellent !

C'est l'une des raisons de la popularité des arbres de décision. Les arbres de décision sont plus conviviaux et intuitifs. Vous savez exactement comment les décisions ont émergé. Et vous pouvez même régler manuellement le modèle ML de votre choix.

L'arbre de décision se compose de nœuds de branchement et de nœuds feuilles. Un nœud de branchement est une variable (aussi appelée feature ) qui est donné comme entrée à votre problème de décision. Pour chaque valeur possible de cette fonctionnalité, il existe un nœud enfant .

Un nœud feuille représente la classe prédite compte tenu des valeurs de fonctionnalité le long du chemin vers la racine. Chaque nœud feuille a une probabilité associée, c'est-à-dire combien de fois avons-nous vu cette instance particulière (choix de valeurs de caractéristiques) dans les données d'apprentissage. De plus, chaque nœud feuille a une classe associée ou une valeur de sortie qui est la classe prédite de l'entrée donnée par les nœuds de branchement.

Arbres de décision vidéo

J'explique les arbres de décision dans cette vidéo :

Si vous avez besoin d'actualiser vos compétences Python, n'hésitez pas à approfondir votre compréhension du code Python avec l'application Web Finxter.

Explication simple Exemple

Vous connaissez déjà très bien les arbres de décision grâce à votre propre expérience. Ils représentent une manière structurée de prendre des décisions – chaque décision d'ouverture de nouvelles succursales. En répondant à un tas de questions, vous arriverez enfin au résultat recommandé.

Voici un exemple :

Les arbres de décision sont utilisés pour les problèmes de classification tels que "quel sujet dois-je étudier, compte tenu de mes intérêts ?" . Vous commencez par le haut. Maintenant, vous répondez à plusieurs reprises aux questions (sélectionnez les choix qui décrivent le mieux vos fonctionnalités). Enfin, vous atteignez un nœud feuille de l'arbre. Il s'agit de la classe recommandée en fonction de votre sélection de fonctionnalités.

Il existe de nombreuses nuances dans l'apprentissage de l'arbre de décision. Par exemple, dans la figure ci-dessus, la première question a plus de poids que la dernière question. Si vous aimez les mathématiques, l'arbre de décision ne vous recommandera jamais l'art ou la linguistique. Ceci est utile car certaines caractéristiques peuvent être beaucoup plus importantes pour la décision de classification que d'autres. Par exemple, un système de classification qui prédit votre état de santé actuel peut utiliser votre sexe (caractéristique) pour pratiquement exclure de nombreuses maladies (classes).

Par conséquent, l'ordre des nœuds de décision se prête à des optimisations de performances :placez les fonctionnalités en haut qui ont un impact important sur la classification finale. Dans l'arbre de décision, l'apprentissage regroupera ensuite les questions qui n'ont pas un impact important sur le classement final, comme indiqué dans le graphique suivant :

Supposons que l'arbre de décision complet ressemble à l'arbre de gauche. Pour toute combinaison de caractéristiques, il existe un résultat de classification distinct (les feuilles de l'arbre). Cependant, certaines fonctionnalités peuvent ne pas vous fournir d'informations supplémentaires concernant le problème de classification (par exemple, le premier nœud de décision "Langue" dans l'exemple). L'apprentissage par arbre de décision éliminerait efficacement ces nœuds pour des raisons d'efficacité. C'est ce qu'on appelle "l'élagage".

Code d'arbre de décision en Python

Voici un code sur la façon dont vous pouvez exécuter un arbre de décision en Python en utilisant le sklearn bibliothèque pour l'apprentissage automatique :

## Dependencies
import numpy as np
from sklearn import tree


## Data: student scores in (math, language, creativity) --> study field
X = np.array([[9, 5, 6, "computer science"],
              [1, 8, 1, "literature"],
              [5, 7, 9, "art"]])


## One-liner
Tree = tree.DecisionTreeClassifier().fit(X[:,:-1], X[:,-1])

## Result & puzzle
student_0 = Tree.predict([[8, 6, 5]])
print(student_0)

student_1 = Tree.predict([[3, 7, 9]])
print(student_1)

Les données de l'extrait de code décrivent trois élèves avec leur niveau de compétence estimé (un score compris entre 1 et 10) dans les trois domaines mathématiques, linguistiques et créatifs. Nous connaissons également les sujets d'études de ces étudiants. Par exemple, le premier élève est hautement qualifié en mathématiques et étudie l'informatique. Le deuxième élève est beaucoup plus compétent en langue que dans les deux autres compétences et étudie la littérature. Le troisième étudiant est bon en créativité et étudie l'art.

Le one-liner crée un nouvel objet d'arbre de décision et forme le modèle en utilisant le fit fonction sur les données d'apprentissage étiquetées (la dernière colonne est l'étiquette). En interne, il crée trois nœuds, un pour chaque fonctionnalité mathématique, linguistique et créative.

Lors de la prédiction de la classe du student_0 (math=8, language=6, creativity=5) , l'arbre de décision renvoie “computer science” . Il a appris que ce modèle de fonctionnalités (élevé, moyen, moyen) est un indicateur pour la première classe. En revanche, lorsqu'on lui demande (3, 7, 9) , l'arbre de décision prédit “art” car il a appris que le score (faible, moyen, élevé) allusions à la troisième classe.

Notez que l'algorithme est non déterministe. En d'autres termes, lors de l'exécution du même code deux fois, des résultats différents peuvent survenir. Ceci est courant pour les algorithmes d'apprentissage automatique qui fonctionnent avec des générateurs aléatoires. Dans ce cas, l'ordre des fonctionnalités est permuté de manière aléatoire, de sorte que l'arbre de décision final peut avoir un ordre différent des fonctionnalités.


Prochain article