La acción `bnet` del conjunto de acciones `bayesianNetClassifier` en SAS Viya permite entrenar un clasificador de red bayesiana. Este tipo de modelo es útil para la clasificación predictiva, ya que modela las dependencias probabilísticas entre un conjunto de variables. La acción puede aprender diferentes tipos de estructuras de red (como Naive, TAN, PC) y utiliza esta estructura para clasificar una variable objetivo basándose en las variables de entrada.
| Parámetro | Descripción |
|---|---|
| alpha | Especifica el nivel de significancia para las pruebas de independencia utilizando estadísticas de chi-cuadrado o G-cuadrado. Puede especificar hasta cinco valores para seleccionar el mejor modelo. |
| attributes | Cambia los atributos de las variables utilizadas en esta acción. |
| bestModel | Cuando se establece en True, selecciona el mejor modelo basado en los criterios de validación. |
| code | Genera código de puntuación SAS DATA step o DS2 para aplicar el modelo a nuevos datos. |
| codeGroup | Especifica un grupo de código para la generación de código. |
| display | Especifica una lista de tablas de resultados para enviar al cliente para su visualización. |
| freq | Especifica la variable de frecuencia que contiene el número de veces que se observa cada fila. |
| id | Especifica las variables a copiar de la tabla de entrada a la tabla de salida. |
| indepTest | Especifica el método para las pruebas de independencia (CHISQUARE, GSQUARE, MI, etc.). |
| inNetwork | Especifica la tabla de entrada que define los enlaces a incluir o excluir en la red. |
| inputs | Especifica las variables de entrada a utilizar para el análisis. |
| maxParents | Especifica el número máximo de padres para cada nodo en la red. |
| miAlpha | Especifica el nivel de significancia para las pruebas de independencia que utilizan información mutua. |
| missingInt | Especifica cómo manejar los valores faltantes para las variables de intervalo (IGNORE o IMPUTE). |
| missingNom | Especifica cómo manejar los valores faltantes para las variables nominales (IGNORE, IMPUTE o LEVEL). |
| nominals | Especifica las variables nominales a utilizar para el análisis. |
| numBin | Especifica el número de bins para la discretización de las variables de intervalo. |
| outNetwork | Especifica la tabla de salida para la estructura de la red y las distribuciones de probabilidad. |
| output | Crea una tabla de salida para contener los valores predichos de la variable objetivo. |
| outputTables | Lista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor. |
| parenting | Especifica los métodos de aprendizaje de la estructura (BESTONE o BESTSET). |
| partByFrac | Particiona los datos de entrada en conjuntos de entrenamiento, validación y prueba por fracción. |
| partByVar | Particiona los datos de entrada utilizando una variable que define los roles de las observaciones. |
| preScreening | Especifica el método de cribado inicial para las variables de entrada (ONE para dependientes del objetivo, ZERO para todas). |
| printtarget | Cuando se establece en True, genera nombres para la variable objetivo predicha y las variables de probabilidad predichas. |
| resident | Especifica si la tabla de modelo debe permanecer en memoria después de la ejecución de la acción. |
| saveState | Especifica la tabla en la que se guardará el estado del modelo para puntuaciones futuras. |
| structures | Especifica los tipos de estructura de red a aprender (NAIVE, TAN, PC, MB, GENERAL). |
| table | Especifica la tabla de entrada que contiene los datos de entrenamiento. |
| target | Especifica la variable objetivo (nominal) a predecir. |
| varSelect | Especifica el método de selección de variables más allá del cribado previo. |
Este código crea una tabla en memoria llamada `SAMPLE_DATA` con variables categóricas y una variable objetivo `Target`. Estos datos se utilizarán para entrenar el clasificador de red bayesiana.
| 1 | DATA casuser.SAMPLE_DATA; |
| 2 | call streaminit(123); |
| 3 | DO i = 1 to 1000; |
| 4 | var1 = rand('table', 0.25, 0.5, 0.25); |
| 5 | var2 = rand('table', 0.5, 0.5); |
| 6 | var3 = rand('table', 0.1, 0.2, 0.7); |
| 7 | IF (var1=1 and var3=3) THEN Target = 'A'; |
| 8 | ELSE IF (var2=2) THEN Target = 'B'; |
| 9 | ELSE Target = 'C'; |
| 10 | OUTPUT; |
| 11 | END; |
| 12 | RUN; |
Este ejemplo entrena un clasificador Naive Bayes simple. Utiliza la tabla `SAMPLE_DATA`, define `Target` como la variable objetivo y las `var1`, `var2`, `var3` como entradas nominales. El modelo entrenado se guarda en la tabla `BNET_MODEL`.
| 1 | PROC CAS; |
| 2 | bayesianNetClassifier.bnet / |
| 3 | TABLE={name='SAMPLE_DATA'}, |
| 4 | target='Target', |
| 5 | inputs={{name='var1'}, {name='var2'}, {name='var3'}}, |
| 6 | nominals={'var1', 'var2', 'var3', 'Target'}, |
| 7 | structures={'NAIVE'}, |
| 8 | saveState={name='BNET_MODEL', replace=true}; |
| 9 | RUN; |
Este ejemplo demuestra un uso más complejo. Entrena y compara múltiples estructuras de red (TAN, PC) con diferentes números máximos de padres (1 a 3) y diferentes niveles de significancia (alpha). La acción seleccionará el mejor modelo basado en el error de clasificación en los datos de validación, que se crean particionando los datos de entrada (70% para entrenamiento, 30% para validación).
| 1 | PROC CAS; |
| 2 | bayesianNetClassifier.bnet / |
| 3 | TABLE={name='SAMPLE_DATA'}, |
| 4 | target='Target', |
| 5 | inputs={{name='var1'}, {name='var2'}, {name='var3'}}, |
| 6 | nominals={'var1', 'var2', 'var3', 'Target'}, |
| 7 | partByFrac={validate=0.3, seed=456}, |
| 8 | structures={'TAN', 'PC'}, |
| 9 | maxParents=3, |
| 10 | parenting='BESTSET', |
| 11 | alpha={0.05, 0.1}, |
| 12 | bestModel=true, |
| 13 | outNetwork={name='BNET_NETWORK', replace=true}, |
| 14 | saveState={name='BNET_BEST_MODEL', replace=true}; |
| 15 | RUN; |
Un equipo de marketing desea predecir qué clientes tienen más probabilidades de responder a una nueva campaña basándose en sus datos demográficos e históricos. Se elige un model...
Una institución sanitaria busca un modelo predictivo robusto para ayudar en el diagnóstico de una enfermedad. Es crucial comparar diferentes estructuras de red (TAN, PC) y estra...
Una entidad financiera necesita construir un modelo de riesgo crediticio, pero sus datos de origen contienen valores faltantes en variables clave como el historial laboral y el ...