Explora más de 1,5 millones de audiolibros y libros electrónicos gratis durante días

Al terminar tu prueba, sigue disfrutando por $11.99 al mes. Cancela cuando quieras.

Inteligencia artificial para programadores con prisa
Inteligencia artificial para programadores con prisa
Inteligencia artificial para programadores con prisa
Libro electrónico683 páginas6 horasUNIVERSO DE LETRAS

Inteligencia artificial para programadores con prisa

Calificación: 5 de 5 estrellas

5/5

()

Leer vista previa

Información de este libro electrónico

El área de inteligencia artificial (AI) es muy amplia y está teniendo en los últimos años un crecimiento exponencial. Sin embargo, parte de las razones por las cuales se realiza este libro en específico se debe a que habiendo tantos métodos, algoritmos, problemas y aplicaciones pueden ser abordados desde muchas perspectivas. Así mismo, se muestran de manera sencilla algunas prácticas abordándolas paso a paso y utilizando uno de los lenguajes de programación más usados en la actualidad: Python 3.x
IdiomaEspañol
EditorialUniverso de Letras
Fecha de lanzamiento17 ene 2022
ISBN9788418856723
Inteligencia artificial para programadores con prisa
Autor

Marco Antonio Aceves Fernández

El Dr. Marco Antonio Aceves Fernández obtuvo su grado de ingeniero en Telemática en la Universidad de Colima (México). Posteriormente obtuvo su maestría y su doctorado, ambos en la University of Liverpool (Reino Unido) en el área de Sistemas Inteligentes en el 2005. Ha contribuido en múltiples proyectos tanto para la industria como en academia y gobierno en el área de sistemas inteligentes en aplicaciones tan diversas como: ambiental, biomédica, automotriz, aeroespacial, de consumo, robótica, entre otras. Es profesor-investigador, miembro del sistema nacional de investigadores, miembro senior de la IEEE, presidente honorario de la Asociación Mexicana de Software Embebido y miembro de la mesa directiva de otras instituciones y asociaciones.

Relacionado con Inteligencia artificial para programadores con prisa

Títulos en esta serie (100)

Ver más

Libros electrónicos relacionados

Programación para usted

Ver más

Comentarios para Inteligencia artificial para programadores con prisa

Calificación: 5 de 5 estrellas
5/5

2 clasificaciones1 comentario

¿Qué te pareció?

Toca para calificar

Los comentarios deben tener al menos 10 palabras

  • Calificación: 5 de 5 estrellas
    5/5

    Oct 11, 2024

    Muy buen libro, sirve para repasar algunas tecnicas y definiciones

Vista previa del libro

Inteligencia artificial para programadores con prisa - Marco Antonio Aceves Fernández

Inteligencia-Artificial-para-Programadorescubiertav1.pdf_1400.jpg

Inteligencia Artificial

para Programadores con Prisa

Marco Antonio Aceves Fernández

Inteligencia Artificial para Programadores con Prisa

Marco Antonio Aceves Fernández

Esta obra ha sido publicada por su autor a través del servicio de autopublicación de EDITORIAL PLANETA, S.A.U. para su distribución y puesta a disposición del público bajo la marca editorial Universo de Letras por lo que el autor asume toda la responsabilidad por los contenidos incluidos en la misma.

No se permite la reproducción total o parcial de este libro, ni su incorporación a un sistema informático, ni su transmisión en cualquier forma o por cualquier medio, sea éste electrónico, mecánico, por fotocopia, por grabación u otros métodos, sin el permiso previo y por escrito del autor. La infracción de los derechos mencionados puede ser constitutiva de delito contra la propiedad intelectual (Art. 270 y siguientes del Código Penal).

© Marco Antonio Aceves Fernández, 2021

Diseño de la cubierta: Equipo de diseño de Universo de Letras

www.universodeletras.com

Primera edición: 2021

ISBN: 9788418854613

ISBN eBook: 9788418856723

Quiero dedicar el presente libro a mi madre

M.ª del Socorro Fernández Valadez (q.e.p.d.),

mi mentora, quien me enseñó que todo logro

requirió esfuerzo y alcanzar

cada sueño, sacrificio.

Índice general

Acerca de este libro 23

Capítulo 1. Introducción 25

Capítulo 2. Conceptos básicos de Python 31

2.1. Jupyter Notebooks 32

2.2. Instalación de Python 32

2.3. Funciones básicas 35

2.4. Tipos de datos 37

2.5. Estructuras de datos 37

2.6. Ciclos y condicionales 37

Capítulo 3. Conceptos básicos de Inteligencia Artificial 41

3.1. Inteligencia artificial 41

3.1.1. Ramas de la inteligencia artificial 43

3.2. Reglas 45

3.3. Entropía 46

3.4. Determinismo 47

3.5. Heurística y metaheurística 48

3.6. Espacio de búsqueda 50

