Archivo de la etiqueta: plot.nnet

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.

Representación de redes neuronales con R

En la última entrada realizamos un modelo de regresión con redes neuronales. Hoy quería mostraros como representar gráficamente la red neuronal creada en esa entrada. A la modelización con redes neuronales siempre se le ha achacado un comportamiento de “caja negra”, nosotros pasamos unas variables de entrada por una capa oculta y obtenemos una salida. No hay parámetros ni inferencia sobre los mismos, no sabemos lo que hace la red por dentro. En el caso concreto de R y continuando con la entrada anterior  si hacemos summary(bestnn):

a 12-4-1 network with 57 weights
options were - linear output units decay=1e-05
b->h1 i1->h1 i2->h1 i3->h1 i4->h1 i5->h1 i6->h1 i7->h1 i8->h1 i9->h1
-5.61 -3.80 -1.03 0.74 -2.81 2.83 2.37 2.86 6.72 4.68
i10->h1 i11->h1 i12->h1
1.65 0.87 -8.16 Sigue leyendo Representación de redes neuronales con R