Redes Neuronales

Una Red Neural Artificial (ANN) modela la relación entre un conjunto de entradas y una salida, resolviendo un problema de aprendizajee.

Ejemplo de aplicación de Redes Neuronales son:
1. La recomendación de contenido de netflix.
2. El feed de TikTok, o Instagram.

1. Instalar paquetes y llamar librerias

# install.packages("neuralnet")
library(neuralnet)

2. Alimentar con ejemplos

examen <- c(20, 10, 30, 20, 80, 30)
proyecto <- c(90, 20, 40, 50, 50, 80)
estatus <- c(1, 0, 0, 0, 1, 1)
df <- data.frame(examen, proyecto, estatus)

3. Generar Red NEuronal

red_neuronal <- neuralnet(estatus ~ ., data = df)
plot(red_neuronal)

4. Predecir con la Red Neuronal

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.4987596
## [2,] 0.4987596
## [3,] 0.4987596
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
##      [,1]
## [1,]    0
## [2,]    0
## [3,]    0

Ejemplo Cancer de mama

1. Importar base de datos

bd <- read.csv("/Users/valeriavillarreal/Downloads/cancer_de_mama.csv")
bd$diagnosis[bd$diagnosis == "M"] <- "1"
bd$diagnosis[bd$diagnosis == "B"] <- "0"

2. Alimentar con ejemplos

#diagnostico <- c(20, 10, 30, 20, 80, 30)
#proyecto <- c(90, 20, 40, 50, 50, 80)
#estatus <- c(1, 0, 0, 0, 1, 1)
#df <- data.frame(examen, proyecto, estatus)

df2 <- data.frame(bd)

3. Generar Red Neuronal

#red_neuronal <- neuralnet(estatus ~ ., data = df)
#plot(red_neuronal)

redneuronal <- neuralnet(diagnosis ~ ., data = df2)
plot(redneuronal)

4. Predecir con la Red Neuronal

#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
#probabilidad <- prediccion$net.result
#resultado <- ifelse(probabilidad>0.5,1,0)
#resultado

pruebacancer <- bd[c(19:23),]

prediccion <- compute(redneuronal, pruebacancer)
prediccion$net.result
##         [,1]      [,2]
## 19 0.6274338 0.3725718
## 20 0.6274338 0.3725718
## 21 0.6274338 0.3725718
## 22 0.6274338 0.3725718
## 23 0.6274338 0.3725718
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
##    [,1] [,2]
## 19    1    0
## 20    1    0
## 21    1    0
## 22    1    0
## 23    1    0