Redes Neuronales

0. Concepto

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 Neuronales son:
1. La recomendación de contenido de Netflix.
2. El feed de Instagram o TikTok.
3. Determinar el número o letra escrito a mano.

1. Instalar paquetes y llamar librerías

# install.packages("neuralnet")
library(neuralnet)
# install.packages("caret")
library(caret)
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Loading required package: lattice
## Warning: package 'lattice' was built under R version 4.3.2

2. Importar base de datos

# file.choose()
set.seed(123)
df <- read.csv("/Users/yessicaacosta/Downloads/cancer_de_mama.csv")
renglones_entrenamiento <- createDataPartition(df$diagnosis,p=0.8, list= FALSE)
entrenamiento <- df[renglones_entrenamiento, ]
prueba <- df[-renglones_entrenamiento, ]

3. Generar la Red Neuronal

red_neuronal <- neuralnet(diagnosis~., data=entrenamiento)
plot(red_neuronal, rep = "best")

4. Predecir con la Red Neuronal

prediccion <- compute(red_neuronal, prueba) # función de computar para hacer predicción
prediccion$net.result
##          [,1]      [,2]
## 13  0.6272036 0.3727860
## 14  0.6272036 0.3727860
## 15  0.6272036 0.3727860
## 17  0.6272036 0.3727860
## 22  0.6272036 0.3727860
## 26  0.6272036 0.3727860
## 30  0.6272036 0.3727860
## 45  0.6272036 0.3727860
## 46  0.6272036 0.3727860
## 49  0.6272036 0.3727860
## 51  0.6272036 0.3727860
## 62  0.6272036 0.3727860
## 68  0.6272036 0.3727860
## 69  0.6272036 0.3727860
## 71  0.6272036 0.3727860
## 84  0.6272036 0.3727860
## 89  0.6272036 0.3727860
## 96  0.6272036 0.3727860
## 100 0.6272036 0.3727860
## 109 0.6272036 0.3727860
## 118 0.6272036 0.3727860
## 120 0.6272036 0.3727860
## 130 0.6272036 0.3727860
## 132 0.6272036 0.3727860
## 134 0.6272036 0.3727860
## 138 0.6272036 0.3727860
## 141 0.6272036 0.3727860
## 144 0.6272036 0.3727860
## 147 0.6272036 0.3727860
## 148 0.6272036 0.3727860
## 151 0.6272036 0.3727860
## 162 0.6272036 0.3727860
## 163 0.6272036 0.3727860
## 166 0.6272036 0.3727860
## 169 0.6272036 0.3727860
## 173 0.6272036 0.3727860
## 189 0.6272036 0.3727860
## 204 0.6272036 0.3727860
## 213 0.6272032 0.3727834
## 217 0.6272036 0.3727860
## 229 0.6272036 0.3727860
## 233 0.6272036 0.3727860
## 240 0.6272036 0.3727860
## 245 0.6272036 0.3727860
## 247 0.6272036 0.3727860
## 248 0.6272036 0.3727860
## 258 0.6272036 0.3727860
## 260 0.6272036 0.3727860
## 265 0.6272036 0.3727860
## 267 0.6272036 0.3727860
## 269 0.6272036 0.3727860
## 270 0.6272036 0.3727860
## 278 0.6272036 0.3727860
## 280 0.6272036 0.3727860
## 282 0.6272036 0.3727860
## 283 0.6272036 0.3727860
## 284 0.6272036 0.3727860
## 285 0.6272036 0.3727860
## 289 0.6272036 0.3727860
## 291 0.6272036 0.3727860
## 293 0.6272036 0.3727860
## 294 0.6272036 0.3727860
## 295 0.6272036 0.3727860
## 319 0.6272036 0.3727860
## 324 0.6272036 0.3727860
## 335 0.6272036 0.3727860
## 336 0.6272036 0.3727860
## 348 0.6272036 0.3727860
## 350 0.6272036 0.3727860
## 351 0.6272036 0.3727860
## 353 0.6272036 0.3727860
## 362 0.6272036 0.3727860
## 365 0.6272036 0.3727860
## 366 0.6272036 0.3727860
## 368 0.6272036 0.3727860
## 376 0.6272036 0.3727860
## 385 0.6272036 0.3727860
## 394 0.6272036 0.3727860
## 395 0.6272036 0.3727860
## 400 0.6272036 0.3727860
## 402 0.6272036 0.3727860
## 407 0.6272036 0.3727860
## 409 0.6272036 0.3727860
## 412 0.6272036 0.3727860
## 414 0.6272036 0.3727860
## 417 0.6272036 0.3727860
## 423 0.6272036 0.3727860
## 424 0.6272036 0.3727860
## 436 0.6272036 0.3727860
## 439 0.6272036 0.3727860
## 445 0.6272036 0.3727860
## 457 0.6272036 0.3727860
## 474 0.6272036 0.3727860
## 477 0.6272036 0.3727860
## 481 0.6272036 0.3727860
## 487 0.6272036 0.3727860
## 495 0.6272036 0.3727860
## 497 0.6272036 0.3727860
## 508 0.6272036 0.3727860
## 509 0.6272036 0.3727860
## 510 0.6272036 0.3727860
## 512 0.6272036 0.3727860
## 514 0.6272036 0.3727860
## 520 0.6272036 0.3727860
## 525 0.6272036 0.3727860
## 533 0.6272036 0.3727860
## 541 0.6272036 0.3727860
## 543 0.6272036 0.3727860
## 550 0.6272036 0.3727860
## 551 0.6272036 0.3727860
## 556 0.6272036 0.3727860
## 559 0.6272036 0.3727860
## 565 0.6272036 0.3727860
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
##     [,1] [,2]
## 13     1    0
## 14     1    0
## 15     1    0
## 17     1    0
## 22     1    0
## 26     1    0
## 30     1    0
## 45     1    0
## 46     1    0
## 49     1    0
## 51     1    0
## 62     1    0
## 68     1    0
## 69     1    0
## 71     1    0
## 84     1    0
## 89     1    0
## 96     1    0
## 100    1    0
## 109    1    0
## 118    1    0
## 120    1    0
## 130    1    0
## 132    1    0
## 134    1    0
## 138    1    0
## 141    1    0
## 144    1    0
## 147    1    0
## 148    1    0
## 151    1    0
## 162    1    0
## 163    1    0
## 166    1    0
## 169    1    0
## 173    1    0
## 189    1    0
## 204    1    0
## 213    1    0
## 217    1    0
## 229    1    0
## 233    1    0
## 240    1    0
## 245    1    0
## 247    1    0
## 248    1    0
## 258    1    0
## 260    1    0
## 265    1    0
## 267    1    0
## 269    1    0
## 270    1    0
## 278    1    0
## 280    1    0
## 282    1    0
## 283    1    0
## 284    1    0
## 285    1    0
## 289    1    0
## 291    1    0
## 293    1    0
## 294    1    0
## 295    1    0
## 319    1    0
## 324    1    0
## 335    1    0
## 336    1    0
## 348    1    0
## 350    1    0
## 351    1    0
## 353    1    0
## 362    1    0
## 365    1    0
## 366    1    0
## 368    1    0
## 376    1    0
## 385    1    0
## 394    1    0
## 395    1    0
## 400    1    0
## 402    1    0
## 407    1    0
## 409    1    0
## 412    1    0
## 414    1    0
## 417    1    0
## 423    1    0
## 424    1    0
## 436    1    0
## 439    1    0
## 445    1    0
## 457    1    0
## 474    1    0
## 477    1    0
## 481    1    0
## 487    1    0
## 495    1    0
## 497    1    0
## 508    1    0
## 509    1    0
## 510    1    0
## 512    1    0
## 514    1    0
## 520    1    0
## 525    1    0
## 533    1    0
## 541    1    0
## 543    1    0
## 550    1    0
## 551    1    0
## 556    1    0
## 559    1    0
## 565    1    0
# >0.5 = caso positivo maligno
# <0.5 = caso negativo
# Se necesitan más ejemplos para mayor precisión

