Este ejemplo ilustra cómo aplicar el procedimiento BART para modelar datos de respuesta binarios. Utiliza un conjunto de datos sobre correos electrónicos para predecir si un correo electrónico es spam (variable 'Class'). El procedimiento incluye la partición de los datos en conjuntos de entrenamiento y prueba a través de la variable 'Test' y especifica una distribución binaria para la variable de respuesta. Los resultados incluyen estadísticas de ajuste y una matriz de clasificación para evaluar el rendimiento del modelo. El procedimiento BART es una herramienta de modelado no paramétrico basado en árboles de decisión que es particularmente eficaz para capturar relaciones complejas en los datos.
Análisis de datos
Type : CREATION_INTERNE_ET_SASHELP
Los ejemplos utilizan datos generados a partir de SASHELP.JunkMail o datos sintéticos para casos específicos, garantizando la autonomía de cada bloque de código.
1 Bloque de código
PROC BART Data
Explicación : Este ejemplo muestra el uso mínimo de PROC BART para un modelo probit binario. Carga el conjunto de datos SASHELP.JunkMail en una librería CAS ('mylib') y especifica la variable de respuesta 'Class' con una distribución binaria ('dist=binary'), así como un conjunto reducido de predictores. Se utiliza una partición simple para dividir los datos en conjuntos de entrenamiento y prueba a través de la variable 'Test'.
¡Copiado!
/* 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 Bloque de código
PROC BART Data
Explicación : Este ejemplo extiende el uso de PROC BART incluyendo opciones comunes para la simulación MCMC: el número de cadenas MCMC (NCHAIN=4), el número de iteraciones de calentamiento (NBI=1000), y el número de muestras a conservar (NSAMPLE=5000). La instrucción OUTPUT se utiliza para guardar las predicciones de probabilidad (p=ProbSpam) y la clase predicha (pred=PredictedSpam) en una nueva tabla CAS, permitiendo una evaluación detallada del modelo. Luego se muestra una muestra de las predicciones.
¡Copiado!
/* 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 Bloque de código
PROC BART Data
Explicación : Este ejemplo avanzado ilustra la personalización de los hiperparámetros del árbol BART a través de la instrucción PRIOR, especificando el número de árboles (NTREE=100), el número mínimo de observaciones para una división (NMINSPLIT=5) y para una hoja (NMINLEAF=3). También integra la validación cruzada (CV NCV=5) para evaluar la robustez del modelo. Se crea una nueva variable de interacción 'Length_Exclamation' para demostrar la manipulación de datos antes del modelo. Las predicciones se guardan para un análisis posterior.
¡Copiado!
/* 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 */
Explicación : Este ejemplo destaca la integración de PROC BART con el entorno SAS Viya/CAS. Primero, un modelo BART se entrena y guarda como un elemento rstore (BartModel_rstore) en la librería CAS. Luego, una segunda invocación de PROC BART utiliza la opción RSTORE para cargar este modelo guardado y aplicarlo ('puntuar') en un subconjunto de los datos (aquí, el conjunto de prueba). Las predicciones se guardan en una nueva tabla CAS, y se genera una tabla de frecuencias para evaluar la matriz de clasificación del modelo en los nuevos datos. Esto es esencial para el despliegue y la reutilización eficaz de los modelos en producción.
¡Copiado!
/* 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) */
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.