SAS PROC PLM : Comment industrialiser vos scores de régression logistique

Niveau de difficulté
Expert
Publié le :
Stéphanie

Le Conseil de l'Expert

Stéphanie
Spécialiste Machine Learning et IA.

L'utilisation de la procédure PROC PLM couplée à l'instruction STORE représente une avancée majeure dans l'industrialisation des modèles de scoring sous SAS. Cette approche permet de séparer physiquement la phase complexe d'apprentissage (réalisée ici par la PROC LOGISTIC avec une sélection descendante backward) de la phase de déploiement. En enregistrant l'intelligence du modèle dans un "Item Store" (painmodel), vous créez un objet binaire persistant qui encapsule non seulement les coefficients, mais aussi toute la logique de classification (gestion des variables de classe, formats et interactions).

L'expertise technique réside dans la flexibilité du scoring. Une fois le modèle restauré par la PROC PLM, il devient possible d'appliquer des prédictions sur des jeux de données aux structures variées (score1, score2, score3) sans avoir à réexécuter la procédure de modélisation initiale. C'est un gain de performance considérable pour les environnements de production. De plus, la PROC PLM est capable de gérer intelligemment les données manquantes ou les variables absentes des tables de scoring, à condition que les variables explicatives clés du modèle (Treatment, Age, Duration) soient présentes ou substituables.

Une astuce d'expert : l'utilisation de l'option predicted dans l'instruction score renvoie la probabilité prédite de l'événement. Pour un scoring complet, vous pourriez également ajouter les options lcl et ucl pour obtenir les intervalles de confiance de ces probabilités, offrant ainsi une mesure de la fiabilité de la prédiction pour chaque nouveau profil de patient.

Le script commence par créer un jeu de données 'Neuralgia' via une étape DATA STEP avec des données en ligne (datalines). Il trie ensuite ces données par sexe. Une procédure LOGISTIC est exécutée pour modéliser la variable 'Pain' en fonction de 'Treatment', 'Age' et 'Duration', en utilisant une sélection descendante (backward) des variables. Le modèle est stocké dans l'item store 'painmodel'. Trois tables de scoring ('score1', 'score2', 'score3') sont créées. Enfin, PROC PLM restaure le modèle 'painmodel' et l'applique pour prédire les résultats sur ces trois tables, générant 'score1out', 'score2out', et 'score3out', qui sont ensuite affichés.
Analyse des données

Type : CREATION_INTERNE


