neuralNet annTrain

Manejo de Valores Faltantes y Ponderación de Observaciones

Scénario de test & Cas d'usage

Contexto empresarial

Un hospital está analizando datos de pacientes para predecir la probabilidad de reingreso. Los datos clínicos a menudo están incompletos (valores faltantes) y algunos pacientes, debido a la gravedad de su condición, deben tener más peso en el entrenamiento del modelo.
Sobre el conjunto : neuralNet

Entrenamiento de redes neuronales artificiales clásicas.

Descubrir todas las acciones de neuralNet
Preparación de datos

Crea una tabla de pacientes con valores faltantes (representados por '.') en las variables de entrada. También incluye una columna 'Peso' para ponderar las observaciones durante el entrenamiento.

¡Copiado!
1DATA datos_pacientes;
2 call streaminit(789);
3 DO PacienteID = 1 to 2000;
4 Edad = floor(rand('Uniform') * 60) + 20;
5 NumProcedimientos = floor(rand('Uniform') * 10);
6 DiasEstancia = .;
7 IF rand('Uniform') > 0.25 THEN DiasEstancia = floor(rand('Uniform') * 15) + 1;
8 Reingreso = 0;
9 Peso = 1;
10 IF Edad > 65 and rand('Uniform') > 0.5 THEN DO;
11 Reingreso = 1;
12 Peso = 2.5;
13 END;
14 ELSE IF DiasEstancia > 10 and rand('Uniform') > 0.6 THEN Reingreso = 1;
15 OUTPUT;
16 END;
17RUN;
18 
19PROC CAS;
20 TABLE.loadTable / caslib='casuser' path='datos_pacientes.sashdat' casOut={name='pacientes_missing', replace=true};
21QUIT;

Étapes de réalisation

1
Entrenar un modelo GLIM (sin capas ocultas) que imputa los valores faltantes usando la media y aplica la ponderación de observaciones.
¡Copiado!
1PROC CAS;
2 neuralNet.annTrain /
3 TABLE='pacientes_missing',
4 inputs={'Edad', 'NumProcedimientos', 'DiasEstancia'},
5 target='Reingreso',
6 arch='GLIM',
7 errorFunc='ENTROPY',
8 targetAct='LOGISTIC',
9 missing='MEAN',
10 weight='Peso',
11 casOut={name='reingreso_model', replace=true};
12RUN;
2
Intentar entrenar el mismo modelo pero sin especificar una estrategia para valores faltantes ('missing='NONE' es el default). Se espera que la acción falle o emita una advertencia.
¡Copiado!
1PROC CAS;
2 neuralNet.annTrain /
3 TABLE='pacientes_missing',
4 inputs={'Edad', 'NumProcedimientos', 'DiasEstancia'},
5 target='Reingreso',
6 arch='GLIM',
7 errorFunc='ENTROPY',
8 targetAct='LOGISTIC',
9 weight='Peso',
10 casOut={name='reingreso_model_fail', replace=true};
11RUN;
12QUIT;

Resultado esperado


El primer paso debe ejecutarse con éxito. La tabla 'ModelInfo' debe indicar que se utilizó la imputación por la media. El segundo paso debe fallar o generar un error en el log de SAS indicando que se encontraron valores faltantes en las variables de entrada y no se pudieron procesar, validando el comportamiento del parámetro 'missing'.