Cet exemple illustre comment appliquer la procédure BART pour modéliser des données de réponse binaires. Il utilise un jeu de données sur les emails pour prédire si un email est du spam (variable 'Class'). La procédure inclut le partitionnement des données en ensembles d'entraînement et de test via la variable 'Test' et spécifie une distribution binaire pour la variable de réponse. Les résultats comprennent des statistiques d'ajustement et une matrice de classification pour évaluer la performance du modèle. La procédure BART est un outil de modélisation non-paramétrique basé sur des arbres de décision qui est particulièrement efficace pour capturer des relations complexes dans les données.
Analyse des données
Type : CREATION_INTERNE_ET_SASHELP
Les exemples utilisent des données générées à partir de SASHELP.JunkMail ou des données synthétiques pour des cas spécifiques, garantissant l'autonomie de chaque bloc de code.
1 Bloc de code
PROC BART Data
Explication : Cet exemple montre l'utilisation minimale de PROC BART pour un modèle probit binaire. Il charge le jeu de données SASHELP.JunkMail dans une librairie CAS ('mylib') et spécifie la variable de réponse 'Class' avec une distribution binaire ('dist=binary'), ainsi qu'un ensemble réduit de prédicteurs. Un partitionnement simple est utilisé pour diviser les données en ensembles d'entraînement et de test via la variable 'Test'.
Copié !
/* Préparation des données dans CAS */
cas;
libname mylib cas;
data mylib.JunkMail;
set Sashelp.JunkMail;
run;
/* Utilisation Basique de PROC BART pour un modèle probit binaire */
proc bart data=mylib.JunkMail seed=12345;
model Class = Make Address All _3d Our Internet Order / dist=binary;
partition rolevar=Test(train='0' test='1');
run;
1
/* Préparation des données dans CAS */
2
cas;
3
LIBNAME mylib cas;
4
5
DATA mylib.JunkMail;
6
SET Sashelp.JunkMail;
7
RUN;
8
9
/* Utilisation Basique de PROC BART pour un modèle probit binaire */
10
PROC BARTDATA=mylib.JunkMail seed=12345;
11
model Class = Make Address All _3d Our Internet Order / dist=binary;
12
partition rolevar=Test(train='0' test='1');
13
RUN;
2 Bloc de code
PROC BART Data
Explication : Cet exemple étend l'utilisation de PROC BART en incluant des options courantes pour la simulation MCMC : le nombre de chaînes MCMC (NCHAIN=4), le nombre d'itérations de préchauffage (NBI=1000), et le nombre d'échantillons à conserver (NSAMPLE=5000). L'instruction OUTPUT est utilisée pour sauvegarder les prédictions de probabilité (p=ProbSpam) et la classe prédite (pred=PredictedSpam) dans une nouvelle table CAS, permettant une évaluation détaillée du modèle. Un échantillon des prédictions est ensuite affiché.
Copié !
/* Préparation des données dans CAS */
cas;
libname mylib cas;
data mylib.JunkMail;
set Sashelp.JunkMail;
run;
/* Options courantes et sortie des prédictions */
proc bart data=mylib.JunkMail seed=67890;
model Class = Make Address All _3d Our Internet Order Mail Receive Will / dist=binary;
/* Options MCMC pour une meilleure convergence et stabilité */
mcmc nchain=4 nbi=1000 nsample=5000;
partition rolevar=Test(train='0' test='1');
/* Sauvegarde les prédictions et probabilités dans une table CAS */
output out=mylib.BartPredictions copyvars=(Class Test) p=ProbSpam pred=PredictedSpam;
run;
/* Afficher les premières lignes des prédictions */
proc print data=mylib.BartPredictions(obs=10);
run;
1
/* Préparation des données dans CAS */
2
cas;
3
LIBNAME mylib cas;
4
5
DATA mylib.JunkMail;
6
SET Sashelp.JunkMail;
7
RUN;
8
9
/* Options courantes et sortie des prédictions */
10
PROC BARTDATA=mylib.JunkMail seed=67890;
11
model Class = Make Address All _3d Our Internet Order Mail Receive Will / dist=binary;
12
/* Options MCMC pour une meilleure convergence et stabilité */
13
mcmc nchain=4 nbi=1000 nsample=5000;
14
partition rolevar=Test(train='0' test='1');
15
/* Sauvegarde les prédictions et probabilités dans une table CAS */
/* Afficher les premières lignes des prédictions */
20
PROC PRINTDATA=mylib.BartPredictions(obs=10);
21
RUN;
3 Bloc de code
PROC BART Data
Explication : Cet exemple avancé illustre la personnalisation des hyperparamètres de l'arbre BART via l'instruction PRIOR, en spécifiant le nombre d'arbres (NTREE=100), le nombre minimum d'observations pour un split (NMINSPLIT=5) et pour une feuille (NMINLEAF=3). Il intègre également la validation croisée (CV NCV=5) pour évaluer la robustesse du modèle. Une nouvelle variable d'interaction 'Length_Exclamation' est créée pour démontrer une manipulation de données avant le modèle. Les prédictions sont sauvegardées pour une analyse ultérieure.
Copié !
/* Préparation des données dans CAS */
cas;
libname mylib cas;
data mylib.JunkMail;
set Sashelp.JunkMail;
/* Exemple de transformation de variable: créer une variable d'interaction simple */
Length_Exclamation = Length * Exclamation;
run;
/* Cas Avancé : hyperparamètres, validation croisée */
proc bart data=mylib.JunkMail seed=112233;
model Class = Make Address All _3d Our Internet Order Mail Receive Will People Report Length_Exclamation / dist=binary;
/* Personnalisation des hyperparamètres de l'arbre BART */
prior bart ntree=100 nminsplit=5 nminleaf=3;
/* Utilisation de la validation croisée (5 plis) pour évaluer la robustesse du modèle */
cv ncv=5 foldvar=Test(train='0' test='1');
output out=mylib.BartAdvancedPred p=ProbSpam pred=PredictedSpam;
run;
1
/* Préparation des données dans CAS */
2
cas;
3
LIBNAME mylib cas;
4
5
DATA mylib.JunkMail;
6
SET Sashelp.JunkMail;
7
/* Exemple de transformation de variable: créer une variable d'interaction simple */
8
Length_Exclamation = LENGTH * Exclamation;
9
RUN;
10
11
/* Cas Avancé : hyperparamètres, validation croisée */
12
PROC BARTDATA=mylib.JunkMail seed=112233;
13
model Class = Make Address All _3d Our Internet Order Mail Receive Will People Report Length_Exclamation / dist=binary;
14
/* Personnalisation des hyperparamètres de l'arbre BART */
15
prior bart ntree=100 nminsplit=5 nminleaf=3;
16
/* Utilisation de la validation croisée (5 plis) pour évaluer la robustesse du modèle */
Explication : Cet exemple met en évidence l'intégration de PROC BART avec l'environnement SAS Viya/CAS. Premièrement, un modèle BART est entraîné et sauvegardé en tant qu'élément rstore (BartModel_rstore) dans la librairie CAS. Ensuite, une seconde invocation de PROC BART utilise l'option RSTORE pour charger ce modèle sauvegardé et l'appliquer ('scorer') sur un sous-ensemble des données (ici, l'ensemble de test). Les prédictions sont sauvegardées dans une nouvelle table CAS, et une table de fréquences est générée pour évaluer la matrice de classification du modèle sur les nouvelles données. Ceci est essentiel pour le déploiement et la réutilisation efficace des modèles en production.
Copié !
/* Préparation des données dans CAS */
cas;
libname mylib cas;
data mylib.JunkMail;
set Sashelp.JunkMail;
run;
/* Entraînement et sauvegarde du modèle BART */
proc bart data=mylib.JunkMail seed=445566;
model Class = Make Address All _3d Our Internet Order Mail Receive Will People Report Addresses Free Business / dist=binary;
partition rolevar=Test(train='0' test='1');
/* Sauvegarde le modèle entraîné dans CAS pour réutilisation */
save rstore=mylib.BartModel_rstore;
run;
/* Chargement du modèle sauvegardé et score sur de nouvelles données (ici l'ensemble de test) */
proc bart data=mylib.JunkMail(where=(Test='1')) rstore=mylib.BartModel_rstore;
score out=mylib.BartScoredData copyvars=(Class Test) p=ScoreProb pred=ScorePred;
run;
/* Vérifier les résultats du scoring */
proc freq data=mylib.BartScoredData;
tables Class*ScorePred;
run;
proc print data=mylib.BartScoredData(obs=10);
run;
1
/* Préparation des données dans CAS */
2
cas;
3
LIBNAME mylib cas;
4
5
DATA mylib.JunkMail;
6
SET Sashelp.JunkMail;
7
RUN;
8
9
/* Entraînement et sauvegarde du modèle BART */
10
PROC BARTDATA=mylib.JunkMail seed=445566;
11
model Class = Make Address All _3d Our Internet Order Mail Receive Will People Report Addresses Free Business / dist=binary;
12
partition rolevar=Test(train='0' test='1');
13
/* Sauvegarde le modèle entraîné dans CAS pour réutilisation */
14
save rstore=mylib.BartModel_rstore;
15
RUN;
16
17
/* Chargement du modèle sauvegardé et score sur de nouvelles données (ici l'ensemble de test) */
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.
« La procédure PROC BART (Bayesian Additive Regression Trees) représente une avancée majeure dans l'arsenal analytique de SAS Viya, offrant une alternative non-paramétrique puissante aux modèles logistiques classiques. Son application au modèle Probit pour données binaires est particulièrement pertinente : au lieu de supposer une relation linéaire stricte entre les prédicteurs (comme les mots-clés "Make" ou "Our" dans la détection de spam), BART construit une somme d'arbres de décision "faibles". Cette structure permet de capturer naturellement des interactions complexes et des non-linéarités sans nécessiter de spécification manuelle fastidieuse, tout en offrant une régularisation intrinsèque qui prévient le surapprentissage. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.