Redes Neuronales

0. Concepto

Una Red Neuronal 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)
## Cargando paquete requerido: ggplot2
## Cargando paquete requerido: lattice

2. Alimentar con la base de datos

df <- read.csv("C:\\Users\\mari0\\OneDrive\\Documents\\R Studio\\IA con impacto empresarial\\Modulo 2\\BD\\cancer_de_mama.csv")

#Cambiar los datos de tipo letra a tipo número
df$diagnosis <- ifelse(df$diagnosis == "M", 1, 0)

#Partición de la bd en 80% entrenamiento y 20% prueba
set.seed(123)
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) #para hacer la red neuronal
plot(red_neuronal, rep = "best")

4. Predecir con la Red Neuronal

prediccion <- compute(red_neuronal, prueba) #se hace la predicción
prediccion$net.result
##          [,1]
## 1   0.3486923
## 9   0.3486923
## 15  0.3486923
## 17  0.3486923
## 18  0.3486923
## 28  0.3486923
## 35  0.3486923
## 44  0.3486923
## 46  0.3486923
## 56  0.3486923
## 58  0.3486923
## 60  0.3486923
## 65  0.3486923
## 68  0.3486923
## 71  0.3486923
## 79  0.3486923
## 82  0.3486923
## 86  0.3486923
## 95  0.3486923
## 99  0.3486923
## 101 0.3486923
## 109 0.3486923
## 124 0.3486923
## 133 0.3486923
## 138 0.3486923
## 140 0.3486923
## 142 0.3486923
## 157 0.3486923
## 162 0.3486923
## 171 0.3486923
## 173 0.3486923
## 183 0.3486923
## 188 0.3486923
## 189 0.3486923
## 193 0.3486923
## 201 0.3486923
## 203 0.3486923
## 206 0.3486923
## 207 0.3486923
## 216 0.3486923
## 220 0.3486923
## 227 0.3486923
## 233 0.3486923
## 240 0.3486923
## 242 0.3486923
## 247 0.3486923
## 251 0.3486923
## 256 0.3486923
## 259 0.3486923
## 261 0.3486923
## 262 0.3486923
## 275 0.3486923
## 284 0.3486923
## 293 0.3486923
## 296 0.3486923
## 303 0.3486923
## 305 0.3486923
## 317 0.3486923
## 318 0.3486923
## 320 0.3486923
## 323 0.3486923
## 329 0.3486923
## 332 0.3486923
## 340 0.3486923
## 341 0.3486923
## 352 0.3486923
## 354 0.3486923
## 358 0.3486923
## 359 0.3486923
## 369 0.3486923
## 370 0.3486923
## 371 0.3486923
## 375 0.3486923
## 386 0.3486923
## 387 0.3486923
## 394 0.3486923
## 400 0.3486923
## 405 0.3486923
## 407 0.3486923
## 412 0.3486923
## 417 0.3486923
## 418 0.3486923
## 429 0.3486923
## 432 0.3486923
## 434 0.3486923
## 437 0.3486923
## 453 0.3486923
## 454 0.3486923
## 466 0.3486923
## 481 0.3486923
## 484 0.3486923
## 487 0.3486923
## 492 0.3486923
## 510 0.3486923
## 515 0.3486923
## 518 0.3486923
## 520 0.3486923
## 522 0.3486923
## 529 0.3486923
## 531 0.3486923
## 532 0.3486923
## 541 0.3486923
## 545 0.3486923
## 547 0.3486923
## 551 0.3486923
## 554 0.3486923
## 556 0.3486923
## 557 0.3486923
## 558 0.3486923
## 560 0.3486923
## 561 0.3486923
## 562 0.3486923
## 564 0.3486923
probabilidad <- prediccion$net.result
resultado <- ifelse(probabilidad>0.5,1,0)
resultado
##     [,1]
## 1      0
## 9      0
## 15     0
## 17     0
## 18     0
## 28     0
## 35     0
## 44     0
## 46     0
## 56     0
## 58     0
## 60     0
## 65     0
## 68     0
## 71     0
## 79     0
## 82     0
## 86     0
## 95     0
## 99     0
## 101    0
## 109    0
## 124    0
## 133    0
## 138    0
## 140    0
## 142    0
## 157    0
## 162    0
## 171    0
## 173    0
## 183    0
## 188    0
## 189    0
## 193    0
## 201    0
## 203    0
## 206    0
## 207    0
## 216    0
## 220    0
## 227    0
## 233    0
## 240    0
## 242    0
## 247    0
## 251    0
## 256    0
## 259    0
## 261    0
## 262    0
## 275    0
## 284    0
## 293    0
## 296    0
## 303    0
## 305    0
## 317    0
## 318    0
## 320    0
## 323    0
## 329    0
## 332    0
## 340    0
## 341    0
## 352    0
## 354    0
## 358    0
## 359    0
## 369    0
## 370    0
## 371    0
## 375    0
## 386    0
## 387    0
## 394    0
## 400    0
## 405    0
## 407    0
## 412    0
## 417    0
## 418    0
## 429    0
## 432    0
## 434    0
## 437    0
## 453    0
## 454    0
## 466    0
## 481    0
## 484    0
## 487    0
## 492    0
## 510    0
## 515    0
## 518    0
## 520    0
## 522    0
## 529    0
## 531    0
## 532    0
## 541    0
## 545    0
## 547    0
## 551    0
## 554    0
## 556    0
## 557    0
## 558    0
## 560    0
## 561    0
## 562    0
## 564    0

