decisionTree

dtreeSplit

##set_decisiontree

Description

L'action `dtreeSplit` permet d'étendre ou de modifier un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). d'arbre de décision existant en divisant ses nœuds feuilles. Plutôt que de reconstruire un arbre depuis le début, cette action vous permet de faire de la micro-chirurgie sur votre modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). : vous pouvez diviser automatiquement tous les nœuds terminaux selon le meilleur critère, ou bien spécifier un nœud précis à diviser avec vos propres règles. C'est un peu comme sculpter un bonsaï, mais avec des algorithmes ! Elle nécessite la table de données d'entraînement et la table du modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). actuel, et produit un nouveau modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). mis à jour.

Syntaxe Officielle
proc cas;
decisionTree.dtreeSplit
table={name="donnees_entrainement"}
modelTable={name="modele_initial"}
target="variable_cible"
inputs={"var1", "var2"}
nodeId={0}
casOut={name="modele_mis_a_jour", replace=True};
quit;

Paramètres Clés

Nom du paramètre Description
modelTable Spécifie la table contenant le modèle d'arbre existant à modifier.
table Spécifie la table d'entrée (données d'apprentissage) utilisée pour calculer les nouvelles divisions.
target Spécifie la variable cible (réponse) de l'arbre de décision.
inputs Spécifie les variables prédictives (caractéristiques) à utiliser dans l'analyse.
casOut Spécifie la table où enregistrer le nouveau modèle généré.
nodeId Spécifie les identifiants (ID) des nœuds feuilles à diviser. Si ignoré, tous les nœuds terminaux valides seront divisés.
userDefinedSplit Permet de forcer manuellement une règle de division spécifique pour un nœud unique.
crit Spécifie le critère mathématique de séparation (GINI, VARIANCE, CHAID, etc.).
prune Indique s'il faut appliquer une méthode d'élagage (comme C4.5) suite aux divisions.

Préparation des données

Génération de données et d'un modèle initial

Création d'une table avec une cible binaire et deux caractéristiques, suivie de l'entraînement d'un arbre de base avec `dtreeTrain`.

1DATA mycas.mydata; drop i; DO i=1 to 1000; y = rand("Uniform") > 0.5; x1 = rand("Normal"); x2 = rand("Uniform"); OUTPUT; END; RUN; PROC CAS; decisionTree.dtreeTrain / TABLE={name="mydata"} target="y" inputs={"x1", "x2"} nominals={"y"} maxLevel=2 casOut={name="mymodel", replace=true}; RUN; QUIT;

Exemples d'utilisation

Division automatique des nœuds feuilles

Cet exemple prend un arbre existant (de profondeur 2 par exemple) et tente d'ajouter une séparation supplémentaire à chaque nœud terminal.

1PROC CAS; decisionTree.dtreeSplit / TABLE={name="mydata"} modelTable={name="mymodel"} target="y" inputs={"x1", "x2"} nominals={"y"} casOut={name="mymodel_split", replace=true}; RUN; QUIT;
Résultat Attendu :
Un arbre de décision plus profond est généré dans la table 'mymodel_split'.
Division ciblée et personnalisée d'un nœud

Ici, nous ciblons le nœud racine (nodeId 0) et le divisons de force en utilisant la variable 'x1' avec un point de coupure à 0.5. Parfait pour ajuster un arbre basé sur l'expertise métier.

1PROC CAS; decisionTree.dtreeSplit / TABLE={name="mydata"} modelTable={name="mymodel"} target="y" inputs={"x1", "x2"} nominals={"y"} nodeId={0} userDefinedSplit={splitVar="x1", intervalSplit={0.5}} casOut={name="mymodel_custom", replace=true}; RUN; QUIT;
Résultat Attendu :
Le modèle est mis à jour en forçant une division spécifique sur le nœud 0, et sauvegardé sous 'mymodel_custom'.