3.7. Instancias 53

3.8. Atributos 53

3.9. Observaciones 58

3.10. Hiperparámetros 60

3.11. Medidas de distancia 60

3.11.1. Distancia euclidiana 62

3.11.2. Distancia Manhattan 63

3.11.3. Distancia Chebyshev 64

3.12. Tipos de algoritmos de inteligencia artificial 65

3.12.1. Algoritmos de acuerdo al estilo de aprendizaje 65

3.12.2. Aprendizaje supervisado 66

3.12.3. Aprendizaje automático 66

3.12.4. Aprendizaje semisupervisado 67

3.12.5. Algoritmos de acuerdo a su similitud 68

3.12.6. Algoritmos de regresión 68

3.12.7. Algoritmos basados en árboles de decisión 69

3.12.8. Algoritmos de agrupamiento (clustering) 70

3.12.9. Algoritmos basados en instancias 72

3.12.10. Algoritmos basados en reducción de dimensionalidad 73

3.12.11. Algoritmos de ensamble 74

3.12.12. Algoritmos basados en redes neuronales artificiales 75

3.12.13. Algoritmos basados en redes neuronales profundas 75

Capítulo 4. Manejo de Datos 77

4.1. Análisis de distribución de los datos 80

4.2. Distribución normal 82

4.3. Identificación de problemas de calidad en los datos 83

4.4. Manejo de valores faltantes 87

4.5. Imputación de datos 88

4.5.1. Técnicas por información externa o deductiva 89

4.5.2. Técnicas deterministas de imputación 89

4.5.3. Técnicas estocásticas de imputación 90

4.5.4. Métodos de imputación múltiple 91

4.6. Determinar relaciones entre atributos de los datos 92

4.6.1. Gráfica de dispersión (scatter) 93

4.6.2. Gráfica de barras apilada (stacked bar) 94

4.6.3. Gráfica de caja (boxplot) 95

4.6.4. Consideraciones de las relaciones entre variables 97

4.7. Simplificación de datos escasos 98

4.8. Cantidades y descripciones de los datos 99

4.9. Normalizar y escalar los datos 102

4.9.1. Codificación uno-a-n 103

4.9.2. Normalización de valores ordinales 104

4.9.3. Normalización de valores cuantitativos 105

4.10. Representación de los datos 107

4.10.1. Tablas de decisión 107

4.10.2. Árboles de decisión 108

4.10.3. Reglas de clasificación 109

4.10.4. Agrupaciones 110

4.11. Metadatos 111

Capítulo 5. Aprendizaje máquina 113

5.1. Aprendizaje inductivo 116

5.2. Aprendizaje analítico o deductivo 118

5.3. Aprendizaje evolutivo 118

5.4. Generalización 118

5.5. Aprendizaje máquina 119

5.5.1. Aprendizaje por refuerzo 120

5.5.2. Aprendizaje basado en similitud 121

5.5.5. Aprendizaje basado en probabilidad 124

5.5.6. Aprendizaje basado en error 126

5.5.7. Aprendizaje Supervisado 129

5.5.8. Aprendizaje automático 130

5.6. Metodología propuesta para el desarrollo de algoritmos de IA 131

5.6.1. Recolectar 131

5.6.2. Preparar 132

5.6.3. Analizar 135

5.6.4. Entrenar 136

5.6.5. Probar 137

5.6.6. Usar 137

5.7. Aprendizaje por árboles de decisión 138

5.8. Bosques aleatorios 146

5.9. Entrenamiento 149

5.9.1. Particionar los datos de entrenamiento 150

5.10. Evaluación del modelo 153

5.10.1. Sesgo 159

5.10.2. Sobreaprendizaje 161

5.10.3. Subaprendizaje 161

5.10.4. Regularización 161

5.10.5. Generalización 164

5.11. Predecir el rendimiento de un modelo 164

5.12. Validación cruzada 167

5.13. Validación en línea 169

5.14. Validación a una instancia 170

5.15. Pruebas de cobertura 170

5.16. Métricas de exactitud de un modelo 173

5.16.1. Métricas para datos categóricos 173

5.16.2. Métricas para datos continuos 177

5.17. Precisión y exactitud 182

5.18. Metaaprendizaje 183

Capítulo 6. Redes Neuronales 187

6.1. Redes neuronales convolucionales 190

6.2. Redes neuronales recurrentes 194

6.3. Funciones de activación 196

6.3.1. Función de escalón 197

6.3.2. Función sigmoide 198

6.3.3. Función tanh (tangente hiperbólica) 199

6.3.4. Función de rectificación lineal (ReLU) 200

Capítulo 7. Factores que afectan el rendimiento en un algoritmo de IA (factores a considerar) 203

7.1. Preparación de los datos 204

7.1.1. Datos faltantes 204

7.1.2. Valores atípicos 206

7.1.3. Escalar y normalizar 207

