Redes Neuronales

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

Ejemplos de aplicación de Redes Neuroanles son:

  1. Recomendación de contenido de Netflix.
  2. For You Page de Tiktok.

1. Instalar paquetes y llamar librerías

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

Ejercicio

Importar base de datos

bd <- read.csv("cancer_de_mama.csv")

bd$diagnosis <- ifelse(bd$diagnosis == "M",1,0)

3. Generar Red Neuronal

red_neuronal2 <- neuralnet(diagnosis ~ ., data=bd)
plot(red_neuronal2)

4. Predecir con la Red Neuronal (A la Antigua)

radius_meanprue <-c(27.42,6.981)
texture_meanprue <-c(26.27,13.43)
perimeter_meanprue <-c(186.9,43.7)
area_meanprue <-c(2501.0,143.5)
smoothness_meanprue <-c(0.10840,0.11700)
compactness_meanprue    <-c(0.19880,0.07568)
concavity_meanprue <-c(0.36350,0.0000000)
concavepoints_meanprue <-c(0.16890,0.0000000)
symmetry_meanprue <-c(0.2061,0.1930)
fractal_dimension_meanprue  <-c(0.05623,0.07818)
radius_seprue <-c(2.5470,0.2241)
texture_seprue <-c(1.3060,1.5080)
perimeter_seprue <- c(18.650,1.5530)
area_seprue <- c(542.20,9.833)
smoothness_seprue <- c(0.007650,0.010190)
compactness_seprue <- c(0.053740,0.010840)
concavity_seprue <- c(0.08055,0.0000000)
concavepoints_seprue <- c(0.025980,0.0000000)
symmetry_seprue <- c(0.01697,0.02659)
fractal_dimension_seprue <- c(0.004558,0.004100)
radius_worstprue <- c(36.04,7.930)
texture_worstprue <- c(31.37,19.54)
perimeter_worstprue <- c(251.2,50.41)
area_worstprue <- c(4254,185.2)
smoothness_worstprue <- c(0.13570,0.15840)
compactness_worstprue <- c(0.42560,0.12020)
concavity_worstprue <- c(0.6833,0.000000)
concavepoints_worstprue <- c(0.26250,0.00000)
symmetry_worstprue <- c(0.2641,0.2932)
fractal_dimension_worstprue <- c(0.07427,0.0938)

bdprueba <- data.frame(radius_meanprue,texture_meanprue,perimeter_meanprue,area_meanprue,smoothness_meanprue,compactness_meanprue,concavity_meanprue,concavepoints_meanprue,symmetry_meanprue,fractal_dimension_meanprue,radius_seprue,texture_seprue,perimeter_seprue,area_seprue,smoothness_seprue,compactness_seprue,concavity_seprue,concavepoints_seprue,symmetry_seprue,fractal_dimension_seprue,radius_worstprue,texture_worstprue,perimeter_worstprue,area_worstprue,smoothness_worstprue,compactness_worstprue,concavity_worstprue,concavepoints_worstprue,symmetry_worstprue,fractal_dimension_worstprue)

Prueba Rápida

prueba <- bd[c(19,20,21,22,23), ]

Predicción

prediccion2 <- compute(red_neuronal2,prueba)
prediccion2$net.result
##         [,1]
## 19 0.3726001
## 20 0.3726001
## 21 0.3726001
## 22 0.3726001
## 23 0.3726001
probabilidad2 <- prediccion2$net.result
resultado <- ifelse(probabilidad2>0.5,1,0)
resultado
##    [,1]
## 19    0
## 20    0
## 21    0
## 22    0
## 23    0

Prueba Rápida

prueba <- bd[c(19,20,21,22,23), ]