5. Conclusión

Las redes neuronales permiten que los programas reconozcan patrones y resuelvan problemas comunes en inteligencia artificial y aprendizaje automático. En este caso tratamos de predecir si hay cáncer de mama o no. Donde si es mayor a 0.5 es un caso positivo, lo que significa que se predice que el diagnóstico es maligno.

LS0tDQp0aXRsZTogIlJlZGVzIG5ldXJvbmFsZXMgLSBjw6FuY2VyIg0KYXV0aG9yOiAiTWFyaWFuYSBSYW3DrXJleiBSYW1vcyAtIEEwMTE3NDE1NSINCmRhdGU6ICIyMDI0LTA4LTE1Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFDQogICAgdGhlbWU6ICJzcGFjZWxhYiINCiAgICBoaWdobGlnaHQ6ICJrYXRlIg0KLS0tDQoNCiFbXShDOlxcVXNlcnNcXG1hcmkwXFxPbmVEcml2ZVxcRG9jdW1lbnRzXFxSIFN0dWRpb1xcSUEgY29uIGltcGFjdG8gZW1wcmVzYXJpYWxcXE1vZHVsbyAyXFxHaWZzXFxnaWZfcmVkZXMyLmdpZikNCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6ICNEQTYyN0Q7Ij5SZWRlcyBOZXVyb25hbGVzPC9zcGFuPg0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6ICNEQTYyN0Q7Ij4wLiBDb25jZXB0bzwvc3Bhbj4NClVuYSBSZWQgTmV1cm9uYWwgQXJ0aWZpY2lhbCAoQU5OKSBtb2RlbGEgbGEgcmVsYWNpw7NuIGVudHJlIHVuIGNvbmp1bnRvIGRlIGVudHJhZGFzIHkgdW5hIHNhbGlkYSwgcmVzb2x2aWVuZG8gdW4gcHJvYmxlbWEgZGUgYXByZW5kaXphamUuICANCg0KRWplbXBsb3MgZGUgYXBsaWNhY2nDs24gZGUgUmVkZXMgTmV1cm9uYWxlcyBzb246ICANCjEuIExhIHJlY29tZW5kYWNpw7NuIGRlIGNvbnRlbmlkbyBkZSBOZXRmbGl4LiAgDQoyLiBFbCBmZWVkIGRlIEluc3RhZ3JhbSBvIFRpa1Rvay4gIA0KMy4gRGV0ZXJtaW5hciBlbCBuw7ptZXJvIG8gbGV0cmEgZXNjcml0byBhIG1hbm8uICANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiAjREE2MjdEOyI+MS4gSW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hczwvc3Bhbj4NCmBgYHtyfQ0KIyBpbnN0YWxsLnBhY2thZ2VzKCJuZXVyYWxuZXQiKQ0KbGlicmFyeShuZXVyYWxuZXQpDQojaW5zdGFsbC5wYWNrYWdlcygiY2FyZXQiKQ0KbGlicmFyeShjYXJldCkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6ICNEQTYyN0Q7Ij4yLiBBbGltZW50YXIgY29uIGxhIGJhc2UgZGUgZGF0b3M8L3NwYW4+DQpgYGB7cn0NCmRmIDwtIHJlYWQuY3N2KCJDOlxcVXNlcnNcXG1hcmkwXFxPbmVEcml2ZVxcRG9jdW1lbnRzXFxSIFN0dWRpb1xcSUEgY29uIGltcGFjdG8gZW1wcmVzYXJpYWxcXE1vZHVsbyAyXFxCRFxcY2FuY2VyX2RlX21hbWEuY3N2IikNCg0KI0NhbWJpYXIgbG9zIGRhdG9zIGRlIHRpcG8gbGV0cmEgYSB0aXBvIG7Dum1lcm8NCmRmJGRpYWdub3NpcyA8LSBpZmVsc2UoZGYkZGlhZ25vc2lzID09ICJNIiwgMSwgMCkNCg0KI1BhcnRpY2nDs24gZGUgbGEgYmQgZW4gODAlIGVudHJlbmFtaWVudG8geSAyMCUgcHJ1ZWJhDQpzZXQuc2VlZCgxMjMpDQpyZW5nbG9uZXNfZW50cmVuYW1pZW50byA8LSBjcmVhdGVEYXRhUGFydGl0aW9uKGRmJGRpYWdub3NpcyAscD0wLjgsIGxpc3Q9RkFMU0UpDQplbnRyZW5hbWllbnRvIDwtIGRmW3Jlbmdsb25lc19lbnRyZW5hbWllbnRvLCBdDQpwcnVlYmEgPC0gZGZbLXJlbmdsb25lc19lbnRyZW5hbWllbnRvLCBdDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiAjREE2MjdEOyI+My4gR2VuZXJhciBsYSBSZWQgTmV1cm9uYWw8L3NwYW4+DQpgYGB7cn0NCnJlZF9uZXVyb25hbCA8LSBuZXVyYWxuZXQoZGlhZ25vc2lzfi4sIGRhdGE9ZW50cmVuYW1pZW50bykgI3BhcmEgaGFjZXIgbGEgcmVkIG5ldXJvbmFsDQpwbG90KHJlZF9uZXVyb25hbCwgcmVwID0gImJlc3QiKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogI0RBNjI3RDsiPjQuIFByZWRlY2lyIGNvbiBsYSBSZWQgTmV1cm9uYWw8L3NwYW4+DQpgYGB7cn0NCnByZWRpY2Npb24gPC0gY29tcHV0ZShyZWRfbmV1cm9uYWwsIHBydWViYSkgI3NlIGhhY2UgbGEgcHJlZGljY2nDs24NCnByZWRpY2Npb24kbmV0LnJlc3VsdA0KcHJvYmFiaWxpZGFkIDwtIHByZWRpY2Npb24kbmV0LnJlc3VsdA0KcmVzdWx0YWRvIDwtIGlmZWxzZShwcm9iYWJpbGlkYWQ+MC41LDEsMCkNCnJlc3VsdGFkbw0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogI0RBNjI3RDsiPjUuIENvbmNsdXNpw7NuPC9zcGFuPg0KDQpMYXMgcmVkZXMgbmV1cm9uYWxlcyBwZXJtaXRlbiBxdWUgbG9zIHByb2dyYW1hcyByZWNvbm96Y2FuIHBhdHJvbmVzIHkgcmVzdWVsdmFuIHByb2JsZW1hcyBjb211bmVzIGVuIGludGVsaWdlbmNpYSBhcnRpZmljaWFsIHkgYXByZW5kaXphamUgYXV0b23DoXRpY28uIEVuIGVzdGUgY2FzbyB0cmF0YW1vcyBkZSBwcmVkZWNpciBzaSBoYXkgY8OhbmNlciBkZSBtYW1hIG8gbm8uIERvbmRlIHNpIGVzIG1heW9yIGEgMC41IGVzIHVuIGNhc28gcG9zaXRpdm8sIGxvIHF1ZSBzaWduaWZpY2EgcXVlIHNlIHByZWRpY2UgcXVlIGVsIGRpYWduw7NzdGljbyBlcyBtYWxpZ25vLg0K