7.1.4. Lidiar con el ruido 209

7.2. Velocidad de la predicción 211

7.3. Capacidad de reentrenamiento 212

7.4. Configuración de hiperparámetros 213

7.5. Seleccionar el algoritmo adecuado 217

7.6. Elección de la función de activación 223

7.7. Mejorar la exactitud y el rendimiento del algoritmo 225

7.7.1. Mejorar el rendimiento mediante datos 226

7.7.2. Mejorar el rendimiento mediante algoritmos 228

7.7.3. Mejorar el rendimiento mediante algoritmos de ensamble 230

Capítulo 8. Prácticas de IA en Python 233

8.1. Normalización 235

8.1.1. Min-max 236

8.1.2. Z-score 237

8.1.3. Normalización por medias 237

8.1.4. Normalización por vector unitario 238

8.1.5. Comparación entre métodos 239

8.2. Cálculo de distancia euclidiana 245

8.3. Cálculo de distancia Manhattan 253

8.4. Cálculo de distancia Chebyshev 260

8.5. Relaciones entre atributos 270

8.5.1. Gráfica de scatter en 3D 270

8.5.2. Gráfica de dispersión tipo matriz 276

8.5.3. Gráfica de barra apilada (stacked bar) 280

8.5.4. Gráfica de cajas (boxplot) 284

8.6. Detección de errores de cardinalidad 288

8.7. Detección de valores atípicos (outliers) 295

8.8. Análisis de componentes principales (PCA) 298

8.9. Creación de datos sintéticos 314

8.10. Técnica de imputación múltiple MICE 330

8.11. Regresión lineal y polinomial 339

8.12. Gradiente descendente 346

8.13. Método de validación cruzada (K-fold) 362

8.14. Algoritmo K-medias (K-means) 368

8.15. Algoritmo K-vecinos más cercanos (KNN) 383

8.16. Árboles de decisión 395

8.17. Algoritmo de bosques aleatorios 403

8.18. Red neuronal simple (perceptrón) 411

8.19. Perceptrón multicapa (MLP) 419

8.20. Red neuronal convolutiva (CNN) 427

8.21. Red neuronal recurrente (RNN) 457

Apéndice. Datos Usados en este Libro 475

A.1. Lirios 475

A.2. Enfermedad coronaria 477

A.3. Gorriones 478

A.4. Distancia ciudades en américa 481

A.5. Condiciones climáticas 484

A.6. Síntomas de meningitis 485

A.7. Datos de partículas contaminantes PM10 486

A.8. Otras bases de datos 487

A.8.1. Datos de pasajeros del Titanic 487

A.8.2. Datos aleatorios de edades 488

Glosario de Términos 489

Lista de figuras

Figura 1.1. Comparación entre sistemas expertos, sistemas difusos, redes neuronales y algoritmos genéticos 29

Figura 2.1. Instalación de Jupyter Notebook 33

Figura 2.2. Ejemplo de interface Jupyter Notebook 34

Figura 2.3. Ejemplo de interface Jupyter Notebook 34

Figura 2.4. Ejemplo de «Hello World» 35

Figura 2.5. Tipos de variables 36

Figura 2.6. Ciclos y condicionales 38

Figura 2.7. Resultado de la ejecución del código de la figura 2.6 39

Figura 3.1. Taxonomía general de la inteligencia artificial 45

Figura 3.2. Ejemplo de un espacio de búsqueda para algoritmos de optimización 51

Figura 3.3. ejemplo de exploración vs explotación 52

Figura 3.4. Diferencia entre instancia, característica, observación y atributo 58

Figura 3.5. Representación de la distancia euclidiana 62

Figura 3.6. Ejemplo de cálculo de la distancia euclidiana 63

Figura 3.7. Representación de la distancia Manhattan 64

Figura 3.8. Representación de la distancia Chebyshev 65

Figura 3.9. Ejemplo de algoritmos de aprendizaje supervisado 66

Figura 3.10. Ejemplo de algoritmos de aprendizaje automático 67

Figura 3.11. Ejemplo de algoritmos de aprendizaje semisupervisado 67

Figura 3.12. Ejemplo de algoritmos de regresión 69

Figura 3.13. Ejemplo de algoritmos basados en árboles de decisión 70

Figura 3.14. Ejemplo de algoritmos de agrupamiento 71

Figura 3.15. Ejemplo de algoritmos basados en instancias 72

Figura 3.16. Ejemplo de algoritmos basados en reducción de dimensionalidad 73

Figura 3.17. Ejemplo de algoritmos de ensamble 74

Figura 3.18. Ejemplo de redes neuronales profundas 76

Figura 4.1. Histogramas ejemplo de seis diferentes tipos de distribución de los datos. a) Uniforme, b) normal (unimodal), c) unimodal sesgado izquierda, d) unimodal sesgado derecha, e) multimodal, f) exponencial 81

