gam

gamSelect

##set_gam

Description

L'action gamSelect est l'outil ultime pour construire des modèles additifs généralisés (GAMModèle additif généralisé étendant le modèle linéaire en utilisant des fonctions de lissage non linéaires. Il permet de capturer des relations complexes entre les variables sans forme prédéfinie.) de manière automatisée. Contrairement à une approche classique où vous devez deviner quels lissages appliquer, cette action fait le tri pour vous ! Elle utilise des techniques de sélection avancées comme 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.' ou le 'ShrinkageTechnique de régularisation (ex: LASSO, Ridge) qui réduit la variance d'un modèle en pénalisant les coefficients trop élevés, améliorant ainsi la généralisation et évitant le surapprentissage.' (pénalités de type Lasso/RidgeMéthodes de régularisation pénalisant les coefficients : le Lasso peut annuler certaines variables pour simplifier le modèle, tandis que le Ridge les réduit pour limiter le surapprentissage.) pour identifier les variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. et les formes non-linéairesRelations complexes entre variables où le changement de l'une n'entraîne pas une variation proportionnelle de l'autre, nécessitant des modèles avancés (GAM, arbres, splines) pour être capturées. les plus pertinentes. C'est idéal quand on sait que la relation n'est pas une simple ligne droite, mais qu'on n'a pas envie de passer sa nuit à ajuster des degrés de liberté.

Syntaxe Officielle
gam.gamSelect /
table={name="nom_table"},
model={depVars={{name="cible"}}, splines={{vars={"var1"}}, {vars={"var2"}}}},
selection={method="BOOSTING" | "SHRINKAGE"},
output={casOut={name="table_pred"}}

Paramètres Clés

Nom du paramètre Description
table Définit la table de données d'entrée chargée dans CAS. C'est la base de votre exploration.
model Paramètre complexe définissant la structure du modèle : la variable cible (depVars), les effets paramétriques (effets linéaires classiques) et les effets de splines (lissages non-linéaires).
selection Spécifie la méthode de sélection. 'BOOSTING' construit le modèle étape par étape, tandis que 'SHRINKAGE' applique des pénalités globales sur les coefficients pour réduire les termes inutiles à zéro.
partByFrac Permet de partitionner les données à la volée en ensembles d'entraînement, de validation et de test pour garantir que votre modèle ne fait pas que 'parachuter' sur les données connues.
output Définit les statistiques à sauvegarder dans une table CAS de sortie, comme les prédictions (pred) ou les résidus.
store Sauvegarde l'état complet du modèle dans un format binaire. Très utile pour le scoring en temps réel plus tard.

Préparation des données

Génération de données non-linéaires simulées

On crée une table avec deux variables ayant des relations sinusoïdales et quadratiques avec la cible pour tester la détection de courbes.

1DATA casuser.gam_data;
2 DO i = 1 to 1000;
3 x1 = rannor(123);
4 x2 = ranuni(123);
5 x3 = rannor(123);
6 /* Relation non-linéaire complexe */
7 y = 2*sin(x1) + 3*(x2**2) + 0.5*x3 + rannor(123)*0.5;
8 binary_y = (y > 2);
9 OUTPUT;
10 END;
11RUN;

Exemples d'utilisation

Sélection de modèle GAM par Boosting

Un exemple simple pour ajuster un modèle avec deux splines et laisser SAS choisir le meilleur compromis.

1PROC CAS;
2 gam.gamSelect /
3 TABLE={name="gam_data"},
4 model={depVars={{name="y"}},
5 splines={{vars={"x1"}}, {vars={"x2"}}}},
6 selection={method="BOOSTING"};
7RUN;
Résultat Attendu :
Le journal affiche les étapes de sélection et le modèle final avec les splines retenues.
Modèle Logistique GAM complet avec Validation et Scoring

Ici on utilise une distribution binaire, on ajoute un effet linéaire (x3), on partitionne les données et on sauvegarde le modèle.

1PROC CAS;
2 gam.gamSelect /
3 TABLE={name="gam_data"},
4 model={depVars={{name="binary_y"}},
5 dist="BINARY",
6 link="LOGIT",
7 splines={{vars={"x1"}, df=4}, {vars={"x2"}, knots=10}},
8 effects={{vars={"x3"}}}},
9 selection={method="SHRINKAGE", choose="VALIDATE"},
10 partByFrac={test=0.2, validate=0.2, seed=12345},
11 OUTPUT={casOut={name="gam_predictions", replace=true}, copyVars="ALL", pred="prob_event"},
12 store={name="my_gam_model", replace=true};
13RUN;
Résultat Attendu :
Une table 'gam_predictions' est créée avec les probabilités, et un objet 'my_gam_model' est prêt pour l'action gamScore.