Cómo se utilizan las redes neuronales para la clasificación en la programación R

Redes neuronales es una palabra muy conocida en el aprendizaje automático y la ciencia de datos . Las redes neuronales se utilizan en casi todas las aplicaciones de aprendizaje automático debido a su confiabilidad y potencia matemática. En este artículo, tratemos las aplicaciones de las redes neuronales en problemas de clasificación utilizando la programación R. Primero observe brevemente la red neuronal y los algoritmos de clasificación y luego combine ambos conceptos.

Red neuronal

La red neuronal es un circuito general de neuronas que puede funcionar con cualquier cantidad de entradas y, por lo general, es adecuada para manejar conjuntos de datos no lineales. Las redes neuronales son más flexibles y se pueden utilizar tanto con problemas de regresión como de clasificación. Entonces, imagine una situación en la que se supone que debemos entrenar un modelo y verificar si estamos en el camino correcto o no, por lo tanto, propagamos repetidamente hacia adelante y hacia atrás para obtener la mayor precisión (generalmente usando épocas), todo este procedimiento no es más que trabajo en una red neuronal! A continuación se muestra una visualización general de una red neuronal.

neural-network

Clasificación

La clasificación es una poderosa herramienta para trabajar con datos discretos. La mayoría de los problemas de aprendizaje automático de tipo Verdadero/Falso o Sí/No se resuelven mediante clasificación. Predecir si un correo electrónico es spam o no es un ejemplo famoso de clasificación binaria. Otros ejemplos incluyen la clasificación del cáncer de mama como maligno o benigno, la clasificación de caracteres escritos a mano, etc. A continuación se muestra una visualización general de una clasificación.

classification-problem

Ahora que nos hemos familiarizado con las redes neuronales y los algoritmos de clasificación, tratemos la aplicación de las redes neuronales en la clasificación. La clasificación de redes neuronales se usa ampliamente en el procesamiento de imágenes, la clasificación de dígitos escritos a mano, el reconocimiento de firmas, el análisis de datos, la comparación de datos y muchos más. Las capas ocultas de la red neuronal realizan épocas entre sí y con la capa de entrada para aumentar la precisión y minimizar una función de pérdida.

Implementación en R

Construyamos una red neuronal simple en R y visualicemos los valores reales y predichos de la red neuronal. Para este ejemplo, tomemos el conjunto de datos de Boston incorporado de R.

Ejemplo:
Cargue el conjunto de datos de la siguiente manera:

# Generating random number
# Using set.seed()
set.seed(500)
  
# Import required library
library(MASS)
  
# Import data set
data <- Boston
head(data)
    crim  zn indus   chas nox  rm    age  dis   rad tax  ptratio black lstat medv
1 0.00632 18  2.31    0 0.538 6.575 65.2 4.0900   1 296    15.3 396.90  4.98 24.0
2 0.02731  0  7.07    0 0.469 6.421 78.9 4.9671   2 242    17.8 396.90  9.14 21.6
3 0.02729  0  7.07    0 0.469 7.185 61.1 4.9671   2 242    17.8 392.83  4.03 34.7
4 0.03237  0  2.18    0 0.458 6.998 45.8 6.0622   3 222    18.7 394.63  2.94 33.4
5 0.06905  0  2.18    0 0.458 7.147 54.2 6.0622   3 222    18.7 396.90  5.33 36.2
6 0.02985  0  2.18    0 0.458 6.430 58.7 6.0622   3 222    18.7 394.12  5.21 28.7

Ahora ajustemos el conjunto de datos para probar y entrenar, de la siguiente manera:

# Split the dataset to
# Test and train set
index <- sample(1:nrow(data), 
         round(0.75 * nrow(data)))
train <- data[index, ]
test <- data[-index, ]
  
# Fit the model
lm.fit <- glm(medv~., data = train)
summary(lm.fit)
pr.lm <- predict(lm.fit, test)
MSE.lm <- sum((pr.lm - test$medv)^2) / nrow(test)

Después de ajustar y dividir nuestro conjunto de datos, ahora prepare la red neuronal para que encaje, esto se puede hacer de la siguiente manera:

# Fit the neural network
maxs <- apply(data, 2, max) 
mins <- apply(data, 2, min)
  
scaled <- as.data.frame(scale(data, 
                              center = mins,
                              scale = maxs - mins))
  
train_ <- scaled[index, ]
test_ <- scaled[-index, ]

Ahora trabaje en parámetros como capas ocultas de la red neuronal usando la neuralnetbiblioteca, de la siguiente manera.

# Import neuralnet library
library(neuralnet)
  
# Work on parameters 
# of hidden layers of NN
n <- names(train_)
f <- as.formula(paste("medv ~", 
                paste(n[! n % in % "medv"], 
                collapse = " + ")))
nn <- neuralnet(f, 
                data = train_, 
                hidden = c(5, 3),
                linear.output = T)

Después de esto, compile nuestra función para predecir medv usando la red neuronal de la siguiente manera:

# Predicting the medv
pr.nn <- compute(nn, test_[, 1:13])
  
pr.nn_ <- pr.nn$net.result * (max(data$medv)
                           - min(data$medv))
                           + min(data$medv)
test.r <- (test_$medv) * (max(data$medv)
                       - min(data$medv))
                       + min(data$medv)
  
MSE.nn <- sum((test.r - pr.nn_)^2) / nrow(test_)

Ahora tracemos el gráfico final para visualizar la red neuronal para valores reales y valores predichos.

# Plotting the final graph
plot(test$medv, pr.nn_, 
                col = 'green', 
                main = 'Real vs predicted NN',
                pch = 18, cex = 0.7)
points(test$medv, pr.lm, 
                  col = 'blue', 
                  pch = 18, cex = 0.7)
abline(0, 1, lwd = 2)
legend('bottomright', 
        legend = c('Real', 'Predicted'),
        pch = 18, 
        col = c('green', 'blue'))

Producción:
pantalla de salida

Publicación traducida automáticamente

Artículo escrito por rutujakawade24 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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