Figura 4.2. Tres distribuciones gaussianas. (a) Distribución con desviación estándar idéntica pero diferentes medias. (b) Distribución con media idéntica, pero diferente desviación estándar 83

Figura 4.3. Tendencia de los datos cuando es modificada por un dato atípico 86

Figura 4.4. Gráfica de dispersión 2D. a) Dispersión X1 (longitud total) vs X2 (extensión del ala). b) X1 vs X5 (longitud del esternón) 93

Figura 4.5. Gráfica de dispersión tipo matriz 94

Figura 4.6. Gráfica de barras apilada 95

Figura 4.7. Gráfica de caja. Característica X1 - longitud total 96

Figura 4.8. Gráfica de caja. Característica X2 - extensión del ala. 97

Figura 4.9. Cuarteto de Anscombe 98

Figura 4.10. Ejemplo de una tabla de decisión 108

Figura 4.11. Ejemplo de un árbol de decisión 108

Figura 4.12. Regla de clasificación 109

Figura 4.13. Diferentes maneras de visualizar las agrupaciones 110

Figura 5.1. Tipos de aprendizaje automático 115

Figura 5.2. Ejemplo de un algoritmo de aprendizaje por refuerzo 121

Figura 5.3. Ejemplo de algoritmo de vecinos más cercanos K-NN 123

Figura 5.4. Ejemplo de regresión lineal 127

Figura 5.5. Ejemplo de regresión polinomial de grado 3 128

Figura 5.6. Tipos de aprendizaje por interacción hombre-máquina 130

Figura 5.7. Nodo raíz para un árbol de decisión con el algoritmo ID3 143

Figura 5.8. Árbol de decisión con el algoritmo ID3, decisión clima soleado y nublado. 144

Figura 5.9. Árbol de decisión con el algoritmo ID3 terminado 145

Figura 5.10. Estructura de un bosque aleatorio 146

Figura 5.11. Diferentes tipos de entrenamiento 150

Figura 5.12. Partición recomendada del conjunto de datos en datos de entrenamiento, validación y pruebas 152

Figura 5.13. Matriz de confusión para un ejemplo de cinco clases 158

Figura 5.14. Sesgo de una función de activación 160

Figura 5.15. Comportamiento típico de la pérdida del entrenamiento con respecto al número de iteraciones 162

Figura 5.16. Diferencia entre pérdida del entrenamiento y pérdida de la validación, representando una mala generalización 162

Figura 5.17. Pérdida del entrenamiento y pérdida de la validación mostrando el momento de sobreaprendizaje 163

Figura 5.18. Diferencia de la pérdida del entrenamiento y pérdida de la validación antes y después de la regularización 164

Figura 5.19. Ejemplo de la distribución de las pruebas para una validación cruzada «10-fold» 169

Figura 5.20. Ejemplo de un árbol de decisión para pruebas de cobertura 171

Figura 5.21. Ejemplo de una prueba de cobertura 172

Figura 5.22. Ejemplo de datos reales vs datos predichos por una red recurrente tipo LSTM 181

Figura 5.23. Diferencia entre exactitud y precisión 182

Figura 6.1. Topología de una red neuronal simple 189

Figura 6.2. Imagen vista como una matriz 192

Figura 6.3. Imagen vista como un vector 192

Figura 6.4. Ejemplo de una red recurrente 195

Figura 6.5. Función de activación de escalón 197

Figura 6.6. Función de activación sigmoide 198

Figura 6.7. Función de activación tanh 199

Figura 6.8. Función de activación ReLU 200

Figura 7.1. Consideración de análisis para datos con outliers 207

Figura 7.2. Simulación de ruido en bases de datos basado en k-fold 211

Figura 7.3. Forma genérica de una red neuronal 218

Figura 7.4. Forma de un clasificador tipo «Naive Bayes» 219

Figura 7.5. Forma genérica de un árbol de decisión 220

Figura 7.6. Forma del algoritmo K-vecinos cercanos 221

Figura 7.7. Forma del algoritmo máquina de soporte de vectores 222

Figura 7.8. Tipos de algoritmos de aprendizaje máquina 222

Figura 8.1. Distribución de datos con la normalización min-max 241

Figura 8.2. Distribución de datos con la normalización z-score 241

Figura 8.3. Distribución de datos con la normalización por medias 241

Figura 8.4. Distribución de datos con la normalización por vector unitario 242

Figura 8.5. Comparación de distribución de datos utilizando normalización 242

Figura 8.6. Conjunto de datos normalizado con min-max 243

Figura 8.7. Conjunto de datos normalizado con min-max2 243

Figura 8.8. Conjunto de datos normalizado con z-score 244

Figura 8.9. Conjunto de datos normalizado con normalización por medias 244

Figura 8.10. Conjunto de datos normalizado con normalización por vector unitario 244

