neuralNet annCode

Extracción de Características con Autoencoder para Datos de Sensores

Scénario de test & Cas d'usage

Contexto empresarial

Una empresa de manufactura utiliza un modelo de autoencoder para la detección de anomalías y la reducción de dimensionalidad en datos de alta frecuencia provenientes de 50 sensores de maquinaria. Se necesita generar un código de scoring que no solo prediga la salida, sino que también exponga los valores de la capa oculta (el 'cuello de botella') para usarlos como nuevas características en otros modelos.
Sobre el conjunto : neuralNet

Entrenamiento de redes neuronales artificiales clásicas.

Descubrir todas las acciones de neuralNet
Preparación de datos

Se crea una tabla ancha ('datos_sensores') con 50 variables numéricas simulando lecturas de sensores. Luego, se entrena un modelo de autoencoder (entradas = objetivos) con una arquitectura que incluye una capa oculta de 5 neuronas, y se guarda en 'modelo_autoencoder'.

¡Copiado!
1PROC CAS;
2 LOADACTIONSET 'dataStep';
3 dataStep.runCode / code='data mycas.datos_sensores(keep=sensor1-sensor50); array sensors[50] sensor1-sensor50; do i = 1 to 1000; do j = 1 to 50; sensors[j] = rand("Normal", 100, 5); end; output; end; run;';
4 
5 LOADACTIONSET 'neuralNet';
6 annTrain /
7 TABLE='datos_sensores',
8 inputs={'sensor1'-'sensor50'},
9 targets={'sensor1'-'sensor50'},
10 arch='AUTOENCODER',
11 hiddens={5},
12 modelTable={name='modelo_autoencoder', replace=true};
13QUIT;

Étapes de réalisation

1
Generar el código de scoring utilizando la opción 'listNode="HIDDEN"' para incluir las activaciones de la capa oculta en la salida.
¡Copiado!
1PROC CAS;
2 LOADACTIONSET 'neuralNet';
3 annCode /
4 modelTable={name='modelo_autoencoder'},
5 listNode='HIDDEN',
6 code={casOut={name='codigo_scoring_hidden', replace=true}};
7RUN;
8QUIT;
2
Generar un segundo código de scoring con 'listNode="ALL"' para comparar y validar que se incluyen todas las capas (entrada, oculta y salida).
¡Copiado!
1PROC CAS;
2 LOADACTIONSET 'neuralNet';
3 annCode /
4 modelTable={name='modelo_autoencoder'},
5 listNode='ALL',
6 code={casOut={name='codigo_scoring_all', replace=true}};
7RUN;
8QUIT;

Resultado esperado


Se deben crear dos tablas de código. 'codigo_scoring_hidden' contendrá un DATA step que, al ejecutarse, producirá las 50 variables de entrada más 5 nuevas variables correspondientes a las neuronas de la capa oculta (ej: _H1_1_, _H1_2_, ...). 'codigo_scoring_all' generará un código que produce las 50 variables de entrada, las 5 de la capa oculta y las 50 de la capa de salida (reconstrucción). Esto valida la capacidad de `annCode` para externalizar características latentes del modelo.