Conclusion

Las redes neuronales permiten que los programas reconozcan patrones y resuelvan problemas comunes en inteligencia artificial y aprendizaje automático. Al obtener un resultado mayor a 0.5 se asume que es un caso positivo a un tumor maligno y al ser menor a 0.5 es un caso negativo.

LS0tCnRpdGxlOiAiQ8OhbmNlciIKYXV0aG9yOiAiWWVzc2ljYSBBY29zdGEiCmRhdGU6ICIyMDI0LTA4LTE1IgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6ICJzcGFjZWxhYiIKICAgIGhpZ2hsaWdodDogImthdGUiCi0tLQoKIVtdKC9Vc2Vycy95ZXNzaWNhYWNvc3RhL0Rvd25sb2Fkcy9tZWRpY2luYS5naWYpCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPlJlZGVzIE5ldXJvbmFsZXM8L3NwYW4+CgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij4wLiBDb25jZXB0bzwvc3Bhbj4KVW5hIFJlZCBOZXVyYWwgQXJ0aWZpY2lhbCAoQU5OKSBtb2RlbGEgbGEgcmVsYWNpw7NuIGVudHJlIHVuIGNvbmp1bnRvIGRlIGVudHJhZGFzIHkgdW5hIHNhbGlkYSwgcmVzb2x2aWVuZG8gdW4gcHJvYmxlbWEgZGUgYXByZW5kaXphamUuICAKCkVqZW1wbG9zIGRlIGFwbGljYWNpw7NuIGRlIFJlZGVzIE5ldXJvbmFsZXMgc29uOiAgCjEuIExhIHJlY29tZW5kYWNpw7NuIGRlIGNvbnRlbmlkbyBkZSBOZXRmbGl4LiAgCjIuIEVsIGZlZWQgZGUgSW5zdGFncmFtIG8gVGlrVG9rLiAgCjMuIERldGVybWluYXIgZWwgbsO6bWVybyBvIGxldHJhIGVzY3JpdG8gYSBtYW5vLiAgCgojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij4xLiBJbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzPC9zcGFuPgpgYGB7cn0KIyBpbnN0YWxsLnBhY2thZ2VzKCJuZXVyYWxuZXQiKQpsaWJyYXJ5KG5ldXJhbG5ldCkKIyBpbnN0YWxsLnBhY2thZ2VzKCJjYXJldCIpCmxpYnJhcnkoY2FyZXQpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Mi4gSW1wb3J0YXIgYmFzZSBkZSBkYXRvczwvc3Bhbj4KYGBge3J9CiMgZmlsZS5jaG9vc2UoKQpzZXQuc2VlZCgxMjMpCmRmIDwtIHJlYWQuY3N2KCIvVXNlcnMveWVzc2ljYWFjb3N0YS9Eb3dubG9hZHMvY2FuY2VyX2RlX21hbWEuY3N2IikKcmVuZ2xvbmVzX2VudHJlbmFtaWVudG8gPC0gY3JlYXRlRGF0YVBhcnRpdGlvbihkZiRkaWFnbm9zaXMscD0wLjgsIGxpc3Q9IEZBTFNFKQplbnRyZW5hbWllbnRvIDwtIGRmW3Jlbmdsb25lc19lbnRyZW5hbWllbnRvLCBdCnBydWViYSA8LSBkZlstcmVuZ2xvbmVzX2VudHJlbmFtaWVudG8sIF0KYGBgCgoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+My4gR2VuZXJhciBsYSBSZWQgTmV1cm9uYWw8L3NwYW4+CmBgYHtyfQpyZWRfbmV1cm9uYWwgPC0gbmV1cmFsbmV0KGRpYWdub3Npc34uLCBkYXRhPWVudHJlbmFtaWVudG8pCnBsb3QocmVkX25ldXJvbmFsLCByZXAgPSAiYmVzdCIpCmBgYAoKIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+NC4gUHJlZGVjaXIgY29uIGxhIFJlZCBOZXVyb25hbDwvc3Bhbj4KYGBge3J9CnByZWRpY2Npb24gPC0gY29tcHV0ZShyZWRfbmV1cm9uYWwsIHBydWViYSkgIyBmdW5jacOzbiBkZSBjb21wdXRhciBwYXJhIGhhY2VyIHByZWRpY2Npw7NuCnByZWRpY2Npb24kbmV0LnJlc3VsdApwcm9iYWJpbGlkYWQgPC0gcHJlZGljY2lvbiRuZXQucmVzdWx0CnJlc3VsdGFkbyA8LSBpZmVsc2UocHJvYmFiaWxpZGFkPjAuNSwxLDApCnJlc3VsdGFkbwojID4wLjUgPSBjYXNvIHBvc2l0aXZvIG1hbGlnbm8KIyA8MC41ID0gY2FzbyBuZWdhdGl2bwojIFNlIG5lY2VzaXRhbiBtw6FzIGVqZW1wbG9zIHBhcmEgbWF5b3IgcHJlY2lzacOzbgpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWU7Ij5Db25jbHVzaW9uPC9zcGFuPgpMYXMgcmVkZXMgbmV1cm9uYWxlcyBwZXJtaXRlbiBxdWUgbG9zIHByb2dyYW1hcyByZWNvbm96Y2FuIHBhdHJvbmVzIHkgcmVzdWVsdmFuIHByb2JsZW1hcyBjb211bmVzIGVuIGludGVsaWdlbmNpYSBhcnRpZmljaWFsIHkgYXByZW5kaXphamUgYXV0b23DoXRpY28uIEFsIG9idGVuZXIgdW4gcmVzdWx0YWRvIG1heW9yIGEgMC41IHNlIGFzdW1lIHF1ZSBlcyB1biBjYXNvIHBvc2l0aXZvIGEgdW4gdHVtb3IgbWFsaWdubyB5IGFsIHNlciBtZW5vciBhIDAuNSBlcyB1biBjYXNvIG5lZ2F0aXZvLgo=