decisionTree

dtreeMerge

##set_decisiontree

Description

Cette action permet de fusionner les nœuds d'un . Parfait pour faire un peu d'élagage dans vos modèles complexes afin d'éviter le surapprentissage ou d'en simplifier l'interprétation !

Syntaxe Officielle
decisionTree.dtreeMerge <result=results> <status=rc> /
casOut={casouttable},
code={codegen},
encodeName=TRUE | FALSE,
modelTable={castable}, /* REQUIS */
nodeId={integer-1 <, integer-2, ...>},
varImp=TRUE | FALSE;

Paramètres Clés

Nom du paramètre Description
casOut Spécifie la table pour stocker le modèle d'arbre de décision résultant de la fusion. Si ce paramètre n'est pas spécifié, un nom aléatoire est généré.
code Demande à l'action de produire le code de scoring SAS correspondant au nouveau modèle.
encodeName Indique s'il faut encoder les noms des variables dans la table de sortie, comme les probabilités prédites (utilise le préfixe P_ au lieu de _DT_P_).
modelTable Spécifie la table contenant le modèle d'arbre de décision original à modifier. C'est un paramètre requis.
nodeId Spécifie les identifiants (ID) des nœuds à fusionner. Attention : les nœuds doivent obligatoirement être des feuilles et partager le même nœud parent.
varImp Indique si les informations d'importance des variables doivent être générées. L'importance est évaluée par la réduction totale de Gini.

Préparation des données

Préparation des données et du modèle initial

Nous chargeons un jeu de données classique et entraînons un modèle d'arbre de décision initial qui nous servira de base pour démontrer l'action de fusion.

1PROC CAS;
2 SESSION casauto;
3 TABLE.loadTable / path="iris.sashdat" caslib="casuser" casOut={name="iris", replace=true};
4 decisionTree.dtreeTrain /
5 TABLE={name="iris"}
6 target="Species"
7 inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"}
8 casOut={name="tree_model", replace=true};
9QUIT;

Exemples d'utilisation

Fusion de nœuds simple

Cet exemple fusionne deux nœuds feuilles spécifiques (par exemple les nœuds 3 et 4) de notre modèle d'arbre.

1PROC CAS;
2 decisionTree.dtreeMerge /
3 modelTable={name="tree_model"}
4 nodeId={3, 4}
5 casOut={name="merged_tree_model", replace=true};
6QUIT;
Résultat Attendu :
Crée une nouvelle table en mémoire nommée `merged_tree_model` contenant le modèle d'arbre de décision mis à jour avec les nœuds spécifiés fusionnés.
Fusion avancée avec extraction de code et d'importance

Nous fusionnons des nœuds tout en générant le code de scoring SAS de ce nouveau modèle et en demandant le recalcul de l'importance des variables avec des noms encodés proprement.

1PROC CAS;
2 decisionTree.dtreeMerge /
3 modelTable={name="tree_model"}
4 nodeId={3, 4}
5 casOut={name="merged_tree_model_detailed", replace=true}
6 varImp=true
7 encodeName=true
8 code={casOut={name="tree_score_code", replace=true}};
9QUIT;
Résultat Attendu :
Génère un nouveau modèle `merged_tree_model_detailed` avec les nœuds fusionnés incluant les statistiques d'importance des variables. Le code de scoring prêt à l'emploi est sauvegardé dans la table `tree_score_code`.