Prévention du Surapprentissage dans les Arbres de Décision
Glissez pour afficher le menu
Avant de passer à l’implémentation d’un arbre de décision avec Python, il est important d’aborder un sujet essentiel : le surapprentissage – le principal défi lié aux arbres de décision.
Voici un exemple illustrant comment l’arbre de décision s’ajuste à l’ensemble de données. Remarquez comment le modèle s’adapte aux données d’entraînement, en capturant leurs motifs et leurs subtilités :
Bien que le modèle s'ajuste parfaitement à l'ensemble d'entraînement sans mal classer aucun exemple, le problème est que les frontières de décision sont trop complexes. Par conséquent, la précision sur l'ensemble de test (ou de validation croisée) sera nettement inférieure à celle de l'ensemble d'entraînement, ce qui indique que le modèle surajuste.
La raison en est que le modèle effectuera autant de divisions que nécessaire pour s'ajuster parfaitement aux données d'entraînement.
Heureusement, l'Arbre de Décision est hautement configurable, ce qui permet d'ajuster ses hyperparamètres pour minimiser le surajustement.
Profondeur maximale de l'arbre
La profondeur d'un nœud correspond à la distance (verticale) entre ce nœud et le nœud racine.
Il est possible de limiter la profondeur maximale d’un arbre de décision, ce qui le rend plus petit et réduit le risque de surapprentissage. Pour cela, les nœuds de décision atteignant la profondeur maximale deviennent des feuilles.
Voici également un gif montrant comment la frontière de décision change avec différentes valeurs de profondeur maximale :
Nombre minimum d'échantillons
Une autre façon de contraindre l'arbre consiste à définir le nombre minimum d'échantillons sur les nœuds feuilles. Cela rendra le modèle plus simple et plus robuste aux valeurs aberrantes.
Vous pouvez observer comment cet hyperparamètre influence la frontière de décision :
Ces deux hyperparamètres sont disponibles dans l’implémentation Decision Tree de scikit-learn.
Par défaut, l’arbre n’est pas contraint : max_depth est défini sur None, ce qui signifie qu’il n’y a pas de limite de profondeur, et min_samples_leaf est défini sur 1.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion