decisionTree

gbtreeTrain

##set_decisiontree

Description

L'action gbtreeTrain est le moteur de course pour l'entraînement de modèles de boostingTechnique d'apprentissage séquentiel où chaque nouveau modèle corrige les erreurs des précédents. Elle réduit le biais et augmente la précision en pondérant les observations mal classées. de gradient (Gradient BoostingMéthode d'apprentissage itérative créant une suite d'arbres de décision. Chaque nouvel arbre corrige les erreurs de prédiction des précédents pour minimiser globalement la fonction de perte. Trees) dans SAS Viya. Contrairement à une forêt aléatoireAlgorithme d'apprentissage supervisé combinant plusieurs arbres de décision indépendants pour améliorer la précision et réduire le surapprentissage par agrégation de leurs prédictions. qui vote à la majorité, le boostingTechnique d'apprentissage séquentiel où chaque nouveau modèle corrige les erreurs des précédents. Elle réduit le biais et augmente la précision en pondérant les observations mal classées. est une approche séquentielle où chaque nouvel arbre est un petit génie chargé de corriger les bêtises (les résidus) commises par ses prédécesseurs. C'est l'outil indispensable pour obtenir des performances prédictives de haut vol, que ce soit pour de la classification binaire ou de la régression.

Syntaxe Officielle
decisionTree.gbtreeTrain /
table={name="nom_table", caslib="nom_caslib", where="filtre"},
target="variable_cible",
inputs={"variable_1", "variable_2"},
nominals={"variable_nominale_1"},
nTree=50,
learningRate=0.1,
maxLevel=5,
lasso=0,
ridge=1,
casOut={name="nom_table_modele", replace=true};

Paramètres Clés

Nom du paramètre Description
table La table source contenant les données d'entraînement. C'est ici que tout commence !
target La variable que vous essayez de prédire. Si elle est numérique et non déclarée dans 'nominals', le modèle partira sur une régression.
inputs La liste des variables explicatives (prédicteurs) que l'algorithme doit utiliser pour apprendre.
nTree Le nombre d'itérations, soit le nombre total d'arbres à construire. Plus il y en a, plus c'est précis, mais attention au surapprentissage (overfitting) !
learningRate Aussi appelé 'shrinkage'. Il contrôle la contribution de chaque arbre au modèle final. Une valeur faible (ex: 0.01) nécessite plus d'arbres mais donne souvent un meilleur modèle.
distribution Définit la fonction de perte (Loss function) : BINARY (classification), GAUSSIAN (régression), POISSON ou TWEEDIE.
maxLevel La profondeur maximale de chaque arbre. Inutile de creuser jusqu'au centre de la Terre, une valeur entre 3 et 10 suffit généralement.
lasso / ridge Paramètres de régularisation L1 et L2. Ils aident à garder les feuilles de vos arbres sous contrôle pour éviter que le modèle ne devienne trop complexe.
saveState Permet de sauvegarder le modèle sous forme de 'store' binaire (analytic store), idéal pour un déploiement rapide en production.

Préparation des données

Préparation des données HMEQ

Nous utilisons le jeu de données classique HMEQ (Home Equity) pour prédire le risque de défaut de paiement.

1PROC CAS;
2 TABLE.loadTable / path="hmeq.sashdat", caslib="casuser", casout={name="hmeq", replace=true};
3RUN;

Exemples d'utilisation

Entraînement de base

Un exemple minimal pour lancer votre premier boosting sur la variable 'BAD'.

1PROC CAS;
2 decisionTree.gbtreeTrain / TABLE={name="hmeq"}, target="BAD", inputs={"LOAN", "MORTDUE", "VALUE"}, casOut={name="gb_model_simple", replace=true};
3RUN;
Résultat Attendu :
Une table CAS contenant la structure du modèle et des statistiques de base sur l'itération.
Boosting optimisé avec régularisation et importance des variables

Ici, on passe aux choses sérieuses : 100 arbres, un taux d'apprentissage de 0.05, de la régularisation Ridge et le calcul de l'importance des variables.

1PROC CAS;
2 decisionTree.gbtreeTrain /
3 TABLE={name="hmeq"},
4 target="BAD",
5 inputs={"LOAN", "MORTDUE", "VALUE", "REASON", "JOB", "DEROG", "DELINQ"},
6 nominals={"BAD", "REASON", "JOB"},
7 distribution="BINARY",
8 nTree=100,
9 learningRate=0.05,
10 maxLevel=6,
11 subSampleRate=0.7,
12 ridge=1.5,
13 seed=42,
14 varImp=true,
15 casOut={name="gb_model_final", replace=true},
16 saveState={name="gb_astore", replace=true};
17RUN;
Résultat Attendu :
Le modèle est entraîné avec une sortie détaillée incluant l'importance des variables et un Analytic Store prêt à l'emploi.