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 !
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.
| 1 | PROC 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}; |
| 9 | QUIT; |
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.
| 1 | PROC CAS; |
| 2 | decisionTree.dtreeMerge / |
| 3 | modelTable={name="tree_model"} |
| 4 | nodeId={3, 4} |
| 5 | casOut={name="merged_tree_model", replace=true}; |
| 6 | QUIT; |
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.
| 1 | PROC 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}}; |
| 9 | QUIT; |
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`.