Medir la importancia de las variables en una red neuronal con R

Sigo a vueltas con esta gran web y hoy vamos a medir la importancia de las variables en una red neuronal. Al igual que sucede en un modelo de regresión los parámetros obtenidos pueden servirnos para determinar la importancia de una variable dentro del modelo. En el caso de una red neuronal los pesos de la red pueden ser utilizados para determinar cómo influye una variable en el modelo. Para ilustrar este tipo de tareas el gran @beckmw realizó esta entrada:

http://beckmw.wordpress.com/2013/08/12/variable-importance-in-neural-networks/

El método que emplea para determinar esta importancia fue propuesto por Garson en 1991 y parte de la idea de buscar todas las conexiones que tiene una variable dentro de una red neuronal y se ponderan para obtener un valor único que describe el grado de asociación de nuestra variable dependiente con cada una de sus regresoras. Garson realizó este método para poder obtener un valor de 0 a 1, pero @beckmw lo ha modificado para que el signo tenga su importancia. La función que ha creado este genio la tenéis en Github

source(url('https://gist.githubusercontent.com/fawda123/6206737/raw/d6f365c283a8cae23fb20892dc223bc5764d50c7/gar_fun.r'))

Por cierto, qué manía tienen algunos con usar devtools. Haciendo sólo:

#Dejamos los nombres de los coeficientes de una forma más adecuada
tr=nnet.fit$coefnames
tr=substr(tr,16,30)
nnet.fit$coefnames=tr

#Pintamos la importancia de las variables
gar.fun('medv',nnet.fit)

Obtenemos el gráfico con el que comienza esta entrada al blog. Ni se os ocurra comenzar a tocar este gráfico con los temas de ggplot2, somos gente productiva. Vemos como a la izquierda del gráfico se sitúan las variables con mayor peso negativo y a la derecha las variables con mayor peso positivo. Podemos eliminar algunas variables y seguramente el comportamiento predictivo del modelo no empeoraría.

Hay que dejar de pensar en las redes neuronales como una caja negra sin sentido. Saludos.

4 comentarios en “Medir la importancia de las variables en una red neuronal con R

  1. Hola Raul,

    Quería preguntarte por PostgreSQL. Según tngo entendido en una base de datos relacional y SQL, pero sin embargo se emplea mucho en big data (el mundo de las NoSQL, etc..)

    Se que PostreSQL paraleliza bien procesos, pero me choca lo de BBDD relacional, ¿puede ser que el almcenamiento sea columnar pro soporte SQL?

    Un saludo, gracias

  2. Perdona, Gracias Raul (q te he cambiado el nombre)
    En el post al que haces referencia creas un sistema de
    información en el que utilizas Pentaho Data Integration sobre el que dices que o require instalación, ¿es un servicio cloud?, ¿puede indicarme la URL para descargar lo que sea necesario?

    gacias,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

[bws_google_captcha]