Toutes les données sont créées au sein du script via des étapes DATA STEP et l'instruction DATALINES. Aucune lecture de source externe n'est effectuée.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc de code crée la table SAS 'Neuralgia' dans la librairie WORK. Les données sont lues directement depuis le code grâce à l'instruction 'datalines'. L'instruction 'input' définit les variables à lire pour chaque enregistrement.
Copié !
1DATA Neuralgia;
2 INPUT Treatment $ Sex $ Age Duration Pain $ @;
3 DATALINES;
4P F 68 1 No B M 74 16 No P F 67 30 No
5P M 66 26 Yes B F 67 28 No B F 77 16 No
6A F 71 12 No B F 72 50 No B F 76 9 Yes
7A M 71 17 Yes A F 63 27 No A F 69 18 Yes
8B F 66 12 No A M 62 42 No P F 64 1 Yes
9A F 64 17 No P M 74 4 No A F 72 25 No
10P M 70 1 Yes B M 66 19 No B M 59 29 No
11A F 64 30 No A M 70 28 No A M 69 1 No
12B F 78 1 No P M 83 1 Yes B F 69 42 No
13B M 75 30 Yes P M 77 29 Yes P F 79 20 Yes
14A M 70 12 No A F 69 12 No B F 65 14 No
15B M 70 1 No B M 67 23 No A M 76 25 Yes
16P M 78 12 Yes B M 77 1 Yes B F 69 24 No
17P M 66 4 Yes P F 65 29 No P M 60 26 Yes
18A M 78 15 Yes B M 75 21 Yes A F 67 11 No
19P F 72 27 No P F 70 13 Yes A M 75 6 Yes
20B F 65 7 No P F 68 27 Yes P M 68 11 Yes
21P M 67 17 Yes B M 70 22 No A M 65 15 No
22P F 67 1 Yes A M 67 10 No P F 72 11 Yes
23A F 74 1 No B M 80 21 Yes A F 69 3 No
24;
25/* Note: The file path in the original input statement was ignored as it is not valid SAS syntax and data is provided via 'datalines'. */
2 Bloc de code
PROC SORT
Explication :
Cette procédure trie la table 'Neuralgia' en fonction de la variable 'sex'. Ce tri est requis car la procédure 'PROC LOGISTIC' suivante utilise une instruction 'BY'.
Copié !
1PROC SORT DATA=Neuralgia;
2 BY sex;
3RUN;
3 Bloc de code
PROC LOGISTIC
Explication :
Ce bloc exécute une régression logistique sur la table 'Neuralgia'. Le modèle cherche à prédire la variable binaire 'pain'. L'instruction 'class' définit 'Treatment' comme une variable catégorielle. L'option 'selection=backward' demande à la procédure de retirer itérativement les variables non significatives du modèle. L'analyse est effectuée séparément pour chaque valeur de la variable 'sex' (grâce à l'instruction 'by'). Enfin, 'store painmodel' sauvegarde les informations du modèle ajusté dans un item store nommé 'painmodel' pour une utilisation ultérieure.
Copié !
1PROC LOGISTIC DATA=Neuralgia;
2 class Treatment / param=glm;
3 model pain = Treatment Age Duration / selection=backward;
4 BY sex;
5 store painmodel;
6 title 'Logistic Model on Neuralgia';
7RUN;
4 Bloc de code
DATA STEP Data
Explication :
Ces trois étapes DATA STEP créent les tables de données qui seront utilisées pour le scoring. 'score1' est créée avec de nouvelles données. 'score2' est une copie de 'score1' sans la variable 'sex'. 'score3' est une copie de 'score2' sans la variable 'Age'. Cela permet de tester le comportement du scoring avec des variables manquantes.
Copié !
1DATA score1;
2 INPUT Treatment $ Sex $ Age;
3 DATALINES;
4A F 20
5B F 30
6P F 40
7A M 20
8B M 30
9P M 40
10;
11 
12DATA score2;
13 SET score1(drop=sex);
14RUN;
15 
16DATA score3;
17 SET score2(drop=Age);
18RUN;
5 Bloc de code
PROC PLM Data
Explication :
La procédure PLM (Post-Fitting Linear Models) est utilisée ici pour le scoring. Elle commence par restaurer le modèle sauvegardé 'painmodel'. Ensuite, l'instruction 'score' applique ce modèle aux trois tables 'score1', 'score2' et 'score3' pour calculer les prédictions. Les résultats (incluant la probabilité prédite) sont stockés dans les tables de sortie respectives 'score1out', 'score2out' et 'score3out'.
Copié !
1PROC PLM restore=painmodel;
2 score DATA=score1 out=score1out predicted;
3 score DATA=score2 out=score2out predicted;
4 score DATA=score3 out=score3out predicted;
5RUN;
6 Bloc de code
PROC PRINT
Explication :
Ces trois procédures affichent simplement le contenu des trois tables de résultats ('score1out', 'score2out', 'score3out') générées par l'étape de scoring de PROC PLM.
Copié !
1PROC PRINT DATA=score1out;
2RUN;
3 
4PROC PRINT DATA=score2out;
5RUN;
6 
7PROC PRINT DATA=score3out;
8RUN;
L'Astuce Pro
Pour industrialiser vos modèles sans dépendre de la disponibilité des données d'origine, l'astuce technique consiste à utiliser l'instruction STORE dans la PROC LOGISTIC pour créer un item store (painmodel) : ce fichier binaire autonome contient non seulement les coefficients, mais aussi toute la logique de construction des variables (encodage CLASS, sélection de variables), ce qui permet à la PROC PLM de calculer des scores sur de nouvelles tables (score1, score2, etc.) sans avoir à redéclarer les paramètres du modèle ni même à réexécuter l'étape de régression initiale.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : S A S S A M P L E L I B R A R Y