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.
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.
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 neuralnet
biblioteca, 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:
Publicación traducida automáticamente
Artículo escrito por rutujakawade24 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA