Redes neuronales en SAS

Existen diferentes opciones para implementar una red neuronal con SAS. Una primera opción sería emplear el módulo SAS Visual Data Mining de la plataforma SAS Viya que de forma muy visual nos permite trabajar con este tipo de algoritmos.

Una segunda opción es utilizar SAS Enterprise Miner que tiene nodos para implementar diferentes tipos de redes neuronales dentro de un workflow analítico:

En nuestro ejemplo vamos a usar el módulo SAS/STAT que mediante programación SAS BASE nos permite trabajar con redes neuronales utilizando el procedimiento PROC NEURAL.

En nuestro ejemplo partimos de un fichero que contiene pruebas clínicas  donde tenemos las variables var1 a var7 que guardan el resultado de pruebas clínicas y la variable target 1/0 indica si el paciente tiene o no la enfermedad de estudio. Queremos predecir la probabilidad de enfermedad en base a los valores de las pruebas clínicas. Como es habitual, partimos de un dataset de entrenamiento (test) y otro de validación (validar).  Se implementa una red perceptron multicapa. El código para implementarlo es el siguiente:

/* Para usar el procedimiento NEURAL necesitamos crear previamente una  data mining database (DMDB) que guarda info de metadata sobre los datos originales */


proc dmdb batch data = test

    out = dmtest

    dmdbcat = prucli; /*catalogo de metadata */

   var var1 – var7;

   class target;

   target target;

run;


proc dmdb batch data = validar

    out = dmvalidar

    dmdbcat = prucli; 

   var var1 – var7;

   class target;

   target target;

run;


/* Creamos el modelo */

/* Una red neuronal da mucha info en la salida por eso “nloptions noprint” está especificado */


proc neural data = test dmdbcat = prucli random = 20 /* semilla */;

  nloptions noprint;

  input var1 – var7 / level = interval; /* variables continuas */

  target target / level = nominal; /* variable nominal */

  archi MLP hidden= 2; /* arquitectura MLP=perceptron multi capa y numero de capas ocultas */

  train maxiter = 200; /* máximo de iteraciones */

  score out = out outfit = fit; /* tabla de ajuste */

  score data = test out = resultado; /* tabla de salida con coef y predicciones */

run;


/*  Validamos el modelo */


/* Matriz de confusión: I_target: predicción y F_target = valor real */


proc sql; 

create table val as

(select F_target, I_target, count(*) as cont

from resultado

group by F_target, I_target);

quit;

 

Si estás interesado en formarte en SAS, te recomendamos nuestro curso on-line: https://online.datademy.es/course/sas/
Share

Deja una respuesta