decisionTree

dtreePrune

##set_decisiontree

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 ().

Syntaxe Officielle
proc cas;
decisionTree.dtreePrune <résultat> /
alpha=double
applyRowOrder=VRAI | FAUX
casOut={nom="nom_table", caslib="nom_caslib", ...}
cfLev=double
code={casOut={...}, ...}
codeInteractions={casOut={...}, ...}
costComplexity=VRAI | FAUX
encodeName=VRAI | FAUX
freq="nom_variable"
modelTable={name="nom_table", caslib="nom_caslib"} /* REQUIS */
nLeaf=entier
nodeId={entier-1 <, entier-2, ...>}
reducedError=VRAI | FAUX
reducedErrorOnly=VRAI | FAUX
saveState={name="nom_table"}
table={name="nom_table"}
target="nom_variable"
varImp=VRAI | FAUX
varIntImp=entier;
run;
quit;

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`.

1PROC CAS;
2 decisionTree.dtreeTrain /
3 TABLE={name='iris'}
4 target='Species'
5 inputs={'SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'}
6 casOut={name='arbre_complet', replace=true};
7RUN;
8QUIT;

Exemples d'utilisation

Élagage par coût-complexité

Exemple simple montrant comment utiliser l'élagage par coût-complexité avec l'hyperparamètre `alpha`.

1PROC CAS;
2 decisionTree.dtreePrune /
3 modelTable={name='arbre_complet'}
4 costComplexity=true
5 alpha=0.05
6 casOut={name='arbre_elague', replace=true};
7RUN;
8QUIT;
Résultat Attendu :
Crée une nouvelle table de modèle `arbre_elague` contenant l'arbre simplifié, réduisant ainsi la profondeur de l'arbre initial.
É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 !

1PROC 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};
11RUN;
12QUIT;
Résultat Attendu :
Génère un arbre à 4 feuilles évalué sur la table `iris_validation`, calcule l'importance des variables, et exporte la table de modèle `arbre_elague_complet` ainsi que le store analytique binaire `arbre_elague_astore`.