Figura 8.11. Conjunto de datos de gorriones 246

Figura 8.12. Datos e índices de la base de datos de gorriones X1 vs X2 247

Figura 8.13. Resultado de distancia euclidiana 249

Figura 8.14. Resultado del segundo cálculo de la distancia euclidiana 250

Figura 8.15. Resultado tres de la distancia euclidiana 251

Figura 8.16. Distancia euclidiana para varios índices simultáneos 252

Figura 8.17. Cuadrícula para representar la distancia Manhattan 254

Figura 8.18. Cuadrícula para representar la distancia Manhattan mostrando puntos de inicio y de fin 255

Figura 8.19. Cuadrícula para representar la distancia Manhattan con puntos de inicio y de fin 256

Figura 8.20. Cálculo de distancia Manhattan por número de píxeles 257

Figura 8.21. Cálculo de distancia Manhattan con dimensiones de cuadros 258

Figura 8.22. Cálculo de la distancia Manhattan con resultado de la distancia 260

Figura 8.23. Tablero de ajedrez para la distancia Chebyshev 262

Figura 8.24. Distancia Chebyshev mostrando el tablero de ajedrez y el rey 265

Figura 8.25. Cálculo de la distancia para una imagen ejemplo 269

Figura 8.26. Gráfica que muestra la relación entre tres atributos 275

Figura 8.27. Gráfica que muestra la relación entre los tres atributos seleccionados 276

Figura 8.28. Matriz de dispersión que muestra las clases en diferentes colores 280

Figura 8.29. Gráfica de barra apilada 283

Figura 8.30. Gráfica de cajas de ejercicio de gorriones 288

Figura 8.31. Listado de base de datos de edad.csv 289

Figura 8.32. Gráficas de dispersión y de caja para detección de errores de cardinalidad 293

Figura 8.33. Listado de errores de cardinalidad 294

Figura 8.34. Listado de errores de cardinalidad para datos no numéricos 294

Figura 8.35. Gráficas de dispersión y de caja para detección de valores atípicos 298

Figura 8.36. Representación gráfica de un componente principal 300

Figura 8.37. Listado de base de datos codificado para análisis de componentes principales 302

Figura 8.38. Normalización de datos para preprocesamiento de análisis de componentes principales 305

Figura 8.39. Cálculo de covarianza para PCA 306

Figura 8.40. Muestra de la base de datos de gorriones para datos sintéticos 318

Figura 8.41. Distribución estadística de los datos por atributo para el ejemplo de datos sintéticos 320

Figura 8.42. Ejemplo de un histograma para la distribución de datos para el ejemplo de datos sintéticos 321

Figura 8.43. Instancias con observaciones únicas para el ejercicio de creación de datos sintéticos 325

Figura 8.44. Ejemplo de ruleta para la selección de datos aleatorios de las observaciones de datos sintéticos 327

Figura 8.45. Extracto de los datos creados sintéticamente en la base de datos 329

Figura 8.46. Comparación entre la distribución de datos original y cuando se agregan datos sintéticos 329

Figura 8.47. Extracto de la base de datos ambiental del apéndice A.7 332

Figura 8.48. Síntesis de porcentaje de valores inválidos de la base de datos 333

Figura 8.49. Ejemplo de una distribución de cada característica de la base de datos de partículas contaminantes. 333

Figura 8.50. Diferencia de distribuciones de datos originales e imputados con MICE 339

Figura 8.51. Muestra de datos utilizadas para el ejercicio de regresión 341

Figura 8.52. Muestra de datos filtrada por columnas utilizada para regresión 341

Figura 8.53. Regresión lineal con datos de contaminantes ambientales 345

Figura 8.54. Regresión polinomial de grado 3 con datos de contaminantes ambientales 345

Figura 8.55. Regresión polinomial de grado 5 con datos de contaminantes ambientales 346

Figura 8.56. Función para representar el ejemplo de gradiente descendente 350

Figura 8.57. Función para representar el ejemplo de gradiente descendente mostrando los contornos de la función 352

Figura 8.58. Extracto de los resultados por iteración del algoritmo de gradiente descendiente 356

Figura 8.59. Ejecución del algoritmo de gradiente descendiente mostrando su convergencia 359

Figura 8.60. Función graficada en 3D mostrando los resultados de gradiente descendente 360

Figura 8.61. Resultados finales del algoritmo gradiente descendente 361

Figura 8.62. Función Himmelblau para el ejercicio de descendiente al gradiente 362

Figura 8.63. División de datos para prueba de validación cruzada cuando k = 5 363

Figura 8.64. Resultado de la división de k-fold para k = 4 366

Figura 8.65. Extracto de la creación de listas para las particiones con k = 4 para validación cruzada 367

Figura 8.66. Extracto de la apertura de archivo iris.csv para K-medias 376

Figura 8.67. Listado de valores nulos por atributo (columnas) 376

