Surapprentissage et élagage

À l'aide de l'algorithme décrit ci-dessus, nous pouvons entraîner un arbre de décision qui classera parfaitement les exemples d'entraînement, en supposant qu'ils sont séparables. Toutefois, si l'ensemble de données contient du bruit, cet arbre risque d'être en surapprentissage par rapport aux données, et la précision du test sera médiocre.

La figure suivante montre un ensemble de données comportant du bruit avec une relation linéaire entre une caractéristique x et l'étiquette y. La figure montre également un arbre de décision entraîné sur cet ensemble de données sans aucun type de régularisation. Ce modèle prédit correctement tous les exemples d'entraînement (la prédiction du modèle correspond aux exemples d'entraînement). Toutefois, sur un nouvel ensemble de données contenant le même motif linéaire et une instance de bruit différente, le modèle ne sera pas performant.

La pente générale est +1, mais comme l'ensemble de données comporte beaucoup de bruit, les points de données individuels sont parfois très éloignés de la ligne la plus adaptée.

Figure 12 Ensemble de données avec bruit.

 

Pour limiter le surapprentissage d'un arbre de décision, appliquez l'un des critères de régularisation suivants, ou les deux, lors de l'entraînement de l'arbre de décision:

  • Set a maximum depth (Définir une profondeur maximale) : empêchez les arbres de décision de dépasser une profondeur maximale, telle que 10.
  • Définissez un nombre minimal d'exemples dans une feuille:une feuille comportant un nombre inférieur à un certain nombre d'exemples ne sera pas prise en compte pour la division.

La figure suivante illustre l'effet d'un nombre minimal différent d'exemples par feuille. Le modèle capte moins de bruit.

Trois tracés, chacun montrant les effets d'une valeur différente pour le nombre minimal d'exemples par feuille. Les différentes valeurs sont 2, 5 et 10.

Figure 13 Nombre minimal différent d'exemples par feuille.

Vous pouvez également effectuer une régularisation après l'entraînement en supprimant (élargissant) certaines branches de manière sélective, c'est-à-dire en convertissant certains nœuds non feuilles en feuilles. Une solution courante pour sélectionner les branches à supprimer consiste à utiliser un ensemble de données de validation. Autrement dit, si la suppression d'une branche améliore la qualité du modèle sur l'ensemble de données de validation, la branche est supprimée.

Le dessin suivant illustre cette idée. Ici, nous testons si la justesse de validation de l'arbre de décision est améliorée si le nœud vert non feuille est transformé en feuille, c'est-à-dire, en éliminant les nœuds orange.

Deux arbres de décision. L'un des arbres de décision contient neuf nœuds, tandis que l'autre a été réduit à six nœuds après avoir transformé l'une des conditions en feuilles.

Figure 14 Élagage d'une condition et de ses enfants en une feuille

 

La figure suivante illustre l'effet de l'utilisation de 20% de l'ensemble de données en tant que validation pour élaguer l'arbre de décision:

Représentation graphique d'un modèle surapprentissage irrégulier par rapport à un modèle idéal en ligne droite

Figure 15 Utilisation de 20% de l'ensemble de données pour élaguer l'arbre de décision.

 

Notez que l'utilisation d'un ensemble de données de validation réduit le nombre d'exemples disponibles pour l'entraînement initial de l'arbre de décision.

De nombreux créateurs de modèles appliquent plusieurs critères. Par exemple, vous pouvez effectuer toutes les opérations suivantes:

  • Appliquer un nombre minimal d'exemples par feuille.
  • Appliquez une profondeur maximale pour limiter la croissance de l'arbre de décision.
  • Élagez l'arbre de décision.
Code YDF
Dans YDF, les algorithmes d'apprentissage sont préconfigurés avec des valeurs par défaut pour tous les hyperparamètres d'élagage. Par exemple, voici les valeurs par défaut de deux hyperparamètres d'élagage :
  • Le nombre minimal d'exemples est de cinq (min_examples = 5)
  • 10% de l'ensemble de données d'entraînement est conservé pour la validation (validation_ratio = 0.1).
Vous pouvez désactiver l'élagage avec l'ensemble de données de validation en définissant validation_ratio=0.0.

Ces critères introduisent de nouveaux hyperparamètres qui doivent être réglés (par exemple, la profondeur maximale de l'arbre), souvent avec un réglage automatisé des hyperparamètres. Les arbres de décision sont généralement assez rapides pour être entraînés afin d'utiliser les réglages d'hyperparamètres avec la validation croisée. Par exemple, sur un ensemble de données avec "n" exemples:

  • Divisez les exemples d'entraînement en p groupes qui ne se chevauchent pas. Exemple : p=10.
  • Pour toutes les valeurs d'hyperparamètres possibles ; par exemple, profondeur maximale dans {3,5,6,7,8,9}, exemples min dans {5,8,10,20}.
    • Évaluer, sur chaque groupe, la qualité d'un arbre de décision entraîné sur les autres groupes p-1
    • Faire la moyenne de l'évaluation à l'échelle des groupes.
  • Sélectionnez la valeur d'hyperparamètre offrant la meilleure moyenne d'évaluation.
  • Entraînez un arbre de décision final à l'aide de tous les exemples "n" avec les hyperparamètres sélectionnés.

Dans cette section, nous avons abordé la façon dont les arbres de décision limitent le surapprentissage. Malgré ces méthodes, le sous-apprentissage et le surapprentissage sont des faiblesses majeures des arbres de décision. Les forêts de décision introduisent de nouvelles méthodes pour limiter le surapprentissage, que nous verrons plus tard.

Interprétation directe de l'arbre de décision

Les arbres de décision sont facilement interprétables. Cela dit, la modification de quelques exemples peut complètement changer la structure (et donc l'interprétation) de l'arbre de décision.

En raison de la façon dont les arbres de décision sont construits, qui consiste à partitionner les exemples d'entraînement, vous pouvez utiliser un arbre de décision pour interpréter l'ensemble de données lui-même (par opposition au modèle). Chaque feuille représente un coin particulier de l'ensemble de données.

Code YDF
Dans YDF, vous pouvez examiner les arbres avec la fonction model.describe(). Vous pouvez également accéder à une arborescence individuelle et la représenter avec model.get_tree(). Pour en savoir plus, consultez le tutoriel d'inspection de modèles de YDF.

Cependant, l'interprétation indirecte est également informative.