dtreePrune
Description
L'action permet d'élaguer (pruner) un arbre de décision préalablement entraîné afin de réduire le surapprentissage (overfittingSurapprentissage d'un modèle mémorisant le bruit des données d'entraînement au lieu des tendances, réduisant ainsi sa capacité de généralisation et sa précision sur de nouvelles observations.) et d'améliorer sa capacité de généralisation. Un peu comme un bon jardinier, SAS coupe les branches inutiles ! Elle supporte plusieurs méthodes comme l'élagage par coût-complexité ou par erreur réduite ().
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| alpha | Spécifie la valeur à utiliser pour l'élagage par coût-complexité minimal pour les arbres de régression (valeur minimale : 0). |
| casOut | Spécifie la table de sortie où sauvegarder le modèle d'arbre de décision élagué. |
| cfLev | Niveau de confiance définissant l'agressivité de l'élagage selon l'algorithme (par défaut : 0.25). |
| costComplexity | Si défini sur Vrai, l'élagage par coût-complexité est effectué. S'utilise conjointement avec `alpha`, `nLeaf` ou une table de test. |
| modelTable | Paramètre REQUIS spécifiant la table d'entrée contenant le modèle de l'arbre de décision initial à élaguer. |
| nLeaf | Sélectionne le sous-arbre ayant le nombre de feuilles ciblé (ou s'en approchant le plus par défaut). |
| reducedError | Active l'élagage par erreur réduite () lorsqu'une table de test est spécifiée dans le paramètre `table`. |
| saveState | Permet de sauvegarder le modèle généré sous la forme d'un objet analytique pour un déploiement futur. |
| table | Table d'entrée (validation/test) utilisée pour évaluer l'erreur d'élagage. |
| target | Variable cible (réponse) utilisée lors de l'entraînement. |
| varImp | Indique s'il faut calculer et générer les informations d'importance des variables basées sur la réduction totale de l'indice de Gini. |
Préparation des données
Création d'un arbre de décision initial (Prérequis)
Pour élaguer un arbre, il nous faut d'abord en entraîner un ! Voici comment créer un modèle sur la célèbre table `iris` avec l'action `dtreeTrain`.
| 1 | PROC CAS; |
| 2 | decisionTree.dtreeTrain / |
| 3 | TABLE={name='iris'} |
| 4 | target='Species' |
| 5 | inputs={'SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'} |
| 6 | casOut={name='arbre_complet', replace=true}; |
| 7 | RUN; |
| 8 | QUIT; |
Exemples d'utilisation
Élagage par coût-complexité
Exemple simple montrant comment utiliser l'élagage par coût-complexité avec l'hyperparamètre `alpha`.
| 1 | PROC CAS; |
| 2 | decisionTree.dtreePrune / |
| 3 | modelTable={name='arbre_complet'} |
| 4 | costComplexity=true |
| 5 | alpha=0.05 |
| 6 | casOut={name='arbre_elague', replace=true}; |
| 7 | RUN; |
| 8 | QUIT; |
Résultat Attendu :
Élagage par erreur réduite avec extraction du score aStore
Cet exemple utilise une approche de validation par erreur réduite. Il évalue le modèle avec une table de validation (`table`), exige un nombre cible de feuilles (`nLeaf`), et sauvegarde le modèle optimisé au format %%aStore%% prêt à l'emploi !
| 1 | PROC CAS; |
| 2 | decisionTree.dtreePrune / |
| 3 | modelTable={name='arbre_complet'} |
| 4 | TABLE={name='iris_validation'} |
| 5 | reducedError=true |
| 6 | nLeaf=4 |
| 7 | target='Species' |
| 8 | varImp=true |
| 9 | saveState={name='arbre_elague_astore', replace=true} |
| 10 | casOut={name='arbre_elague_complet', replace=true}; |
| 11 | RUN; |
| 12 | QUIT; |