Figura 8.68. Estadísticas de la base de datos por atributo (columnas) 377

Figura 8.69. Separación de datos para K-medias por el método 80-20 377

Figura 8.70. Ejecución del algoritmo de K-medias, mostrando las iteraciones 0 y 1 378

Figura 8.71. Ejecución del algoritmo de K-medias mostrando las iteraciones 8 y 9 378

Figura 8.72. Ejecución del algoritmo de K-medias mostrando el entrenamiento 379

Figura 8.73. Ejecución del algoritmo de K-medias mostrando las pruebas 380

Figura 8.74. Resultados del algoritmo de K-medias, el porcentaje de predicción correcta 382

Figura 8.75. Distribución de datos de enfermedad coronaria para ejercicio de KNN 385

Figura 8.76. Base de datos para el ejercicio de KNN, mostrando la normalización de los datos 386

Figura 8.77. Resumen de la clase para el ejercicio de KNN 391

Figura 8.78. Resultados del entrenamiento para el ejercicio de KNN 392

Figura 8.79. Datos de predicción vs datos reales para el algoritmo KNN 394

Figura 8.80. Ejemplo de un árbol de decisión mostrando sus atributos y las ganancias por atributo 396

Figura 8.81. Datos de la BD de Titanic para el algoritmo de bosques aleatorios 404

Figura 8.82. Listado de atributos de la BD de Titanic 405

Figura 8.83. Conversión de atributos numéricos mediante la función get_dummies 406

Figura 8.84. Información de los atributos de la BD de Titanic con la observación de si existen datos nulos 406

Figura 8.85. Información de los atributos de la BD de Titanic sin instancias nulas 407

Figura 8.86. Salida del algoritmo de bosque aleatorio 411

Figura 8.87. Diagrama de un perceptrón simple de una capa 412

Figura 8.88. Diagrama de una compuerta OR de dos entradas 412

Figura 8.89. Error por número de épocas de entrenamiento de una compuerta lógica OR por medio de un perceptrón simple 415

Figura 8.90. Diagrama de una compuerta XOR de dos entradas 416

Figura 8.91. Error por número de épocas de entrenamiento de una compuerta lógica XOR por medio de un perceptrón simple 418

Figura 8.92. Ejemplo de un perceptrón multicapa (MLP) 420

Figura 8.93. Función de Rosenbrock 422

Figura 8.94. Error de aprendizaje para el ejercicio MLP de la función de Rosenbrock 425

Figura 8.95. Comparación entre el entrenamiento (izquierda) y la prueba (derecha) de una función de Rosenbrock con un MLP 426

Figura 8.96. Ejemplo de canales en una imagen 430

Figura 8.97. Ejemplos de kernel para una red profunda convolutiva 437

Figura 8.98. Ejemplo de una zancada 2x2 para un kernel 4x4 en una red profunda convolutiva 438

Figura 8.99. Ejemplo de una zancada 4x4 para un kernel 4x4 en una red profunda convolutiva 438

Figura 8.100. Ejemplo de un padding de 1x1 y 2x2 439

Figura 8.101. Ejemplo de MaxPooling para una CNN 440

Figura 8.102. Ejemplo de dilatación = 1 para una CNN 440

Figura 8.103. Pérdida de entrenamiento y validación para una CNN 450

Figura 8.104. Época vs exactitud para una CNN para clasificación de imágenes 451

Figura 8.105. Pérdida de entrenamiento y validación por número de épocas para una red recurrente 471

Figura 8.106. Error RMSE para una red recurrente RNN 472

Figura 8.107. Datos reales vs datos predichos por una red recurrente RNN 473

Figura A.1. Mapa de las ciudades en el continente americano usada para ejercicios de optimización 483

Figura A.2. Ejemplo de datos continuos de partículas contaminantes PM10 486

Lista de tablas

Tabla 3.1. Ejemplo de instancias, atributos y observaciones 59

Tabla 4.1. Atributos de datos y las operaciones que se pueden realizar con cada uno 101

Tabla 5.1. Base de datos para caso de estudio de condiciones climáticas 140

Tabla 5.2. Atributos para observación de clima nublado 143

Tabla 5.3. Atributos para observación de clima soleado 144

Tabla 5.4. Atributos para observación de clima lluvioso 145

Tabla 5.5. Matriz de confusión para cálculo del error 156

Tabla 5.6. Probabilidad que una variable aleatoria X se encuentre dentro de un rango de confianza 166

Tabla 5.7. Ejemplo de datos utilizados para calcular las métricas para datos continuos 180

Tabla 8.1. Error con todos los atributos para comparación con PCA 312

Tabla 8.2. Error con los componentes principales usando PCA 314

Tabla A.1. Ejemplo de cada clase BD de lirios 476

Tabla A.2. Lista de supervivientes para la BD de gorriones 479

