mlTools crossValidate

Diagnóstico Médico con Datos Incompletos y Trazabilidad Completa

Scénario de test & Cas d'usage

Contexto empresarial

Un instituto de investigación médica está analizando biomarcadores para predecir una enfermedad rara. Los datos clínicos reales a menudo contienen valores nulos (pacientes que no se hicieron todas las pruebas). Se necesita un modelo de Árbol de Decisión robusto que maneje estos valores faltantes y se requiere un nivel de registro (logging) máximo para auditar exactamente cómo se comportó cada pliegue durante la validación.
Preparación de datos

Creación de un dataset pequeño pero sucio con valores perdidos (.) en variables predictoras clave.

¡Copiado!
1 
2DATA casuser.medical_diagnosis;
3call streaminit(789);
4DO i=1 to 200;
5biomarker_A = rand('Normal', 50, 10);
6IF rand('Uniform') < 0.2 THEN biomarker_B = .;
7ELSE biomarker_B = rand('Normal', 20, 5);
8IF rand('Uniform') < 0.4 THEN disease = 'Pos';
9ELSE disease = 'Neg';
10OUTPUT;
11END;
12 
13RUN;
14 

Étapes de réalisation

1
Inspección de valores nulos
¡Copiado!
1 
2PROC CAS;
3 
4SIMPLE.numRows / TABLE={name='medical_diagnosis', where='biomarker_B is null'};
5 
6RUN;
7 
2
Cross-Validation con Decision Tree y LogLevel Máximo
¡Copiado!
1PROC CAS;
2 mlTools.crossValidate /
3 modelType='DECISIONTREE',
4 kFolds=3,
5 logLevel=3,
6 trainOptions={
7 TABLE={name='medical_diagnosis'},
8 target='disease',
9 inputs={'biomarker_A', 'biomarker_B'},
10 nominals={'disease'}
11 };
12RUN; QUIT;

Resultado esperado


A pesar de los valores nulos en 'biomarker_B', la acción debe finalizar correctamente (el árbol de decisión maneja nativamente los missing values). El log debe ser muy detallado (nivel 3), mostrando explícitamente el inicio y fin de cada uno de los 3 pliegues, permitiendo una auditoría completa del proceso.