gamSelect
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é.
Paramètres Clés
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.
| 1 | DATA 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; |
| 11 | RUN; |
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.
| 1 | PROC CAS; |
| 2 | gam.gamSelect / |
| 3 | TABLE={name="gam_data"}, |
| 4 | model={depVars={{name="y"}}, |
| 5 | splines={{vars={"x1"}}, {vars={"x2"}}}}, |
| 6 | selection={method="BOOSTING"}; |
| 7 | RUN; |
Résultat Attendu :
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.
| 1 | PROC 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}; |
| 13 | RUN; |