Tabla A.3. Lista de no supervivientes para la BD de gorriones 480

Tabla A.4. Tabla de distancias de ciudades de América 482

Tabla A.5. Condiciones climáticas para la base de datos clima 484

Tabla A.6. Tabla de la BD de meningitis 485

Acerca de este libro

Este libro de fundamentos de inteligencia artificial para programadores con prisa se pensó con el objetivo de presentar de manera sencilla el conocimiento adquirido que se remonta prácticamente desde que comencé la maestría en el año 2001, antes de que la inteligencia artificial fuera tan popular. Posteriormente, cuando terminé mi doctorado en el área de Sistemas Inteligentes, también en la Universidad de Liverpool (Inglaterra) en 2005, noté que hay un crecimiento enorme, pero también un gran desconocimiento de por dónde empezar de manera sencilla.

El área de inteligencia artificial (IA) es muy amplia y está teniendo en los últimos años un crecimiento exponencial. Sin embargo, parte de las razones por las cuales se realiza este libro en específico se debe a que habiendo tantos métodos, algoritmos, problemas y aplicaciones que pueden ser abordados desde muchas perspectivas y, por un lado, se vuelve complejo saber por dónde empezar y qué conocimientos se deben de tener al respecto, mientras que, por otro lado, en ocasiones solo se descarga un código y se ejecuta sin saber a ciencia cierta si lo que se está haciendo o si es lo correcto para ese problema en específico.

Este libro introductorio refleja algunos temas importantes mismos que se abordan con un lenguaje accesible para poder iniciar al lector en esta fascinante área que es la inteligencia artificial, y que considero se deben de explicar. Existen más algoritmos que no se abordan en el presente libro por cuestiones de espacio y número de prácticas. Así mismo, se muestran de manera simple algunas prácticas sencillas utilizando uno de los lenguajes de programación más usados en la actualidad: Python 3.x.

Existen muchos recursos en el internet que pueden ser muy útiles conforme el lector avance en la lectura del presente libro y de la serie de libros que se tienen contemplada. Aunque hay recursos como Mendeley®, DatainBrief®, GitHub, entre otros, recomiendo un repositorio de bases de datos de muchas áreas diferentes para poder explorar los temas que se vierten en el presente libro; esta base de datos es la conocida del repositorio de UCI que puede ser consultada y sus bases de datos descargadas de manera gratuita en la siguiente dirección: http://archive.ics.uci.edu/ml/index.php

Algunos de los datos de esta base de datos —y de otras— han sido recopiladas por el autor a manera de ejemplo práctico para la implementación y aprendizaje de los temas de esta serie de libros, mismos que son explicados en el apéndice A y que pueden ser encontrados en la siguiente dirección: http://www.amese.net/libro_ia/datos/

Por otro lado, además de plasmar las prácticas y explicarlas en este libro, pueden ser descargadas de la siguiente página: http://www.amese.net/libro_ia/Prog/

Por último, me gustaría aclarar que las prácticas, ejercicios y tips vertidos en este libro son solo una forma de abordar los temas de manera sencilla. Hay muchos otros estilos de programación, otras librerías y otras metodologías para explicar y programar los temas. Al respecto, quiero comentar que traté de realizarlo de manera práctica y clara y las prácticas están realizadas utilizando diferentes estilos de programación con ese mismo propósito, espero haber logrado mi objetivo de atraer tu interés por esta fascinante área. Si tienes un proyecto, negocio o aplicación en mente y no estás seguro por dónde empezar, envíame un correo a: [email protected]

Espero que disfruten este libro tanto como yo he disfrutado hacerlo.

Marco A. Aceves Fernández

Capítulo 1

Introducción

Comúnmente, cuando doy alguna plática o comento de manera informal que mi área de experiencia son los sistemas inteligentes, la reacción de la gente es muy diversa, aunque casi siempre obtengo la misma imagen mental de mis interlocutores y esta es la de un investigador que está haciendo un «terminator®» en su laboratorio esperando a que algo salga mal y la inteligencia artificial tome control sobre todo y todos en este mundo.

Esta visión apocalíptica de la mayoría de la gente está muy alejada de la realidad —por lo menos de momento— con la inteligencia artificial tomando un rol cada vez más importante en nuestra sociedad, pero quedándose aún en pañales en relación a la visión de ciencia ficción de las películas de Hollywood. Cuando uno se adentra en el cada vez más vasto mundo de la inteligencia artificial, uno de los mayores problemas es saber a qué algoritmo, tipo de procesamiento, variantes, etcétera, adentrarse.

También cuando se me pregunta: ¿cuál es el mejor algoritmo de inteligencia artificial?, mi respuesta es siempre: depende. Hay muchos tipos de algoritmos para muchos tipos diferentes de problemas. No existe una receta de cocina que permita modelar cualquier tipo de problema, bajo cualquier circunstancia con un solo algoritmo. En este sentido, cada vez los algoritmos son más complejos para hacer frente al incremento de la complejidad de los problemas que existen hoy en día.

