Una Red Neuronal Artificial (ANN) modela la relación entre un conjunto de entradas y una salida, resolviendo un problema de aprendizaje.
Ejemplos prácticos de aplicación de Redes Neuronales son:
#install.packages("neuralnet")
library(neuralnet)
library(caret)
## Cargando paquete requerido: ggplot2
## Cargando paquete requerido: lattice
library(ggplot2)
library(lattice)
library(rpart)
library(rpart.plot)
examen <- c(20,10,30,20,80,30)
proyecto <- c(90,20,40,50,50,80)
estatus <- c(1,0,0,0,0,1)
df <- data.frame(examen,proyecto,estatus)
red_neuronal <- neuralnet(estatus~.,data=df)
plot(red_neuronal,rep="best")
prueba_examen <- c(30,40,85)
prueba_proyecto <- c(85,50,40)
prueba <- data.frame(prueba_examen,prueba_proyecto)
prediccion <- compute(red_neuronal,prueba)
prediccion$net.result
## [,1]
## [1,] 0.3334407
## [2,] 0.3334407
## [3,] 0.3334407
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
## [,1]
## [1,] 0
## [2,] 0
## [3,] 0
df <- read.csv("C:\\Users\\Adrián\\Downloads\\cancer_de_mama.csv")
df$diagnosis <- as.factor(df$diagnosis)
set.seed(123)
renglones_entrenamiento <- createDataPartition(df$diagnosis,p=0.8, list=FALSE)
entrenamiento <- df[renglones_entrenamiento,]
prueba <- df[-renglones_entrenamiento,]
df$diagnosis <- ifelse(df$diagnosis == "M", 1, 0)
red_neuronal <- neuralnet(diagnosis~.,data=df)
plot(red_neuronal,rep="best")
prediccion <- compute(red_neuronal,prueba)
prediccion$net.result
## [,1]
## 13 0.3725861
## 14 0.3725861
## 15 0.3725861
## 17 0.3725861
## 22 0.3725861
## 26 0.3725861
## 30 0.3725861
## 45 0.3725861
## 46 0.3725861
## 49 0.3725861
## 51 0.3725861
## 62 0.3725861
## 68 0.3725861
## 69 0.3725861
## 71 0.3725861
## 84 0.3725861
## 89 0.3725861
## 96 0.3725861
## 100 0.3725861
## 109 0.3725861
## 118 0.3725861
## 120 0.3725861
## 130 0.3725861
## 132 0.3725861
## 134 0.3725861
## 138 0.3725861
## 141 0.3725861
## 144 0.3725861
## 147 0.3725861
## 148 0.3725861
## 151 0.3725861
## 162 0.3725861
## 163 0.3725861
## 166 0.3725861
## 169 0.3725861
## 173 0.3725861
## 189 0.3725861
## 204 0.3725861
## 213 0.3725861
## 217 0.3725861
## 229 0.3725861
## 233 0.3725861
## 240 0.3725861
## 245 0.3725861
## 247 0.3725861
## 248 0.3725861
## 258 0.3725861
## 260 0.3725861
## 265 0.3725861
## 267 0.3725861
## 269 0.3725861
## 270 0.3725861
## 278 0.3725861
## 280 0.3725861
## 282 0.3725861
## 283 0.3725861
## 284 0.3725861
## 285 0.3725861
## 289 0.3725861
## 291 0.3725861
## 293 0.3725861
## 294 0.3725861
## 295 0.3725861
## 319 0.3725861
## 324 0.3725861
## 335 0.3725861
## 336 0.3725861
## 348 0.3725861
## 350 0.3725861
## 351 0.3725861
## 353 0.3725861
## 362 0.3725861
## 365 0.3725861
## 366 0.3725861
## 368 0.3725861
## 376 0.3725861
## 385 0.3725861
## 394 0.3725861
## 395 0.3725861
## 400 0.3725861
## 402 0.3725861
## 407 0.3725861
## 409 0.3725861
## 412 0.3725861
## 414 0.3725861
## 417 0.3725861
## 423 0.3725861
## 424 0.3725861
## 436 0.3725861
## 439 0.3725861
## 445 0.3725861
## 457 0.3725861
## 474 0.3725861
## 477 0.3725861
## 481 0.3725861
## 487 0.3725861
## 495 0.3725861
## 497 0.3725861
## 508 0.3725861
## 509 0.3725861
## 510 0.3725861
## 512 0.3725861
## 514 0.3725861
## 520 0.3725861
## 525 0.3725861
## 533 0.3725861
## 541 0.3725861
## 543 0.3725861
## 550 0.3725861
## 551 0.3725861
## 556 0.3725861
## 559 0.3725861
## 565 0.3725861
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
## [,1]
## 13 0
## 14 0
## 15 0
## 17 0
## 22 0
## 26 0
## 30 0
## 45 0
## 46 0
## 49 0
## 51 0
## 62 0
## 68 0
## 69 0
## 71 0
## 84 0
## 89 0
## 96 0
## 100 0
## 109 0
## 118 0
## 120 0
## 130 0
## 132 0
## 134 0
## 138 0
## 141 0
## 144 0
## 147 0
## 148 0
## 151 0
## 162 0
## 163 0
## 166 0
## 169 0
## 173 0
## 189 0
## 204 0
## 213 0
## 217 0
## 229 0
## 233 0
## 240 0
## 245 0
## 247 0
## 248 0
## 258 0
## 260 0
## 265 0
## 267 0
## 269 0
## 270 0
## 278 0
## 280 0
## 282 0
## 283 0
## 284 0
## 285 0
## 289 0
## 291 0
## 293 0
## 294 0
## 295 0
## 319 0
## 324 0
## 335 0
## 336 0
## 348 0
## 350 0
## 351 0
## 353 0
## 362 0
## 365 0
## 366 0
## 368 0
## 376 0
## 385 0
## 394 0
## 395 0
## 400 0
## 402 0
## 407 0
## 409 0
## 412 0
## 414 0
## 417 0
## 423 0
## 424 0
## 436 0
## 439 0
## 445 0
## 457 0
## 474 0
## 477 0
## 481 0
## 487 0
## 495 0
## 497 0
## 508 0
## 509 0
## 510 0
## 512 0
## 514 0
## 520 0
## 525 0
## 533 0
## 541 0
## 543 0
## 550 0
## 551 0
## 556 0
## 559 0
## 565 0
El uso de redes neuronales puede ser una alternativa en el caso de la elaboración predicciones a otro tipo de métodos de predicción como lo son los árboles de decisión o la regresión logística. Es importante evaluar y comparar entre diferentes modelos con la finalidad de identificar el modelo más óptimo para la elaboración de predicciones.