Kitabı oku: «Introducción al Machine Learning con MATLAB»
Introducción al Machine Learning con MATLAB
Primera edición, 2021
© 2021 Erik Valdemar Cuevas, Omar Avalos, Primitivo Emanuel,
Arturo Valdivia y Marco Antonio Pérez
© 2021 MARCOMBO, S.L.
Diseño de la cubierta: ENEDENÚ DISEÑO GRÁFICO
Corrección: Mónica Muñoz y Héctor Tarancón
Directora de producción: M.ª Rosa Castillo
Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a Cedro (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra.
ISBN: 978-84-267-3282-8
Producción del ePub: booqlab
Índice general
Prólogo
CAPÍTULO 1. Fundamentos del Machine Learning
1.1. Introducción
1.2. Conceptos sobre datos
1.3. Conceptos sobre aprendizaje
1.4. Tipos de problemas
1.5. Tipos de datos
1.6. Tipos de aprendizajes
1.7. Etapas de implementación del aprendizaje máquina
1.8. Exploración y preparación de datos
1.9. Visualización de datos
Referencias
CAPÍTULO 2. Bases matemáticas
2.1. Introducción
2.2. Probabilidad
2.2.1. Variables aleatorias discretas
2.2.2. Reglas fundamentales
2.2.2.1. Probabilidad de la unión de dos elementos
2.2.2.2. Probabilidad de la intersección de dos elementos
2.2.2.3. Probabilidad condicional
2.2.3. Algunas distribuciones comunes
2.2.3.1. Distribución binomial y Bernoulli
2.2.3.2. Distribución multinomial
2.2.3.3. Distribución de Poisson
2.2.3.4. Distribución uniforme
2.2.3.5. Distribución normal (gaussiana)
2.3. Estadística
2.3.1. Medidas de tendencia central
2.3.1.1. Media aritmética
2.3.1.2. Mediana
2.3.1.3. Moda
2.3.2. Medidas de variabilidad
2.3.2.1. Varianza
2.3.2.2. Desviación estándar
2.3.2.3. Rango
2.3.3. Herramientas gráficas
2.3.3.1. Gráfica de líneas
2.3.3.2. Gráfica de barras
2.3.3.3. Gráfica de cajas
2.3.3.4. Histograma
2.4. Álgebra lineal
2.4.1. Vectores y matrices
2.4.2. Suma, resta y producto escalar de vectores
2.4.3. Norma vectorial
2.4.3.1. Norma L1
2.4.3.2. Norma L2
2.4.4. Matrices
2.4.4.1. Suma, resta y multiplicación de matrices
2.4.4.2. Multiplicación escalar de una matriz
2.4.4.3. Multiplicación de matrices
2.4.5. Tipo de matrices
2.4.6. Descomposición de matrices
2.4.6.1. Descomposición LU
2.4.6.2. Descomposición de los valores y vectores propios
Referencias
CAPÍTULO 3. Clasificación
3.1. Introducción
3.2. Vecinos cercanos (k-NN)
3.2.1. Ejemplo de clasificación utilizando k-NN en MATLAB
3.3. Regresión logística
3.3.1. Ejemplo de clasificación utilizando la regresión logística en MATLAB
3.4. Naive Bayes
3.4.1. Teorema de Bayes
3.4.2. Clasificador Naive Bayes
3.4.3. Ejemplo de clasificación Naive Bayes utilizando MATLAB
3.5. Análisis del discriminante de Fisher
3.5.1. Ejemplo de clasificación mediante discriminante de Fisher utilizando MATLAB
3.6. Máquina de vector soporte (SVM)
3.6.1. Ejemplo de clasificación con máquina vector soporte utilizando MATLAB
Referencias
CAPÍTULO 4. Regresión lineal
4.1. Introducción
4.2. Regresión lineal simple
4.3. Mínimos cuadrados
4.4. Gradiente descendente en regresión lineal simple
4.5. Ecuación normal en regresión lineal simple
4.6. Regresión lineal múltiple
Referencias
CAPÍTULO 5. Agrupamiento (clustering)
5.1. Introducción
5.2. Algoritmo de K-means
5.2.1. El uso de K-means en MATLAB
5.3. Método de expectación-maximización
5.3.1. Modelos de mezclas gaussianas
5.3.2. Estimación de máxima probabilidad
5.3.3. EM en una dimensión
5.3.4. EM en varias dimensiones
5.4. Agrupación jerárquica
5.4.1. Medidas de similaridad entre los clústeres
5.5. El algoritmo de Fuzzy C-means
Referencias
CAPÍTULO 6. Reducción de dimensionalidad
6.1. Introducción
6.2. Análisis de componentes principales (PCA)
6.2.1. Ejemplo en MATLAB de análisis de componentes principales (PCA)
6.3. Análisis de componentes independientes (ICA)
6.3.1. Distribuciones gaussianas no permitidas
6.3.2. Estimación de máxima probabilidad
6.3.3. Ejemplo en MATLAB de análisis de componentes independientes (ICA)
6.4. Análisis de factor (FA)
6.4.1. Ejemplo en MATLAB de análisis de factor (FA)
Referencias
CAPÍTULO 7. Métodos unidos
7.1. Árboles de decisión
7.2. Algoritmo CART
7.3. Árboles de decisión para clasificación
7.4. Árboles de decisión para regresión
7.5. Funciones de MATLAB para árboles de decisión
7.6. El método Bootstrap
Referencias
CAPÍTULO 8. Reconocimiento de objetos
8.1. Comparación en imágenes a escala de grises
8.2. Distancia entre patrones
8.3. Distancia y correlación
8.4. La correlación cruzada normalizada
8.5. Coeficiente de correlación
8.6. Reconocimiento de patrones usando el coeficiente de correlación
8.7. Comparación de imágenes binarias
8.7.1. La transformación de distancia
8.7.2. El algoritmo de Chamfer
8.8. Índice de relación de Chamfer
Referencias
CAPÍTULO 9. Estadística inferencial
9.1. Introducción
9.2. Distribución de muestreo
9.2.1. Distribución normal
9.2.2. Distribución t
9.3. Estimación de parámetros
9.3.1. Estimación por intervalos
9.4. Pruebas de hipótesis
Referencias
CAPÍTULO 10. Evaluación del desempeño
10.1. Introducción
10.2. Ajustes sobre las predicciones de un clasificador
10.2.1. Tipos de errores
10.2.2. Matriz de confusión
10.3. Métricas para clasificadores
10.3.1. Exactitud (ACC)
10.3.2. Razón de falsos positivos (FPR)
10.3.3. Sensibilidad (VPR)
10.3.4. Especificidad (SPC)
10.3.5. Precisión
10.3.6. F1
10.3.7. F2
10.4. Curva ROC
10.5. El balance entre el sesgo y la varianza
10.6. Evaluación de modelos
10.6.1. Técnicas comunes de validación cruzada
10.7. Métricas de error en regresores lineales
Referencias
PRÓLOGO
Durante muchos años, los humanos hemos buscado detalles estructurales en la información, tales como reglas o patrones con los que describir, con precisión, la manera en cómo funcionan los sistemas importantes que nos rodean, sean estos sistemas agrícolas, biológicos, físicos, financieros, etc. Estos detalles estructurales de la información permiten comprender mejor un sistema, predecir con precisión su comportamiento futuro y, en última instancia, manipularlo. Sin embargo, el proceso de encontrar la estructura adecuada que parece describir un sistema dado no ha sido históricamente una tarea sencilla. Todavía, en el pasado reciente, los datos disponibles que registran alguna característica emitida por un sistema han sido un elemento extremadamente escaso. Además, la capacidad para calcular, para probar varios métodos y verificar cuál presenta un mejor funcionamiento se ha limitado a lo que se podía lograr con calculadoras o equipos con escasos recursos informáticos. Ambos factores limitaron la gama de problemas que, en el pasado, se pudieron investigar y los forzaron, inevitablemente, a utilizar enfoques filosóficos y/o visuales para la extracción de conocimiento a partir de la información. Hoy, sin embargo, se tiene un mundo inundado de datos, y tenemos un poder informático impresionante al alcance de la mano. Bajo estas condiciones, se puede actualmente abordar una gran gama de problemas mucho más compleja, y adoptar un enfoque mucho más empírico para la extracción de información que en el pasado. El Machine Learning (o «aprendizaje de máquinas», en castellano), el tema de este libro, es una expresión usada para describir una colección amplia (y cada día creciente) de métodos de extracción de conocimiento diseñados para identificar, adecuadamente, información del sistema de manera empírica a partir de un conjunto de datos.
El Machine Learning representa una herramienta importante para la exploración de la extracción de conocimiento. Su principal objetivo reside en construir modelos que permitan describir posibles patrones estructurales en la información a partir de los datos, con el objetivo de tomar decisiones o hacer predicciones. El Machine Learning es un área que ha crecido vertiginosamente en los últimos años requiriendo, cada vez más, de técnicas sofisticadas que puedan tratar problemas más complejos de una manera flexible y con capacidades de adaptación. El Machine Learning abarca un numeroso conjunto de disciplinas tales como las matemáticas, la estadística, la informática, la ingeniería, etc.
El objetivo de este libro radica en brindar una visión particular de los principales métodos de Machine Learning y su implementación. La idea es proveer de los principales conceptos en los que se basan dichos métodos, y aplicarlos a problemas típicos del procesamiento de datos. Existe una gran cantidad de libros centrados solo en los aspectos teóricos de las técnicas de Machine Learning. Por otro lado, existe también una gran cantidad de bibliografía que brinda únicamente un nivel introductorio, sin considerar los principales detalles de los métodos. En general, en tales libros no se considera ni siquiera el aspecto práctico ni de implementación. Bajo dichas condiciones, con este libro se pretende llenar el espacio entre esas dos perspectivas. De esta manera, se intenta abordar específicamente las características importantes de los enfoques del Machine Learning, de tal modo que el lector pueda implementarlos y utilizarlos sin problemas a casos reales.
En la última década, el número de usuarios de Machine Learning ha crecido de forma espectacular. Partiendo de un círculo relativamente pequeño en los departamentos de Informática, Ingeniería y Matemáticas, los usuarios de Machine Learning ahora incluyen a estudiantes e investigadores de todas las áreas del conocimiento, así como a miembros de la industria, científicos de datos, emprendedores y entusiastas del Machine Learning. Este libro es el resultado de un desmantelamiento completo del plan de estudios estándar del Machine Learning en sus componentes más fundamentales, y un reensamblaje de esas piezas (cuidadosamente pulidas y organizadas), que creemos beneficiarán más a la audiencia cada vez mayor de estudiantes. Contiene descripciones intuitivas, pero rigurosas, de los conceptos más fundamentales y necesarios para analizar información a partir de datos.
En esta obra se presentan enfoques para la exploración y el análisis de datos. En particular, se discute acerca de los esquemas de Machine Learning y de Data Mining. Aunque el libro incluye diferentes aspectos matemáticos de la teoría de Machine Learning y de los operadores de reconocimiento de patrones, no debe ser considerado un libro meramente teórico. Su contenido se encuentra más relacionado con los aspectos prácticos de tales métodos, y su aplicación como herramientas de ciencias de la computación. El principal objetivo reside en brindar una visión unificada de los métodos de Machine Learning, de tal forma que se presentan los principios fundamentales, así como los métodos considerados esenciales.
Los esquemas de Machine Learning tratados en este libro son examinados con el objetivo de que sean implementados y utilizados. Esta obra, a diferencia de otras existentes sobre Machine Learning o ciencia de datos, ha sido escrita desde una perspectiva pedagógica. Su material ha sido tratado de tal forma que el lector es asistido para obtener una idea clara, pero, al mismo tiempo, rigurosa de cada método. En muchos libros se discute acerca de una gran variedad de métodos como un recetario sin ningún soporte teórico. Por otro lado, en otros libros también se consideran los enfoques de Machine Learning de forma solamente teórica, siendo no totalmente accesibles a estudiantes o profesionales de otras áreas ajenos a las ciencias de la informática, como lo son la administración o la economía. Por el contrario, se pretende hacer un compromiso entre ambos objetivos, presentando cada enfoque con el contenido teórico necesario, además de información de fácil implementación.
El libro provee, así, de los conceptos necesarios que habilitan al lector a implementar y modificar los métodos de Machine Learning, con el fin de obtener las habilidades proyectadas en las necesidades específicas de cada problema. Para ello, se introducen numerosos ejemplos de problemas y soluciones, con los que se demuestra la potencia de tales métodos. Se provee también, con cada enfoque, de ejemplos simples fáciles de entender, preparados de una manera intuitiva al lector, con los que esperar el resultado fácilmente. Esto contrasta con la mayoría de los libros de esta área, donde se presentan ejemplos de tal complejidad que resulta difícil el entendimiento del propio problema, sin contar con la comprensión de su solución.
La obra se basa enteramente en el software MATLAB®, el cual es considerado hoy día como un estándar en la programación científica e industrial. MATLAB contiene ya, dentro de sus funciones, poderosos métodos numéricos, que pueden ser adaptados a aplicaciones particulares. Bajo tales condiciones, el usuario puede estar más concentrado en la estructura de su aplicación que en la programación misma. Presentar el código de los programas como ayuda al lector constituye uno de los principales puntos del libro en el área de las ciencias de la informática. Además, colgarlos en una página web puede derivar en su desaparición con el transcurso de los años. Así, una de las principales características de este libro reside en que todos los enfoques presentados han sido programados en MATLAB, y su código se presenta impreso en el libro. Resulta importante hacer notar, igualmente, que los códigos contenidos en el libro no intentan ser eficientes o competitivos, desde la perspectiva de la programación. En lugar de esto, se ha decidido presentar el código de la implementación de cada método de una forma pedagógica, de tal manera que el lector comprenda cómo el método se comporta y ejecuta.
Con la notación usada en el libro, se asume que el lector se halla familiarizado con conceptos básicos de álgebra, geometría, teoría de conjuntos y cálculo. En términos generales, un lector no aprovechará esta obra si no tiene la intención de implementar informáticamente los métodos presentados. Bajo tales condiciones, se considera como prerrequisito contar con conocimientos básicos de programación.
Debido a su contenido y a la estructura del libro, este resulta adecuado para estudiantes y profesionales en el área de ciencias de la informática, inteligencia artificial, investigación de operaciones, matemáticas aplicadas y algunas otras disciplinas. De igual manera, muchos ingenieros que trabajan en la industria pueden encontrar interesante el contenido de la obra. En este caso, las sencillas exposiciones y el código provisto pueden servir de ayuda para la rápida solución a problemas de extracción de información a partir de datos que, normalmente, surgen en varios nichos y proyectos industriales o comerciales.
Escribir un libro de Machine Learning parece intrascendente. Existen ya varios libros de texto y de consulta dirigidos a lectores con diferentes niveles de conocimiento en la materia. Sin embargo, de las decenas de obras que existen, estos se reducen a prácticamente muy pocos, si se restringen las opciones a los escritos en español. Bajo tales circunstancias, cuando se concibió el proyecto de escritura se decidió que era necesario tener algo que decir sobre el orden, la profundidad y la manera de exponer los conceptos del Machine Learning en nuestro idioma.
Nuestra premisa original fue que los métodos de Machine Learning pueden exponerse de manera comprensible para lectores con poco entrenamiento matemático. En consecuencia, intentamos escribir un libro cuyo contenido fuese no solo entendible, sino aplicable por cualquier estudiante de licenciatura. Aunque algunos conceptos pueden ser complejos para su comprensión cabal, tratamos de exponerlos con claridad y sin pretender disimular su dificultad implícita. Sin sacrificar las necesidades inmediatas del lector, subrayamos la importancia de que se comprendan los métodos descritos, bajo el supuesto de que, a veces, resulta preferible no usar tales métodos a usarlos mal.
En el largo proceso de escribir el libro, nuestra perspectiva ha variado. Planeado para un curso completo, el material que presentamos puede cubrirse en un semestre. El libro se compone de 10 capítulos. Los detalles en el tratamiento de cada uno de ellos se describen a continuación.
En el capítulo 1 se presentan los conceptos básicos del aprendizaje máquina, que permitirán al lector familiarizarse con el tema. Además, se introducen los pasos básicos en la aplicación del aprendizaje máquina. Por último, se discute acerca de la importancia de los tipos de datos, su preprocesamiento y su despliegue. Los objetivos principales de este capítulo residen en aprender, de forma rápida y sencilla, el proceso de aplicación del aprendizaje máquina, así como comprender sus principios.
El capítulo 2 es considerado también introductorio. En él se abordarán las herramientas matemáticas, las cuales nos ayudarán a comprender, de una mejor manera, las técnicas de aprendizaje máquina que se revisarán en capítulos posteriores. En este capítulo se tratarán las bases de probabilidad, álgebra lineal y estadística.
En el capítulo 3, por su parte, se estudiará la problemática de la clasificación, uno de los principales temas del aprendizaje máquina. El concepto principal de la clasificación es la correcta separación de elementos en grupos o clases, de modo que, cuando un nuevo elemento es adquirido, pueda etiquetarse dentro del grupo con el cual comparta más características, esto con el mínimo error posible en la clasificación. Ciertamente, la clasificación no representa una tarea fácil de realizar, debido a muchos factores que han de ser considerados, por lo que existe una amplia variedad de técnicas para llevar a cabo dicho trabajo. En este capítulo se describen diferentes métodos de clasificación para distintos esquemas, en los que un solo clasificador no podría realizar la separación de manera correcta.
En el capítulo 4 se analizan diversas técnicas clásicas de predicción mediante el ajuste de parámetros lineales. Este tipo de metodologías son muy populares dentro del área de aprendizaje automático debido, principalmente, a que la matemática con que se las describe se presenta relativamente sencilla y de fácil implementación. La idea fundamental en este tipo de metodologías de regresión resulta muy similar a la de clasificación analizada en el capítulo anterior. La diferencia radica en que, mientras que con la clasificación se predice una variable de tipo categórica, en la regresión se infiere una variable de respuesta continua. En el desarrollo del capítulo se analiza de manera detallada las bases matemáticas de las distintas técnicas de regresión, así como su implementación en el ambiente del software MATLAB®.
En el capítulo 5 se realiza una introducción a varios paradigmas de agrupamiento y asociación de datos. En él se analizan los principales enfoques de agrupamiento, como lo son los basados en centroide, los jerárquicos, los basados en principios difusos y aquellos en los que se considera la optimización de una función objetivo. En la estructura del capítulo, cada técnica es tratada de forma individual analizando primeramente sus conceptos teóricos. Después, un ejemplo numérico tiene el objetivo de facilitar su comprensión. Finalmente, una implementación sencilla en MATLAB es incorporada y discutida.
En el capítulo 6 se aborda el tema de la reducción de dimensionalidad, proceso en el cual, teniendo datos con altas dimensiones, estos son mapeados en un espacio con una menor dimensionalidad. Tales técnicas se emplean cuando se tiene una gran cantidad de datos en altas dimensiones, esto se hace para poder tratar dichos datos de una manera más práctica con un esfuerzo computacional menor, al igual que se evita para ciertos casos la mala generalización para técnicas de aprendizaje. Existen varias técnicas para llevar a cabo dicha reducción, en este capítulo se analizarán las técnicas más utilizadas para la reducción de dimensionalidad.
En el capítulo 7 se expone una introducción a varios paradigmas importantes del Machine Learning, como lo son los árboles de decisión y el método Bootstrap. Los árboles de decisión son herramientas importantes para la clasificación y estimación de datos. Estos presentan una estructura de subdivisión de la información a partir de umbrales, y aportan información completa acerca de cómo los datos se dividen para efectuar su propósito de clasificación o estimación. Esta información resulta importante para analizar la naturaleza del conjunto de datos. Por otro lado, el enfoque de Bootstrap permite caracterizar el valor medio y el error producido por la estimación de un parámetro estadístico obtenido de un conjunto de datos. Su uso es importante en el Machine Learning, ya que obtener esta información por medios estadísticos tradicionales resulta extremadamente complejo.
En el capítulo 8 se analiza el problema de la comparación de patrones a través de imágenes, o bien la localización de una parte conocida de la imagen, la cual normalmente se describe como «patrón». Este tipo de problema aparece normalmente en aplicaciones tales como la búsqueda de puntos de referencia en visión estéreo, la localización de un determinado objeto en una escena, o bien el seguimiento de objetivos en una secuencia de imágenes. La idea fundamental de la comparación de imágenes (Template Matching) es sencilla: el patrón (template) que hay que encontrar en la imagen se mueve sobre todos los píxeles de la imagen, como si fuera un filtro lineal, y se mide la semejanza entre el patrón y los correspondientes píxeles de la imagen que abarca. Evidentemente, la determinación de semejanza entre el patrón y cada uno de los puntos de la imagen no resulta sencilla, ya que debe considerarse que tal medida de semejanza sea confiable en casos como que el patrón se encuentre la imagen escalada, rotada o distorsionada. En el capítulo se hará una descripción de las diferentes medidas de semejanza utilizadas para la comparación de imágenes.
En el capítulo 9 se introduce la estadística inferencial, la cual tiene por objetivo fundamental determinar ciertas particularidades sobre una población, a partir de un número limitado de elementos. En el desarrollo del capítulo se analizan las bases matemáticas de los principales métodos y procedimientos de la estadística inferencial, así como su implementación mediante la herramienta de software MATLAB®. El capítulo se inicia con una descripción de las distribuciones de muestreo comunes; posteriormente, se aborda la estimación de los parámetros de la población para dar paso a los intervalos de confianza y pruebas de hipótesis.
Finalmente, en el capítulo 10 se analiza la evaluación de los modelos producidos mediante una técnica de Machine Learning. La evaluación de un modelo entrenado resulta vital para determinar si su funcionamiento es excelente o regular, al realizar predicciones con nuevos datos o instancias. Debido a que las futuras instancias tienen valores desconocidos para nuestro modelo, es necesario emplear métricas sobre el funcionamiento del modelo de Machine Learning, para determinar si este tendrá la capacidad de generalizar exitosamente datos con los que no fue entrenado.
Durante más de diez años hemos ensayado múltiples maneras de exponer este material a auditorios disímiles. En el camino se ha contado con la invaluable tolerancia de nuestros alumnos, principalmente del Cucei, de la Universidad de Guadalajara en México. Se agradece, de manera especial, a nuestros compañeros profesores del Centro Universitario de Ciencias Exactas e Ingenierías. Tantas colaboraciones, ayudas y discusiones con colegas ameritarían un capítulo adicional. A todos, nuestro testimonio de gratitud.
Erik CuevasOmar AvalosPrimitivo DíazArturo ValdiviaMarco Pérez | Cucei, Universidad de GuadalajaraGuadalajara, Jal, México |