Estos algoritmos «inteligentes» incluyen algoritmos basados en redes neuronales, cómputo evolutivo, inteligencia colectiva —también llamada inteligencia de enjambre—, lógica difusa, entre otros. Estas técnicas son parte de lo que se conoce como inteligencia artificial (IA). De esta forma, IA es una combinación de diversas disciplinas como las ciencias computacionales, la sociología, biología, matemáticas, etcétera.

A todo esto, ¿cómo se define la inteligencia? En este sentido, la definición no está muy clara y siempre está sujeta a debate. Los diccionarios definen inteligencia como la habilidad de comprender, de entender y de tener la capacidad de pensar y razonar. Otras palabras que suelen definir la inteligencia incluyen: creatividad, consciencia, habilidad, intuición, emoción, entre otros.

Eso nos lleva a la pregunta: ¿las computadoras pueden ser inteligentes? Esta es una pregunta que al día de hoy es objeto de un intenso debate.

Uno de los primeros trabajos en abordar la inteligencia artificial específicamente en relación con la era digital moderna fue escrito en 1950 por el matemático británico Alan Turing, llamado «Maquinaria de cómputo e inteligencia». Es por esto que a Turing se le conoce como el padre de la inteligencia artificial, principalmente, por su contribución en la teoría actual de cómputo. Fue el primero que hizo las preguntas y las pruebas de si las máquinas podían ser creadas para aprender.

El llamado test de Turing mide la capacidad de una máquina supuestamente inteligente contra una persona basada en comportamiento inteligente. Esta prueba, la cual Turing llamó el juego de imitar, consiste en una máquina y una persona, cada una en un cuarto separado y otro humano al que se le llamó el interrogador, quien no puede ver en qué cuarto está la máquina ni en cuál está la persona. La prueba consiste en que el interrogador pueda realizar preguntas cuya respuesta sea a modo de texto, es decir, escrito. Esto se realiza de tal forma que el interrogador no pueda sesgar su juicio de acuerdo con el sonido de una voz o la apariencia de una máquina o una persona. De esta forma, se le pregunta al interrogador si puede distinguir entre la máquina y la persona de acuerdo con las respuestas que recibió. Si el interrogador no es capaz de distinguir entre la máquina y la persona, entonces se asume que la máquina es inteligente.

Las características principales de las pruebas de Turing son:

•Trata de dar una noción objetiva sobre el término inteligencia de máquinas —comúnmente llamado en la actualidad inteligencia artificial—. El conocer la naturaleza del término inteligencia de un ser por medio de un particular set de preguntas puede proveer el comportamiento estándar para poder responder si una máquina es realmente inteligente.

•Provee un medio para no desviarse de algunos confusos métodos y si son o no apropiados los procesos internos por los cuales se podría considerar una máquina inteligente o si es «consciente» de sus acciones.

•Elimina cualquier sesgo a favor de un organismo viviente al forzar al interrogador a evaluar la inteligencia únicamente por el contenido de las respuestas.

A pesar de que aún se utiliza el test de Turing en muchas aplicaciones y algoritmos diferentes de inteligencia artificial, es vulnerable a muchos problemas inherentes a las pruebas. En primer lugar, los problemas a los que nos enfrentamos y la complejidad de estos ha cambiado radicalmente desde 1950. Así mismo, una máquina que haya sido entrenada para alguna habilidad en específico podría dar respuestas atinadas del test de Turing, pero si se hacen preguntas en un tema diferente, es probable que la máquina no pase el test.

En mi opinión, el test de Turing tiene un problema fundamental en lo que se refiere a tratar de medir la inteligencia de una máquina: el parámetro para poder decir si una máquina es inteligente es el de la inteligencia humana, lo cual me parece un error en muchas aplicaciones.

Es decir, se obliga a una máquina a llenar un molde de inteligencia humana para determinar si es inteligente, generalmente, por medio de tareas o problemas simbólicos. Existen muchos tipos de problemas en los cuales se requiere habilidades motrices, matemáticas, destreza manual, percepción de colores, texturas, formas, entre otros, que, si bien es cierto, no tienen que ver completamente con habilidades cognitivas, sí se puede considerar un componente de la inteligencia humana.

Turing también comentó acerca de la posibilidad de construir un programa inteligente en una computadora digital y las bases para delimitar dicho programa en términos de su capacidad, complejidad computacional, diseño, entre otros, para diseñar dicho programa. Existen principalmente dos objeciones en contra de dicha posibilidad de las máquinas inteligentes que valen la pena comentarlas en este apartado.

La primera ya ha sido refutada por algunos algoritmos de hoy en día, pero se mantuvo vigente por muchos años. Consiste

¿Disfrutas la vista previa?
Página 1 de 1