logistic
Description
L'action `logistic` du set d'actions `regression` est le véritable couteau suisse pour ajuster des modèles de régression logistiqueModèle statistique prédisant la probabilité d'un événement binaire (0/1) via une fonction logistique. Il lie des variables explicatives à une variable cible catégorielle. binaire, binomiale ou multinomiale dans l'environnement distribué SAS Viya. Que ce soit pour prédire l'attrition de vos clients (le fameux churn) ou classer des transactions frauduleuses, cette action fait le gros du travail statistique avec des fonctionnalités avancées comme la sélection de 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. (LASSO, Stepwise) et le partitionnement de données intégré. Bref, c'est l'indispensable pour tout Data ScientistExpert exploitant SAS Viya pour extraire des connaissances via le Machine Learning et les statistiques, afin de résoudre des problèmes métier complexes à partir de données massives. qui se respecte ! Source :
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | Spécifie la table de données d'entrée CAS à utiliser pour l'analyse. Parce qu'évidemment, un modèle sans données, c'est comme une requête sans clause SELECT. |
| model | Définit l'architecture de votre modèle : la variable cible dépendante (`depVars`), les variables explicatives (`effects`), ainsi que les options comme la fonction de lien (`link`) ou le type de distribution (`dist`). |
| class | Liste les variables catégorielles (ou variables de classification) à utiliser comme variables explicatives. L'action s'occupera toute seule de la création des variables muettes (dummy variables). |
| selection | Active la magie de la sélection automatique de variables (FORWARD, BACKWARD, STEPWISE, LASSO, ELASTICNET, etc.) pour ne retenir que les effets qui ont un réel impact prédictif. |
| output | Génère une table de sortie CAS contenant des statistiques détaillées au niveau de l'observation, comme les probabilités prédites ou les différents types de résidus. |
| store | Permet de sauvegarder votre modèle fraîchement entraîné sous la forme d'un objet binaire analytique (ASTORE), parfait pour être réutilisé en production sur de nouvelles données. |
| partByFrac | Divise (partitionne) vos données de manière aléatoire en générant des sous-ensembles d'entraînement, de validation et de test selon les fractions spécifiées. |
Préparation des données
Création d'un jeu de données de diagnostic médical
Afin de pouvoir tester notre modèle de régression logistique, nous allons générer une table CAS simulant des profils de patients. L'objectif sera de prédire s'ils sont 'malades' (1) ou non (0) en fonction de variables prédictives telles que l'âge, le sexe et la pression artérielle.
| 1 | cas monCasSession; |
| 2 | LIBNAME mycas cas; |
| 3 | DATA mycas.patients; |
| 4 | call streaminit(12345); |
| 5 | DO id = 1 to 2000; |
| 6 | age = round(rand('uniform') * 60 + 20); |
| 7 | sexe = ifc(rand('uniform') > 0.5, 'M', 'F'); |
| 8 | pression = round(rand('normal', 120, 15)); |
| 9 | /* Creation d'une probabilite logistique basee sur les variables */ |
| 10 | log_odds = -5 + 0.05*age + 0.02*pression + ifn(sexe='M', 0.5, 0); |
| 11 | p = exp(log_odds) / (1 + exp(log_odds)); |
| 12 | /* Assignation de la cible en fonction de la probabilite */ |
| 13 | malade = (rand('uniform') < p); |
| 14 | OUTPUT; |
| 15 | END; |
| 16 | RUN; |
Exemples d'utilisation
Régression Logistique Simple (Binaire)
Cet exemple illustre la configuration minimale pour exécuter un modèle logistique de base visant à prédire l'événement `malade=1`.
| 1 | PROC CAS; |
| 2 | regression.logistic / |
| 3 | TABLE={name="patients"} |
| 4 | class={"sexe"} |
| 5 | model={ |
| 6 | depVars={{name="malade", options={event="1"}}}, |
| 7 | effects={{vars={"age", "sexe", "pression"}}} |
| 8 | }; |
| 9 | QUIT; |
Résultat Attendu :
Régression Logistique Avancée avec Sélection Stepwise, Partitionnement et Sauvegarde ASTORE
Ici, nous passons à la vitesse supérieure ! Ce flux complet inclut : un partitionnement des données (70% entraînement / 30% test), une sélection automatique des caractéristiques via la méthode 'Stepwise' minimisant le critère AIC, la création d'une table de prédictions, et l'enregistrement du modèle sous forme de fichier ASTORE pour un déploiement futur.
| 1 | PROC CAS; |
| 2 | regression.logistic / |
| 3 | TABLE={name="patients"} |
| 4 | class={"sexe"} |
| 5 | model={ |
| 6 | depVars={{name="malade", options={event="1"}}}, |
| 7 | effects={{vars={"age", "sexe", "pression"}}} |
| 8 | } |
| 9 | partByFrac={test=0.3, seed=802} |
| 10 | selection={method="STEPWISE", select="AIC", details="SUMMARY"} |
| 11 | OUTPUT={ |
| 12 | casOut={name="patients_scores", replace=true}, |
| 13 | pred="Prob_Maladie_Predite", |
| 14 | into="Classe_Predite", |
| 15 | copyVars={"id", "malade"} |
| 16 | } |
| 17 | store={name="astore_modele_maladie", replace=true}; |
| 18 | QUIT; |