Red Neuronal con dataset iris

 In Blogs

Este post fue publicado originalmente en Data Mining con R por noreply@blogger.com (Enmanuel Santana)

Script con red neuronal para predecir la variable Species del data set iris. Para detalles sobre redes neuronales, ver referencias.

 
 
Conceptualmente el modelo queda así:



# DATOS Y LIBRERIAS A USAR
#----------------------------------------------
library(neuralnet)
n     <- sample(1:150,20)
Train <- iris[-n,]
Test  <- iris[n,]
clase <- c("setosa","versicolor","virginica")
 
 
# CLASES
#----------------------------------------------
Train$setosa     <- ifelse(Train$Species == "setosa"     , TRUE, FALSE)
Train$versicolor <- ifelse(Train$Species == "versicolor" , TRUE, FALSE)
Train$virginica  <- ifelse(Train$Species == "virginica"  , TRUE, FALSE)
 
 
# FORMULA
#----------------------------------------------
frml <- as.formula(paste("setosa+versicolor+virginica ~ ", #variables a Predecir
                         paste(names(within(
                           Train,rm(Species,
                                    setosa,
                                    versicolor,
                                    virginica))), #Variables no predictoras a eliminar
                           collapse="+") ))
 
 
# MODELO
#----------------------------------------------
modelo.net <- neuralnet(frml,
                        data      = Train, 
                        algorithm = "rprop+", # ver nota sobre rprop+
                        threshold = 0.1,      # ver nota sobre threshold
                        hidden    = 3         # ver nota sobre hidden
                        )
 
 
# PREDICCION
#----------------------------------------------
predict_prb        <- as.data.frame(compute(modelo.net, within(Test,rm(Species)))$net.result)
names(predict_prb) <- clase
predict_class      <- colnames(predict_prb)[apply(predict_prb,1,which.max)]
 
 
 
# MATRIZ CONFUCION
#----------------------------------------------
(MC <- table(Test$Species,predict_class))
 
 
# GRAFICO DE RED
# ----------------------------------------------
plot(modelo.net)

El parametro threshol = 0.1 indica que las iteraciones se detendran cuando el cambio del error sea menor a 10% entre una iteraciones de optimizacion y otra. Este cambio es calculado como la derivada parcial de la funcion de error respecto a los pesos.

El parametro algoithm = “rprop+” refiere al algoritmo “Resilient Backpropagation”, que actualiza los pesos considerando únicamente el signo del cambio, es decir, si el cambio del error es en aumento (+) o disminución (-) entre una iteración y otra. Para detalles ver: https://en.wikipedia.org/wiki/Rprop

El parametro hidden = 3 especifica una capa oculta con 3 neuronas. Si se quisieran dos capas ocultas con tres neuronas cada una, seria hidden = c(3,3).

REFERENCIAS
articulos
1. http://www.analyticsvidhya.com/blog/2014/10/introduction-neural-network-simplified/
2. http://www.analyticsvidhya.com/blog/2014/10/ann-work-simplified/

Recommended Posts

Start typing and press Enter to search