bayesianNetClassifier bnet

Selección del Mejor Modelo de Red Bayesiana para Ayuda al Diagnóstico Médico

Scénario de test & Cas d'usage

Contexto empresarial

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 estrategias de aprendizaje para maximizar la precisión del diagnóstico, utilizando un conjunto de datos voluminoso con variables de síntomas y resultados de pruebas.
Sobre el conjunto : bayesianNetClassifier

Clasificación utilizando redes bayesianas.

Descubrir todas las acciones de bayesianNetClassifier
Preparación de datos

Crea una tabla de gran volumen (50,000 pacientes) con síntomas (nominales) y resultados de pruebas (intervalo). La variable objetivo es el diagnóstico final.

¡Copiado!
1DATA casuser.PACIENTES_DIAGNOSTICO;
2 call streaminit(1234);
3 LENGTH Fiebre $ 6 Tos $ 2 Dolor_Cabeza $ 7 Diagnostico $ 12;
4 DO i = 1 to 50000;
5 Fiebre = ifn(rand('uniform') < 0.4, 'Alta', 'Normal');
6 Tos = ifn(rand('uniform') < 0.5, 'Si', 'No');
7 Dolor_Cabeza = ifn(rand('uniform') < 0.3, 'Intenso', 'Leve');
8 Presion_Arterial = 90 + 60 * rand('uniform');
9 Nivel_Colesterol = 150 + 100 * rand('uniform');
10 IF (Fiebre='Alta' and Tos='Si' and Presion_Arterial > 130) THEN Diagnostico = 'Enfermedad_X';
11 ELSE IF (Dolor_Cabeza='Intenso' and Nivel_Colesterol > 220) THEN Diagnostico = 'Enfermedad_Y';
12 ELSE Diagnostico = 'Sano';
13 OUTPUT;
14 END;
15RUN;

Étapes de réalisation

1
Carga de la tabla de pacientes en la memoria de CAS.
¡Copiado!
1PROC CAS;
2 TABLE.loadTable /
3 caslib='CASUSER' path='PACIENTES_DIAGNOSTICO.sashdat' casout={name='PACIENTES_DIAGNOSTICO', replace=true};
4RUN;
2
Entrenar y comparar modelos TAN y PC, usando partición de datos, `parenting='BESTSET'` para una búsqueda exhaustiva y `bestModel=true` para la selección automática del mejor modelo.
¡Copiado!
1PROC CAS;
2 bayesianNetClassifier.bnet /
3 TABLE={name='PACIENTES_DIAGNOSTICO'},
4 target='Diagnostico',
5 inputs={{name='Fiebre'}, {name='Tos'}, {name='Dolor_Cabeza'}, {name='Presion_Arterial'}, {name='Nivel_Colesterol'}},
6 nominals={'Fiebre', 'Tos', 'Dolor_Cabeza', 'Diagnostico'},
7 partByFrac={validate=0.3, seed=5678},
8 structures={'TAN', 'PC'},
9 maxParents=2,
10 parenting='BESTSET',
11 numBin=5,
12 bestModel=true,
13 outNetwork={name='RED_DIAGNOSTICO', replace=true},
14 saveState={name='MODELO_DIAGNOSTICO_OPTIMO', replace=true};
15RUN;

Resultado esperado


La acción debe ejecutarse sin problemas de rendimiento, evaluar los modelos TAN y PC en el conjunto de validación y seleccionar el mejor. Se deben crear las tablas `MODELO_DIAGNOSTICO_OPTIMO` (el estado del modelo ganador) y `RED_DIAGNOSTICO` (la estructura de red del modelo ganador). Los resultados en el log deben indicar claramente qué estructura y parámetros fueron seleccionados como los mejores.