Análisis con redes neuronales en R

por | Sep 30, 2016 | R | 6 Comentarios

red neuronalUso: Clasificador probabilístico

Descripción: Las redes neuronales son un paradigma de aprendizaje y procesamiento automático basado en el funcionamiento de nuestro sistema nervioso, este sistema este compuesto por una serie de neuronas y conexiones entre ellas que colaboran entre sí para producir una salida.

Variable dependiente: métricas y no métricas

Variables independientes: métricas y no métricas

Ejemplo en R: Clasificar tipo de flor atendiendo a sus características físicas como pueden ser el ancho y alto de los pétalos y sépalos.

# Carga de todos los paquetes necesarios 
#install.packages("ggplot2")
#install.packages("lattice")
#install.packages("caret")
#install.packages("nnet")
#install.packages("e1071")
#install.packages("foreach")
#install.packages("glmnet")
library(ggplot2)
library(lattice)
library(caret)
library(nnet)
library(e1071)
library(foreach)
library(glmnet)

# Carga de datos inicial, tipos de flores con diferentes características 
data(iris)
View(iris)
datos <- iris

# Selección de una submuestra del 70% de los datos para entrenamiento y el 30% se usará para testeo del método
set.seed(101)
tamano.total <- nrow(datos)
tamano.train <- round(tamano.total*0.7)
datos.indices <- sample(1:tamano.total , size=tamano.train)
datos.train <- datos[datos.indices,]
datos.test <- datos[-datos.indices,]

# Previamente se usará train para ver el valor de los parámetros size y decay
# size: número de unidades ocultas intermedias
# decay: se usa para evitar el sobre ajuste
parametros <- train(Species~., data=datos.train, method="nnet", trace=F)
size <- parametros$bestTune$size
decay <- parametros$bestTune$decay
parametros$bestTune
##   size decay
## 6    3   0.1
# Entrenamiento de la red neuronal con los valores de train
modelo <- nnet(Species ~ ., size=size, decay=decay, trace=F, data=datos.train)
modelo
## a 4-3-3 network with 27 weights
## inputs: Sepal.Length Sepal.Width Petal.Length Petal.Width 
## output(s): Species 
## options were - softmax modelling  decay=0.1
# Predicción. Se crea un data frame con las probabilidades y los nombres de las especies
predicciones <- data.frame(predict(modelo, datos.test), Specie=predict(modelo,datos.test, type="class"))
predicciones
##          setosa versicolor    virginica     Specie
## 5   0.984696025 0.01467717 0.0006268079     setosa
## 10  0.979163054 0.02002491 0.0008120312     setosa
## 12  0.979718900 0.01948811 0.0007929853     setosa
## 15  0.987746650 0.01173706 0.0005162860     setosa
## 16  0.987281279 0.01218561 0.0005331137     setosa
## 18  0.983802343 0.01553962 0.0006580417     setosa
## 22  0.983603181 0.01573255 0.0006642712     setosa
## 23  0.986727467 0.01271700 0.0005555347     setosa
...
# Matriz de confusión
mc <- table(predicciones$Specie,datos.test$Species, dnn = c("Asignado","Real"))
mc
##             Real
## Asignado     setosa versicolor virginica
##   setosa         15          0         0
##   versicolor      0         12         0
##   virginica       0          0        18
# Porcentaje de aciertos
aciertos <- sum(diag(mc)) / nrow(datos.test) * 100
aciertos
## [1] 100

Nota: Consular la  implementación de una red neuronal convolucional en R con keras

6 Comentarios

  1. John Calvo

    Gracias!!! muy buena explicación desde hoy seré segudidor de tu web,

    saludos desde Bogotá ,Colombia

    Responder
    • Diego Calvo

      Estoy encantado de que te sea de utilidad.
      Seguiré publicando articulos sobre este tema, puesto que es el tema central de mi tesis doctoral.
      Un saludo desde España!!!

      Responder
  2. April

    Excelente explicación, ,e gusta mucho tu pagina y tu trabajo.
    Podrias subir algun script en R de redes neuronales recurrentes LSTM que tenga algunas variables categoricas, seria de gran ayuda. Gracias, saludos desde Colombia.

    Responder
    • Diego Calvo

      En este momento tengo el foco puesto en la parte de Big Data, cuando vuelva sobre este tema tendré en cuenta tu comentario. De todas maneras si algún lector tiene un ejemplo no dude en contactar en info@diegocalvo.es y le publicaré el articulo. Por supuesto bajo su autoría y como colaborador.

      Responder
  3. Osmany

    Excelente.

    Responder
  4. Vladimir

    Buenas estimado, muchas gracias por tu tutorial, pero me gustaria que me puedas guiar en algo, estaria muy agradecido, es sobre como puedo analizar imagenes de trayectorias vehiculares usando redes neuronales. Si puedes responderme para poder hablar mejor del tema.

    Saludos

    Responder

Enviar un comentario

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