Python Machine Learning
5/5
()
Información de este libro electrónico
Modernizado y ampliado para incluir las tecnologías de código abierto más recientes, como scikit-learn, Keras y TensorFlow, este manual proporciona el conocimiento práctico y las técnicas necesarias para crear eficaces aplicaciones de aprendizaje automático y aprendizaje profundo en Python.
El conocimiento y la experiencia únicos de Sebastian Raschka y Vahid Mirjalili presentan los algoritmos de aprendizaje automático y aprendizaje profundo, antes de continuar con temas avanzados en análisis de datos.
Combinan los principios teóricos del aprendizaje automático con un enfoque práctico de codificación para una comprensión completa de la teoría del aprendizaje automático y la implementación con Python.
Aprenderás a:
Explorar y entender los frameworks clave para la ciencia de datos, el aprendizaje automático y el aprendizaje profundo
Formular nuevas preguntas sobre datos con modelos de aprendizaje automático y redes neuronales
Aprovechar el poder de las últimas librerías de código abierto de Python para aprendizaje automático
Dominar la implementación de redes neuronales profundas con la librería de TensorFlow
Incrustar modelos de aprendizaje automáticos en aplicacions web accesibles
Predecir resultados objetivos continuos con análisis de regresión
Descubrir patrones ocultos y estructuras en datos con agrupamientos
Analizar imágenes mediante técnicas de aprendizaje profundo
Profundizar en datos de medios sociales y textuales con el análisis de sentimientos
Relacionado con Python Machine Learning
Libros electrónicos relacionados
Python Aplicaciones prácticas Calificación: 4 de 5 estrellas4/5El gran libro de Python Calificación: 5 de 5 estrellas5/5Aprendizaje automático y profundo en python: Una mirada hacia la inteligencia artificial Calificación: 0 de 5 estrellas0 calificacionesPython para principiantes Calificación: 5 de 5 estrellas5/5Algoritmos a Fondo - Con implementaciones en c y java Calificación: 5 de 5 estrellas5/5Hacking ético con herramientas Python: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Aprendizaje Automático En Acción: Un Libro Para El Lego, Guía Paso A Paso Para Los Novatos Calificación: 1 de 5 estrellas1/5Aprende programación Python: python, #1 Calificación: 0 de 5 estrellas0 calificacionesEl Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5Python para filósofos Calificación: 3 de 5 estrellas3/5Inteligencia artificial: Cómo el aprendizaje automático, la robótica y la automatización han dado forma a nuestra sociedad Calificación: 0 de 5 estrellas0 calificacionesThe Coder Habits: Los 39 Hábitos Del Programador Profesional Calificación: 5 de 5 estrellas5/5El Libro Negro del Programador Calificación: 4 de 5 estrellas4/5Inteligencia artificial: La guía completa para principiantes del futuro de la IA Calificación: 1 de 5 estrellas1/5Inteligencia artificial: Análisis de datos e innovación para principiantes Calificación: 4 de 5 estrellas4/5Aprende Python desde cero hasta avanzado: El libro completo de la programacion python para principiantes - Con ejercicios prácticos y contenido bonus Calificación: 0 de 5 estrellas0 calificacionesJava a fondo - estudio del lenguaje y desarrollo de aplicaciones - 2a ed. Calificación: 5 de 5 estrellas5/5Java a fondo: Curso de programación Calificación: 0 de 5 estrellas0 calificacionesInteligencia artificial: Aprendizaje automático, aprendizaje profundo y procesos de automatización Calificación: 5 de 5 estrellas5/5Programación y Lógica Proposicional Calificación: 4 de 5 estrellas4/5Python Paso a paso: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5Inteligencia artificial: Robots, aplicaciones y aprendizaje automático en pocas palabras Calificación: 0 de 5 estrellas0 calificacionesLa Guía Definitiva Para Desarrolladores De Software: Trucos Y Conseños Calificación: 3 de 5 estrellas3/5Fundamentos de Programación y Bases de Datos Calificación: 0 de 5 estrellas0 calificacionesIngeniería de Software Calificación: 5 de 5 estrellas5/5Inteligencia artificial: Aprender sobre chatbots, robótica y otras aplicaciones comerciales Calificación: 5 de 5 estrellas5/5Inteligencia Artificial Calificación: 4 de 5 estrellas4/5La Era del Código Calificación: 5 de 5 estrellas5/5Curso de Programación con Java Calificación: 4 de 5 estrellas4/5
Programación para usted
VBA Excel Modelo de Objetos Calificación: 3 de 5 estrellas3/5Python Paso a paso: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5VBA Excel Guía Esencial Calificación: 5 de 5 estrellas5/5Aprender a programar con Excel VBA con 100 ejercicios práctico Calificación: 5 de 5 estrellas5/5Excel de la A a la Z: El Manual Práctico Paso a Paso de Microsoft Excel para Aprender Funciones Básicas y Avanzadas, Fórmulas y Gráficos con Ejemplos Fáciles y Claros Calificación: 0 de 5 estrellas0 calificacionesGuíaBurros Microsoft Excel: Todo lo que necesitas saber sobre esta potente hoja de cálculo Calificación: 4 de 5 estrellas4/5Curso básico de Python: La guía para principiantes para una introducción en la programación con Python Calificación: 0 de 5 estrellas0 calificacionesPython a fondo Calificación: 5 de 5 estrellas5/5Aprender PHP, MySQL y JavaScript Calificación: 5 de 5 estrellas5/5Aprende programación Python: python, #1 Calificación: 0 de 5 estrellas0 calificacionesLinux Essentials: una guía para principiantes del sistema operativo Linux Calificación: 5 de 5 estrellas5/5Arduino. Edición 2018 Curso práctico Calificación: 4 de 5 estrellas4/5Lógica de programación Calificación: 0 de 5 estrellas0 calificacionesInteligencia artificial para programadores con prisa Calificación: 5 de 5 estrellas5/5Arduino. Trucos y secretos.: 120 ideas para resolver cualquier problema Calificación: 5 de 5 estrellas5/5Tablas dinámicas y Gráficas para Excel: Una guía visual paso a paso Calificación: 0 de 5 estrellas0 calificacionesArduino para Principiantes Calificación: 4 de 5 estrellas4/5HTML para novatos Calificación: 5 de 5 estrellas5/5Aprende a Programar en C++ Calificación: 5 de 5 estrellas5/5El Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5Introducción al Uso de Formularios (UserForms) en VBA Calificación: 3 de 5 estrellas3/5Fundamentos De Programación Calificación: 5 de 5 estrellas5/5Aprender React con 100 ejercicios prácticos Calificación: 0 de 5 estrellas0 calificacionesTablas dinámicas para todos. Desde simples tablas hasta Power-Pivot: Guía útil para crear tablas dinámicas en Excel Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación y Análisis de Software Calificación: 4 de 5 estrellas4/5JavaScript: Guía completa Calificación: 4 de 5 estrellas4/5Bases de Datos con MySQL Calificación: 4 de 5 estrellas4/5Lógica de programación: Solucionario en pseudocódigo – Ejercicios resueltos Calificación: 4 de 5 estrellas4/5Aprende a programar en C# Calificación: 5 de 5 estrellas5/5Aprende a Programar a Python Calificación: 0 de 5 estrellas0 calificaciones
Comentarios para Python Machine Learning
3 clasificaciones0 comentarios
Vista previa del libro
Python Machine Learning - Vahid Mirjalili
Aprendizaje automático
con Python
Aprendizaje automático y aprendizaje profundo
con Python, scikit-learn y TensorFlow
Segunda edición
Aprendizaje automático
con Python
Aprendizaje automático y aprendizaje profundo
con Python, scikit-learn y TensorFlow
Sebastian Raschka
Vahid Mirjalili
Segunda edición original publicada en inglés por Packt Publishing Ltd. con el título: Python Machine Learning, © 2017 Sebastian Raschka y Vahid Mirjalili
Título de la edición en español: Aprendizaje automático con Python
Segunda edición en español, año 2019
© 2019 MARCOMBO, S.A.
www.marcombo.com
Traducción: Sònia Llena
Revisor técnico: Ferran Fàbregas
Correctora: Anna Alberola
Directora de producción: M.a 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-2720-6
D.L.: B-27539-2018
Impreso en Servicepoint
Printed in Spain
Sobre los autores
Sebastian Raschka, autor del libro líder de ventas Python Machine Learning [Aprendizaje automático con Python], cuenta con años de experiencia en codificación en Python, y ha impartido muchos seminarios sobre aplicaciones prácticas de ciencia de datos, aprendizaje automático y aprendizaje profundo. También es autor de un tutorial de aprendizaje automático en SciPy (el congreso líder en computación científica en Python).
Si bien los proyectos académicos de investigación de Sebastian se centran principalmente en la resolución de problemas en biología computacional, lo que a él le gusta es escribir y hablar sobre ciencia de datos, aprendizaje automático y Python en general; le motiva ayudar a la gente a que desarrolle soluciones basadas en datos sin tener necesariamente una base en aprendizaje automático.
Su trabajo y sus contribuciones han sido recientemente reconocidos con el premio Departmental outstanding graduate student 2016-2017, así como con el ACM Computing Reviews' Best of 2016. En su tiempo libre, a Sebastian le gusta colaborar en proyectos de código abierto, y los métodos que ha implementado se utilizan actualmente con éxito en concursos sobre aprendizaje automatico, como Kaggle.
Me gustaría aprovechar esta oportunidad para dar las gracias a la excelente comunidad de Python y a los desarrolladores de paquetes de código abierto que me han ayudado a crear el entorno perfecto para la investigación científica y la ciencia de datos. También quiero dar las gracias a mis padres, quienes siempre me han animado y me han apoyado para seguir el camino y la carrera que tanto me apasionaba.
Quiero dar las gracias especialmente a los principales desarrolladores de scikit-learn. Como colaborador en su proyecto, he tenido el placer de trabajar con personas excelentes que no solo tienen grandes conocimientos sobre el aprendizaje automático sino que también son grandes programadores. Por último, me gustaría dar las gracias a Elie Kawerk, quien ha revisado de forma voluntaria este libro y me ha proporcionado un valioso feedback par los nuevos capítulos.
Vahid Mirjalili obtuvo su doctorado en ingeniería mecánica trabajando en métodos innovadores para simulaciones computacionales a gran escala de estructuras moleculares. Actualmente, centra su trabajo de investigación en aplicaciones de aprendizaje automático en distintos proyectos de visión por ordenador en el departamento de ciencia computacional e ingeniería de la Michigan State University.
Vahid eligió Python como su lenguaje de programación número uno, y durante su carrera de investigación y académica ha adquirido una gran experiencia en la codificación en Python. Aprendió a programar con Python en las clases de ingeniería en la Michigan State University, que le dieron la oportunidad de ayudar a otros estudiantes a entender distintas estructuras de datos y a desarrollar eficazmente código en Python.
Si bien gran parte de los intereses de investigación de Vahid se centran en las aplicaciones de aprendizaje profundo y de visión por ordenador, siente interés especialmente por equilibrar técnicas de aprendizaje profundo para ampliar la privacidad en datos biométricos, como las imágenes del rostro para que la información no se revele más de lo que los usuarios intentan revelar. Además, también colabora con un equipo de ingenieros que trabajan en coches autónomos, donde él diseña modelos de redes neuronales para la fusión de imágenes multiespectrales para la detección de peatones.
Me gustaría dar las gracias a mi mentor de doctorado, Dr. Arun Ross, por darme la oportunidad de trabajar en nuevos problemas en su laboratorio de investigación. También quiero dar las gracias al Dr. Vishnu Boddeti por despertar mi interés en el aprendizaje profundo y desmitificar sus conceptos básicos.
Introducción
Debido a su aparición en noticias y redes sociales, probablemente eres consciente de que el machine learning o aprendizaje automático se ha convertido en una de las tecnologías más apasionantes de nuestros tiempos. Grandes compañías, como Google, Facebook, Apple, Amazon e IBM, han invertido fuertemente en aplicaciones e investigación de aprendizaje automático por buenas razones. Si bien puede parecer que el aprendizaje automático se ha convertido en la palabra de moda de nuestros tiempos, la verdad es que no se trata de una moda pasajera. Este apasionante campo abre la puerta a nuevas posibilidades y se ha convertido en indispensable en nuestra vida diaria. Y esto se evidencia cuando hablamos con el asistente de voz en nuestros teléfonos inteligentes, recomendamos el producto adecuado a nuestros clientes, evitamos fraudes con las tarjetas de crédito, filtramos el correo no deseado para que no entre en nuestra bandeja de entrada o detectamos y diagnosticamos enfermedades. Y la lista no acaba aquí.
Si te quieres dedicar al aprendizaje automático, si quieres mejorar la resolución de problemas, o si quizás estás considerando hacer una carrera en investigación sobre aprendizaje automático, este libro es para ti. Sin embargo, para un principiante, los conceptos teóricos que se esconden detrás del aprendizaje automático pueden ser bastante abrumadores. En los últimos años, se han publicado muchos libros prácticos que pueden ayudarte a empezar con el aprendizaje automático mediante la implementación de potentes algoritmos de aprendizaje.
El planteamiento de ejemplos de código prácticos y el trabajo con aplicaciones de ejemplo de aprendizaje automático son una excelente forma de profundizar en este campo. Los ejemplos concretos ayudan a ilustrar los amplios conceptos poniendo en práctica directamente el material aprendido. ¡Pero recuerda que un gran poder conlleva una gran responsabilidad! Además de proporcionar una experiencia práctica con el aprendizaje automático mediante los lenguajes de programación de Python y las librerías de aprendizaje automático basadas en Python, este libro presenta los conceptos matemáticos que se esconden detrás de los algoritmos del aprendizaje automático, aspecto esencial para que el uso del aprendizaje automático sea un éxito. Por lo tanto, este libro no es estrictamente un libro práctico; es un libro que trata los detalles necesarios relacionados con los conceptos del aprendizaje automático y ofrece explicaciones intuitivas y, al mismo tiempo, informativas acerca de cómo trabajan los algoritmos del aprendizaje automático, cómo utilizarlos y, lo más importante, cómo evitar los errores más comunes.
Actualmente, si escribes «aprendizaje automático» en Google Académico obtienes un abrumador número de resultados: más de 90 000. Evidentemente, no podemos discutir la esencia de todos los diferentes algoritmos y aplicaciones que han surgido en los últimos 60 años. Sin embargo, en este libro emprenderemos un apasionante viaje que recorre todos los conceptos y temas esenciales para que tengas un buen comienzo en este campo. Si crees que tu sed de conocimientos no queda satisfecha, este libro contiene referencias a múltiples recursos útiles que pueden servir para seguir adelante con los avances esenciales en este campo.
Si ya has estudiado antes la teoría del aprendizaje automático en detalle, este libro te mostrará cómo poner en práctica todo cuanto sabes. Si has utilizado antes técnicas de aprendizaje automático y deseas obtener más información acerca de cómo funciona realmente el aprendizaje automático, este libro es para ti. Y no te preocupes si eres completamente nuevo en este campo; todavía tienes más razones para estar emocionado. Te prometemos que el aprendizaje automático cambiará la manera que tienes de pensar en los problemas que quieres resolver y te mostrará cómo abordarlos desbloqueando el poder de los datos.
Antes de ir más lejos en el campo del aprendizaje automático, vamos a dar respuesta a tu pregunta más importante: «¿Por qué Python?». La respuesta es simple: porque es potente y, a la vez, muy accesible. Python se ha convertido en el lenguaje de programación más popular para la ciencia de datos porque permite que nos olvidemos de la parte tediosa de la programación y nos ofrece un entorno donde podemos anotar rápidamente nuestras ideas y poner los conceptos directamente en acción.
Nosotros, los autores, podemos decir de verdad que el estudio del aprendizaje automático nos ha hecho mejores científicos, mejores pensadores y mejores solucionadores de problemas. En este libro, queremos compartir contigo estos conocimientos. El conocimiento se obtiene aprendiendo. La clave se encuentra en nuestro entusiasmo y el verdadero dominio de las habilidades solo se puede lograr con la práctica. El camino a recorrer puede estar, en ocasiones, lleno de baches y algunos temas pueden ser más desafiantes que otros, pero esperamos que aceptes esta oportunidad y te centres en la recompensa. Recuerda que estamos juntos en este viaje y que, con este libro, vamos a añadir poderosas técnicas a tu arsenal que nos ayudarán a resolver incluso los problemas más difíciles planteados por datos.
Qué contiene este libro
El Capítulo 1, Dar a los ordenadores el poder de aprender de los datos presenta las principales subáreas del aprendizaje automático para resolver distintas tareas problemáticas. Además, trata sobre los pasos esenciales para crear un modelo típico de aprendizaje automático mediante la construcción de un entramado que nos guiará a través de los siguientes capítulos.
El Capítulo 2, Entrenar algoritmos simples de aprendizaje automático para clasificación vuelve a los orígenes del aprendizaje automático y presenta clasificadores binarios basados en perceptrones y neuronas lineales adaptativas. Este capítulo es una breve introducción a los fundamentos de la clasificación de patrones y se centra en la interacción de algoritmos de optimización y aprendizaje automático.
El Capítulo 3, Un recorrido por los clasificadores de aprendizaje automático con scikit-learn describe los algoritmos básicos del aprendizaje automático para clasificar y proporciona ejemplos prácticos con una de las librerías de aprendizaje automático de código abierto más exhaustiva y conocida: scikit-learn.
El Capítulo 4, Generar buenos modelos de entrenamiento: preprocesamiento de datos trata sobre cómo enfrentarnos a los problemas más comunes de conjuntos de datos no procesados, como los datos incompletos. También trata varios enfoques para identificar las características más informativas en los conjuntos de datos y muestra cómo preparar variables de diferentes tipos, como entradas correctas para algoritmos de aprendizaje automático.
El Capítulo 5, Comprimir datos mediante la reducción de dimensionalidad describe las técnicas esenciales para reducir el número de características en un conjunto de datos a conjuntos más pequeños manteniendo la mayor parte de su información útil y discriminatoria. Trata del enfoque estándar de la reducción de dimensionalidad mediante el análisis del componente principal y lo compara con técnicas de transformación no lineales y supervisadas.
El Capítulo 6, Aprender las mejores prácticas para la evaluación de modelos y el ajuste de hiperparámetros habla de lo que se debe y no se debe hacer para estimar los resultados de los modelos predictivos. Además, analiza distintos parámetros para medir los resultados de nuestros modelos y técnicas para ajustar con precisión los algoritmos del aprendizaje automático.
El Capítulo 7, Combinar diferentes modelos para el aprendizaje conjunto presenta los diferentes conceptos para combinar de manera efectiva múltiples algoritmos de aprendizaje. Muestra cómo crear sistemas expertos para superar las debilidades de aprendizajes individuales, que den como resultado unas predicciones más precisas y fiables.
El Capítulo 8, Aplicar el aprendizaje automático para el análisis de sentimiento trata los pasos esenciales para transformar datos textuales en representaciones con significado para los algoritmos del aprendizaje automático, para así predecir las opiniones de la gente en base a su escritura.
El Capítulo 9, Incrustar un modelo de aprendizaje automático en una aplicación web retoma el modelo predictivo del capítulo anterior y continúa con los pasos esenciales del desarrollo de aplicaciones web con modelos de aprendizaje automático incrustados.
El Capítulo 10, Predicción de variables de destino continuas con análisis de regresión habla de las técnicas esenciales para relaciones lineales de modelado entre destino y variables de respuesta para hacer predicciones en una escala continua. Después de introducir diferentes modelos lineales, también trata de la regresión polinomial y los enfoques basados en árboles.
El Capítulo 11, Trabajar con datos sin etiquetar: análisis de grupos cambia el enfoque a una subárea distinta del aprendizaje automático: el aprendizaje no supervisado. Aplicamos algoritmos de tres familias básicas de algoritmos agrupados para encontrar grupos de objetos que compartan un cierto grado de semejanza.
El Capítulo 12, Implementar una red neuronal artificial multicapa desde cero amplía el concepto de optimización basada en gradiente, que introducimos por primera vez en el Capítulo 2, Entrenando algoritmos simples del aprendizaje automático para la clasificación, para construir potentes redes neuronales multicapas basadas en el popular algoritmo backpropagation de Python.
El Capítulo 13, Paralelización de entrenamiento de redes neuronales con TensorFlow se basa en cuanto se ha aprendido en el capítulo anterior para proporcionar una guía práctica para el entrenamiento más eficaz de redes neuronales. Este capítulo se centra en TensorFlow, una librería de Python de código abierto que nos permite utilizar múltiples núcleos de GPU modernas.
El Capítulo 14, Ir más lejos: la mecánica de TensorFlow cubre TensorFlow de un modo mucho más detallado, explicando sus conceptos básicos de sesiones y gráficos computacionales. Además, este capítulo trata temas como guardar y visualizar gráficos de redes neuronales, que serán muy útiles para el resto de capítulos del libro.
El Capítulo 15, Clasificar imágenes con redes neuronales convolucionales profundas habla de la arquitectura de las redes neuronales profundas, que se ha convertido en el nuevo estándar en campos de visión artificial y reconocimiento de imágenes (redes neuronales convolucionales). Este capítulo tratará los principales conceptos entre capas convolucionales, como extractor de características, y la aplicación de arquitecturas de redes neuronales convolucionales a una tarea de clasificación de imágenes para conseguir una precisión casi perfecta en la clasificación.
El Capítulo 16, Modelado de datos secuenciales mediante redes neuronales recurrentes presenta otra arquitectura de red neuronal popular para el aprendizaje profundo que es muy aconsejable, especialmente para trabajar con datos secuenciales y datos de series de tiempo. En este capítulo, aplicaremos diferentes arquitecturas de redes neuronales recurrentes a datos textuales. Empezaremos con una tarea de análisis de sentimientos como ejercicio de calentamiento y aprenderemos a generar por completo un nuevo texto.
Qué necesitas para este libro
La ejecución de los ejemplos de código proporcionados en este libro requiere una instalación de Python 3.6.0 o posterior en macOS, Linux o Microsoft Windows. Con frecuencia utilizaremos librerías básicas de Python para computación científica, como SciPy, NumPy, scikit-learn, Matplotlib y pandas.
En el primer capítulo encontrarás instrucciones y consejos útiles para configurar tu entorno de Python y estas librerías básicas. Añadiremos librerías adicionales a nuestro repertorio. Además, en los correspondientes capítulos también se proporcionan instrucciones de instalación: la librería NLTK para procesamiento de lenguaje natural (Capítulo 8, Aplicar el aprendizaje automático para el análisis de sentimientos), el framework de desarrollo web Flask (Capítulo 9, Incrustar un modelo de aprendizaje automático en una aplicación web), la librería Seaborn para la visualización de datos estadísticos (Capítulo 10, Predicción de variables de destino continuas con análisis de regresión) y TensorFlow para el entrenamiento eficaz de redes neuronales en unidades de procesamiento gráfico (Capítulos 13 a 16).
A quién va dirigido este libro
Si te interesa saber cómo utilizar Python para empezar a dar respuesta a cuestiones importantes sobre tus datos, elige Aprendizaje automático con Python - Segunda edición. Tanto si deseas empezar desde cero como si deseas ampliar tus conocimientos científicos sobre datos, este es un recurso esencial e ineludible.
Convenciones
En este libro, encontrarás múltiples estilos de texto que distinguen entre diferentes tipos de información. A continuación, verás algunos ejemplos de estos estilos y una explicación de su significado.
Código en texto, nombres de tablas de bases de datos, nombres de directorios, nombres de archivos, extensiones de archivo, nombres de ruta, URL ficticias, entradas de usuario y controles de Twitter se muestran del siguiente modo: «Con la configuración out_file=None, asignamos directamente el dato de punto a una variable dot_data, en lugar de escribir un fichero tree.dot intermedio al disco».
Un bloque de código se indica de este modo:
>>> from sklearn.neighbors import KNeighborsClassifier
>>> knn = KNeighborsClassifier(n_neighbors=5, p=2,
... metric='minkowski')
>>> knn.fit(X_train_std, y_train)
>>> plot_decision_regions(X_combined_std, y_combined,
... classifier=knn, test_idx=range(105,150))
>>> plt.xlabel('petal length [standardized]')
>>> plt.ylabel('petal width [standardized]')
>>> plt.show()
Todas las líneas de comando de entrada y salida se escriben así:
pip3 install graphviz
Los nuevos términos y las palabras importantes se muestran en negrita. Las palabras que ves en pantalla, por ejemplo en menús o cuadros de diálogo, aparecen en el texto de este modo: «Después de hacer clic en el botón Dashboard de la esquina superior derecha, accedemos al panel de control que se muestra en la parte superior de la página».
Descargar el código de ejemplo
y las imágenes en color de este libro
En la parte inferior de la primera página del libro encontrarás el código de acceso que te permitirá descargar de forma gratuita los contenidos adicionales del libro.
Índice
Sobre los autores
Introducción
Qué contiene este libro
Qué necesitas para este libro
A quién va dirigido este libro
Convenciones
Descargar el código de ejemplo y las imágenes en color de este libro
Capítulo 1: Dar a los ordenadores el poder de aprender de los datos
Crear máquinas inteligentes para transformar datos en conocimiento
Los tres tipos de aprendizaje automático
Hacer predicciones sobre el futuro con el aprendizaje supervisado
Clasificación para predecir etiquetas de clase
Regresión para predecir resultados continuos
Resolver problemas interactivos con aprendizaje reforzado
Descubrir estructuras ocultas con el aprendizaje sin supervisión
Encontrar subgrupos con el agrupamiento
Reducción de dimensionalidad para comprimir datos
Introducción a la terminología básica y las notaciones
Una hoja de ruta para crear sistemas de aprendizaje automático
Preprocesamiento: Dar forma a los datos
Entrenar y seleccionar un modelo predictivo
Evaluar modelos y predecir instancias de datos no vistos
Utilizar Python para el aprendizaje automático
Utilizar la distribución y el gestor de paquetes Anaconda de Python
Paquetes para cálculo científico, ciencia de datos y aprendizaje automático
Resumen
Capítulo 2: Entrenar algoritmos simples de aprendizaje automático para clasificación
Neuronas artificiales: un vistazo a los inicios del aprendizaje automático
La regla de aprendizaje del perceptrón
Implementar un algoritmo de aprendizaje de perceptrón en Python
Una API perceptrón orientada a objetos
Entrenar un modelo de perceptrón en el conjunto de datos Iris
Neuronas lineales adaptativas y la convergencia del aprendizaje
Minimizar funciones de coste con el descenso de gradiente
Implementar Adaline en Python
Mejorar el descenso de gradiente mediante el escalado de características
Aprendizaje automático a gran escala y descenso de gradiente estocástico
Resumen
Capítulo 3: Un recorrido por los clasificadores de aprendizaje automático con scikit-learn
Elegir un algoritmo de clasificación
Primeros pasos con scikit-learn:entrenar un perceptrón
Modelar probabilidades de clase mediante regresión logística
Intuición en regresión logística y probabilidades condicionales
Aprender los pesos de la función de coste logística
Convertir una implementación Adaline en un algoritmo para regresión logística
Entrenar un modelo de regresión logística con scikit-learn
Abordar el sobreajuste con la regularización
Margen de clasificación máximo con máquinas de vectores de soporte
Margen máximo de intuición
Tratar un caso separable no lineal con variables flexibles
Implementaciones alternativas en scikit-learn
Resolver problemas no lineales con una SVM kernelizada
Métodos kernel para datos inseparables lineales
El truco de kernel para encontrar hiperplanos separados en un espacio de mayor dimensionalidad
Aprendizaje basado en árboles de decisión
Maximizar la ganancia de información: sacar el mayor partido de tu inversión
Crear un árbol de decisión
Combinar árboles de decisión múltiples mediante bosques aleatorios
K-vecinos más cercanos: un algoritmo de aprendizaje vago
Resumen
Capítulo 4: Generar buenos modelos de entrenamiento: preprocesamiento de datos
Tratar con datos ausentes
Eliminar muestras o características con valores ausentes
Imputar valores ausentes
Entender la API de estimador de scikit-learn
Trabajar con datos categóricos
Características nominales y ordinales
Crear un conjunto de datos de ejemplo
Mapear características ordinales
Codificar etiquetas de clase
Realizar una codificación en caliente sobre características nominales
Dividir un conjunto de datos en conjuntos de prueba y de entrenamiento individuales
Ajustar las características a la misma escala
Seleccionar características significativas
Una interpretación geométrica de la regularización L2
Soluciones dispersas con la regularización L1
Algoritmos de selección de características secuenciales
Evaluar la importancia de las características con bosques aleatorios
Resumen
Capítulo 5: Comprimir datos mediante la reducción de dimensionalidad
Reducción de dimensionalidad sin supervisión mediante el análisis de componentes principales
Los pasos esenciales que se esconden detrás del análisis de componentes principales
Extraer los componentes principales paso a paso
Varianza total y explicada
Transformación de características
Análisis de componentes principales en scikit-learn
Compresión de datos supervisada mediante análisis discriminante lineal
Análisis de componentes principales frente a análisis discriminante lineal
Cómo funciona interiormente el análisis discriminante lineal
Calcular las matrices de dispersión
Seleccionar discriminantes lineales para el nuevo subespacio de características
Proyectar muestras en el nuevo espacio de características
ADL con scikit-learn
Utilizar el análisis de componentes principales con kernels para mapeos no lineales
Funciones kernel y el truco del kernel
Implementar un análisis de componentes principales con kernels en Python
Ejemplo 1: separar formas de media luna
Ejemplo 2: separar círculos concéntricos
Proyectar nuevos puntos de datos
Análisis de componentes principales con kernel en scikit-learn
Resumen
Capítulo 6: Aprender las buenas prácticas para la evaluación de modelos y el ajuste de hiperparámetros
Simplificar flujos de trabajo con pipelines
Combinar transformadores y estimadores en un pipeline
Utilizar la validación cruzada de K iteraciones para evaluar el rendimiento de un modelo
El método de retención
Validación cruzada de k iteraciones
Depurar algoritmos con curvas de validación y aprendizaje
Diagnosticar problemas de sesgo y varianza con curvas de aprendizaje
Resolver el sobreajuste y el subajuste con curvas de validación
Ajustar los modelos de aprendizaje automático con la búsqueda de cuadrículas
Ajustar hiperparámetros con la búsqueda de cuadrículas
Selección de algoritmos con validación cruzada anidada
Observar diferentes métricas de evaluación de rendimiento
Leer una matriz de confusión
Optimizar la exactitud y la exhaustividad de un modelo de clasificación
Representar una característica operativa del receptor
Métricas de calificación para clasificaciones multiclase
Tratar con el desequilibrio de clases
Resumen
Capítulo 7: Combinar diferentes modelos para el aprendizaje conjunto
Aprender con conjuntos
Combinar clasificadores mediante el voto mayoritario
Implementar un sencillo clasificador de voto mayoritario
Utilizar el principio de voto mayoritario para hacer predicciones
Evaluar y ajustar el clasificador conjunto
Bagging: construir un conjunto de clasificadores a partir de muestras bootstrap
El bagging resumido
Aplicar el bagging para clasificar muestras en el conjunto de datos Wine
Potenciar los clasificadores débiles con el boosting adaptado
Cómo trabaja el boosting
Aplicar AdaBoost con scikit-learn
Resumen
Capítulo 8: Aplicar el aprendizaje automático para el análisis de sentimiento
Preparar los datos de críticas de cine de IMDb para el procesamiento de texto
Obtener el conjunto de datos de críticas de cine
Preprocesar el conjunto de datos de películas en un formato adecuado
Introducir el modelo «bolsa de palabras»
Transformar palabras en vectores de características
Relevancia de las palabras mediante frecuencia de término–frecuencia inversa de documento
Limpiar datos textuales
Procesar documentos en componentes léxicos
Entrenar un modelo de regresión logística para clasificación de documentos
Trabajar con datos más grandes: algoritmos online y aprendizaje out-of-core
Modelado de temas con Latent Dirichlet Allocation
Descomponer documentos de textos con LDA
LDA con scikit-learn
Resumen
Capítulo 9: Incrustar un modelo de aprendizaje automático en una aplicación web
Serializar estimadores de scikit-learn ajustados
Configurar una base de datos SQLite para el almacenamiento de datos
Desarrollar una aplicación web con Flask
Nuestra primera aplicación web con Flask
Validación y renderizado de formularios
Configurar la estructura del directorio
Implementar una macro mediante el motor de plantillas Jinja2
Añadir estilos con CSS
Crear la página resultante
Convertir el clasificador de críticas de cine en una aplicación web
Archivos y carpetas: observar el árbol de directorios
Implementar la aplicación principal como app.py
Preparar el formulario de críticas
Crear una plantilla de página de resultados
Desplegar la aplicación web en un servidor público
Crear una cuenta de PythonAnywhere
Cargar la aplicación del clasificador de películas
Actualizar el clasificador de películas
Resumen
Capítulo 10: Predicción de variables de destino continuas con análisis de regresión
Introducción a la regresión lineal
Regresión lineal simple
Regresión lineal múltiple
Explorar el conjunto de datos Housing
Cargar el conjunto Housing en un marco de datos
Visualizar las características importantes de un conjunto de datos
Observar las relaciones mediante una matriz de correlación
Implementar un modelo de regresión lineal de mínimos cuadrados ordinarios
Resolver la regresión para parámetros de regresión con el descenso del gradiente
Estimar el coeficiente de un modelo de regresión con scikit-learn
Ajustar un modelo de regresión robusto con RANSAC
Evaluar el rendimiento de los modelos de regresión lineal
Utilizar métodos regularizados para regresión
Convertir un modelo de regresión lineal en una curva: la regresión polinomial
Añadir términos polinomiales con scikit-learn
Modelar relaciones no lineales en el conjunto de datos Housing
Tratar con relaciones no lineales mediante bosques aleatorios
Regresión de árbol de decisión
Regresión con bosques aleatorios
Resumen
Capítulo 11: Trabajar con datos sin etiquetar: análisis de grupos
Agrupar objetos por semejanza con k-means
Agrupamiento k-means con scikit-learn
Una manera más inteligente de colocar los centroides de los grupos iniciales con k-means++
Agrupamiento pesado frente a no pesado
Utilizar el método elbow para encontrar el número óptimo de grupos
Cuantificar la calidad del agrupamiento mediante gráficos de silueta
Organizar agrupamientos como un árbol jerárquico
Agrupar los grupos de manera ascendente
Realizar agrupamientos jerárquicos en una matriz de distancias
Adjuntar dendrogramas a un mapa de calor
Aplicar un agrupamiento aglomerativo con scikit-learn
Ubicar regiones de alta densidad con DBSCAN
Resumen
Capítulo 12: Implementar una red neuronal artificial multicapa desde cero
Modelar funciones complejas con redes neuronales artificiales
Resumen de una red neuronal de una capa
Activar una red neuronal mediante la propagación hacia delante
Clasificar dígitos manuscritos
Obtener el conjunto de datos MNIST
Implementar un perceptrón multicapa
Entrenar una red neuronal artificial
Calcular la función de coste logística
Desarrollar tu intuición para la propagación hacia atrás
Entrenar redes neuronales mediante la propagación hacia atrás
Sobre la convergencia en redes neuronales
Unas últimas palabras sobre la implementación de redes neuronales
Resumen
Capítulo 13: Paralelización de entrenamiento de redes neuronales con TensorFlow
TensorFlow y rendimiento de entrenamiento
¿Qué es TensorFlow?
Cómo aprenderemos TensorFlow
Primeros pasos con TensorFlow
Trabajar con estructuras de matriz
Desarrollar un modelo simple con la API de bajo nivel de TensorFlow
Entrenar redes neuronales eficazmente con las API de alto nivel de TensorFlow
Crear redes neuronales multicapa mediante la API Layers de TensorFlow
Desarrollar una red neuronal multicapa con Keras
Elegir funciones de activación para redes multicapa
Resumen de la función logística
Estimar probabilidades de clase en clasificaciones multiclase con softmax
Ampliar el espectro de salida con una tangente hiperbólica
Activación de la unidad lineal rectificada
Resumen
Capítulo 14: Ir más lejos: la mecánica de TensorFlow
Características clave de TensorFlow
Rango y tensores de TensorFlow
Cómo obtener la dimensión y la forma de un tensor
Entender los grafos computacionales de TensorFlow
Marcadores de posición en TensorFlow
Definir marcadores de posición
Alimentar marcadores de posición con datos
Definir marcadores de posición para matrices de datos con diferentes tamaños de lote
Variables en TensorFlow
Definir variables
Inicializar variable
Alcance de la variable
Reutilizar variables
Crear un modelo de regresión
Ejecutar objetos en un grafo de TensorFlow mediante sus nombres
Almacenar y restablecer un modelo en TensorFlow
Transformar tensores como matrices de datos multidimensionales
Utilizar la mecánica de control de flujopara crear grafos
Visualizar el grafo con TensorBoard
Ampliar tu experiencia en TensorBoard
Resumen
Capítulo 15: Clasificar imágenes con redes neuronales convolucionales profundas
Bloques de construcción de redes neuronales convolucionales
Entender las CNN y conocer las jerarquías de características
Realizar convoluciones discretas
Realizar una convolución discreta en una dimensión
El efecto del relleno de ceros en una convolución
Determinar el tamaño de la salida de convolución
Realizar un convolución discreta en 2D
Submuestreo
Juntarlo todo para crear una CNN
Trabajar con entradas múltiples o canales de color
Regularizar una red neuronal con la eliminación
Implementar una red neuronal convolucional profunda con TensorFlow
La arquitectura de una CNN multicapa
Cargar y preprocesar los datos
Implementar una CNN en la API de TensorFlow de bajo nivel
Implementar una CNN en la API Layers de TensorFlow
Resumen
Capítulo 16: Modelado de datos secuenciales mediante redes neuronales recurrentes
Introducir datos secuenciales
Modelar datos secuenciales: el orden sí importa
Representar secuencias
Las diferentes categorías del modelado de secuencias
RNN para modelar secuencias
Entender la estructura y el flujo de una RNN
Calcular activaciones en una RNN
Los retos del aprendizaje de interacciones de largo alcance
Unidades de LSTM
Implementar una RNN multicapa para modelar secuencias en TensorFlow
Proyecto uno: crear un análisis de sentimiento de las críticas de películas IMDb con RNN multicapa
Preparar los datos
Embedding
Construir un modelo de RNN
El constructor de la clase SentimentRNN
El método build
Paso 1: definir celdas RNN multicapa
Paso 2: definir los estados iniciales para las celdas RNN
Paso 3: crear la RNN utilizando las celdas RNN y sus estados
El método train
El método predict
Instanciar la clase SentimentRNN
Entrenar y optimizar el análisis de sentimiento de un modelo RNN
Proyecto dos: implementar una RNN para el modelado de lenguaje a nivel de carácter en TensorFlow
Preparar los datos
Construir un modelo RNN a nivel de carácter
El constructor
El método build
El método train
El método sample
Crear y entrenar el modelo CharRNN
El modelo CharRNN en el modo de muestreo
Resumen del capítulo y del libro
ÍNDICE ANALÍTICO
Dar a los ordenadores el poder de aprender de los datos
En mi opinión, el aprendizaje automático –la aplicación y ciencia de los algoritmos que da sentido a los datos– es el campo más apasionante de todas las ciencias computacionales. Vivimos en una época en la cual los datos llegan en abundancia; utilizando algoritmos de autoaprendizaje del campo del aprendizaje automático podemos convertir estos datos en conocimiento. Gracias a las múltiples y potentes librerías de código abierto que han sido desarrolladas en los últimos años, probablemente no ha habido un momento mejor para acceder al campo del aprendizaje automático y aprender cómo utilizar potentes algoritmos para detectar patrones de datos y hacer predicciones sobre acontecimientos futuros.
En este capítulo, aprenderás los principales conceptos y los diferentes tipos de aprendizaje automático. Junto con una introducción básica a la terminología más importante, sentaremos las bases para utilizar con éxito técnicas de aprendizaje automático para la resolución práctica de problemas.
En este capítulo, trataremos los siguientes temas:
•Los conceptos generales del aprendizaje automático.
•Los tres tipos de aprendizaje y la terminología básica.
•La construcción de bloques para diseñar sistemas de aprendizaje automático.
•La instalación y configuración de Python para el análisis de datos y el aprendizaje automático.
Crear máquinas inteligentes para transformar datos en conocimiento
En esta época de tecnología moderna, existe un recurso que tenemos en abundancia: gran cantidad de datos estructurados y no estructurados. En la segunda mitad del siglo veinte, el aprendizaje automático evolucionó como un subcampo de la Inteligencia Artificial (AI) que involucraba algoritmos de autoaprendizaje que derivaban el conocimiento a partir de datos para crear predicciones. En lugar de necesitar al hombre para derivar de forma manual las reglas y crear modelos a partir del análisis de grandes cantidades de datos, el aprendizaje automático ofrece una alternativa más eficiente para capturar el conocimiento en datos, mejorar gradualmente el rendimiento de los modelos predictivos y tomar decisiones basadas en esos datos. El aprendizaje automático no solo es cada vez más importante en la investigación de ciencia computacional, sino que juega un papel cada vez más importante en nuestra vida diaria. Gracias al aprendizaje automático, disfrutamos de filtros potentes para el correo no deseado, software práctico de reconocimiento de voz y texto, motores de búsqueda fiables, desafiantes programas para jugar al ajedrez y, esperemos que muy pronto, eficientes coches de conducción autónoma.
Los tres tipos de aprendizaje automático
En esta sección, echaremos un vistazo a los tres tipos de aprendizaje automático: aprendizaje supervisado, aprendizaje no supervisado y aprendizaje reforzado. Vamos a aprender las diferencias fundamentales entre los tres tipos distintos de aprendizaje y, mediante ejemplos conceptuales, desarrollaremos una intuición para los ámbitos de problemas prácticos donde pueden ser aplicados:
Hacer predicciones sobre el futuro
con el aprendizaje supervisado
El objetivo principal del aprendizaje supervisado es aprender un modelo, a partir de datos de entrenamiento etiquetados, que nos permite hacer predicciones sobre datos futuros o no vistos. Aquí, el término supervisado se refiere a un conjunto de muestras donde las señales de salida deseadas (etiquetas) ya se conocen.
Considerando el ejemplo del filtro de correo no deseado, podemos entrenar un modelo utilizando un algoritmo de aprendizaje automático supervisado en un cuerpo de correos electrónicos etiquetados –correos que están correctamente marcados como «correo no deseado» o como «no correo no deseado»– para predecir si un nuevo correo electrónico pertenece a una u otra categoría. Una tarea de aprendizaje supervisado con etiquetas de clase discretas, como en el ejemplo anterior del filtro de correo no deseado, también se conoce como tarea de clasificación. Otra subcategoría del aprendizaje supervisado es la regresión, donde la señal resultante es un valor continuo.
Clasificación para predecir etiquetas de clase
La clasificación es una subcategoría del aprendizaje supervisado cuyo objetivo es predecir las etiquetas de clase categórica de nuevas instancias, basadas en observaciones pasadas. Estas etiquetas de clase son discretas, valores desordenados que se pueden entender como membresías grupales de las instancias. El ejemplo que hemos mencionado anteriormente de la detección de correo no deseado representa un típico ejemplo de una tarea de clasificación binaria, donde el algoritmo de aprendizaje automático aprende un conjunto de reglas para distinguir entre dos posibles clases: mensajes que son o no son correo no deseado.
Sin embargo, el conjunto de etiquetas de clase no tiene que ser de naturaleza binaria. El modelo predictivo aprendido mediante un algoritmo de aprendizaje supervisado puede asignar cualquier etiqueta de clase que se presente en el conjunto de datos de entrenamiento a una nueva instancia sin etiqueta. Un ejemplo típico de una tarea de clasificación multiclase es el reconocimiento de un carácter manuscrito. Aquí, podemos recoger un conjunto de datos de entrenamiento que consiste en múltiples ejemplos manuscritos de cada letra del alfabeto. Ahora, si un usuario proporciona un nuevo carácter manuscrito desde un dispositivo de entrada, nuestro modelo predictivo será capaz de predecir la letra correcta del alfabeto con cierta precisión. Sin embargo, nuestro sistema de aprendizaje automático no sería capaz de reconocer de forma correcta ningún dígito del cero al nueve, por ejemplo, si no formaran parte de nuestro conjunto de datos de entrenamiento.
La siguiente figura ilustra el concepto de una tarea de clasificación binaria que da 30 muestras de entrenamiento; 15 de estas muestras están etiquetadas como clase negativa (signo menos) y otras 15 como clase positiva (signo más). En este caso, nuestro conjunto de datos es bidimensional, lo que significa que cada muestra tiene dos valores asociados: y . Ahora, podemos utilizar un algoritmo de aprendizaje automático supervisado para aprender una regla –el límite de decisión está representado con una línea discontinua– que puede separar las dos clases y clasificar nuevos datos dentro de cada categoría dados sus valores de y :
Regresión para predecir resultados continuos
En la sección anterior hemos aprendido que la tarea de clasificación consiste en asignar etiquetas categóricas y sin orden a instancias. Un segundo tipo de aprendizaje supervisado es la predicción de resultados continuos, también conocida como análisis de regresión. En el análisis de regresión, tenemos un número de variables predictoras (explicativas) y una variable de respuesta continua (resultado o destino), y tenemos que encontrar una relación entre estas variables que nos permita predecir un resultado.
Por ejemplo, supongamos que queremos predecir los resultados del examen de selectividad de matemáticas de nuestros alumnos. Si existe una relación entre el tiempo que han pasado estudiando para la prueba y los resultados finales, podríamos utilizarla como dato de entrenamiento para aprender un modelo que utilice el tiempo de estudio para predecir los resultados de la prueba de futuros estudiantes que deseen pasar este examen.
La siguiente figura ilustra el concepto de regresión lineal. Dada una variable predictora x y una variable de respuesta y, aplicamos una línea fina a este dato, que minimiza la distancia –normalmente, la distancia cuadrada de promedio– entre los puntos de muestra y la línea aplicada. Ahora podemos utilizar la intersección y la pendiente aprendidas de este dato para predecir la variable de resultado del nuevo dato:
Resolver problemas interactivos con aprendizaje reforzado
Otro tipo de aprendizaje automático es el aprendizaje reforzado. En este tipo de aprendizaje, el objetivo es desarrollar un sistema (agente) que mejore su rendimiento basado en interacciones con el entorno. Como la información sobre el estado actual del entorno normalmente también incluye una señal de recompensa, podemos pensar en el aprendizaje reforzado como un campo relacionado con el aprendizaje supervisado. Sin embargo, en el aprendizaje reforzado este feedback no es el valor o la etiqueta correctos sobre el terreno, sino una medida de cómo ha sido medida la acción por parte de una función de recompensa. A través de su interacción con el entorno, un agente puede utilizar el aprendizaje reforzado para aprender una serie de acciones que maximicen esta recompensa mediante un enfoque experimental de ensayo-error o una planificación deliberativa.
Un conocido ejemplo de aprendizaje reforzado es un motor de ajedrez. Aquí, el agente elige entre una serie de movimientos según el estado del tablero (el entorno), y la recompensa se puede definir como «ganas» o «pierdes» al final del juego:
Existen diferentes subtipos de aprendizaje reforzado. Sin embargo, un esquema general es que el agente en aprendizaje reforzado intenta maximizar la recompensa mediante una serie de interacciones con el entorno. Cada estado puede estar asociado a una recompensa positiva o negativa, y una recompensa se puede definir como el logro de un objetivo general (como ganar o perder una partida de ajedrez). Por ejemplo, en ajedrez, el resultado de cada movimiento podría ser un estado distinto del entorno. Para explorar un poco más el ejemplo del ajedrez, pensemos en ciertas jugadas del tablero asociadas a un evento positivo (por ejemplo, eliminar una pieza del contrincante o amenazar a la reina). Sin embargo, otras jugadas están asociadas a un evento negativo (como perder una pieza para el contrincante en el siguiente turno). Ahora, no todos los turnos dan como resultado la eliminación de una pieza del tablero, y el aprendizaje reforzado se centra en aprender las series de pasos maximizando una recompensa basada en el feedback inmediato y diferido.
Aunque esta sección ofrece una visión básica del aprendizaje reforzado, ten en cuenta que las aplicaciones de este tipo de aprendizaje están fuera del alcance de este libro, que prioriza la clasificación, el análisis de regresión y el agrupamiento.
Descubrir estructuras ocultas con el aprendizaje sin supervisión
En el aprendizaje supervisado, cuando entrenamos nuestro modelo sabemos la respuesta correcta de antemano, y en el reforzado definimos una medida de recompensa para acciones concretas mediante el agente. Sin embargo, en el aprendizaje sin supervisión tratamos con datos sin etiquetar o datos de estructura desconocida. Con las técnicas de aprendizaje sin supervisión, podemos explorar la estructura de nuestros datos para extraer información significativa sin la ayuda de una variable de resultado conocida o una función de recompensa.
Encontrar subgrupos con el agrupamiento
El agrupamiento es una técnica exploratoria de análisis de datos que nos permite organizar un montón de información en subgrupos significativos (clústers) sin tener ningún conocimiento previo de los miembros del grupo. Cada clúster que surge durante el análisis define un grupo de objetos que comparten un cierto grado de semejanza pero difieren de los objetos de otros clústers, razón por la cual el agrupamiento también se denomina a veces clasificación sin supervisión. El agrupamiento es una excelente técnica para estructurar información y derivar relaciones significativas de los datos. Por ejemplo, permite a los vendedores descubrir grupos de clientes basados en sus intereses, con el fin de desarrollar programas de marketing exclusivos.
La siguiente figura muestra cómo se puede aplicar el agrupamiento para organizar datos sin etiquetar en tres grupos distintos, basados en la similitud de sus características y :
Reducción de dimensionalidad para comprimir datos
Otro subcampo del aprendizaje sin supervisión es la reducción de dimensionalidad. Muchas veces trabajamos con datos de alta dimensionalidad (cada observación muestra un elevado número de medidas), lo cual puede suponer un reto para el espacio de almacenamiento limitado y el rendimiento computacional de los algoritmos del aprendizaje automático. La reducción de dimensionalidad sin supervisión es un enfoque utilizado con frecuencia en el preprocesamiento de características para eliminar ruido de los datos; también puede degradar el rendimiento predictivo de ciertos algoritmos y comprimir los datos en un subespacio dimensional más pequeño, manteniendo la mayor parte de la información importante.
A veces, la reducción de dimensionalidad también puede ser útil para visualizar datos; por ejemplo, un conjunto de características dimensionales pueden ser proyectadas en un espacio de características de una, dos o tres dimensiones para visualizarlas mediante gráficos de dispersión o histogramas 2D o 3D. Las siguientes figuras muestran un ejemplo donde la reducción de dimensionalidad no lineal se ha aplicado para comprimir un brazo de gitano tridimensional en un subespacio con características 2D:
Introducción a la terminología básica
y las notaciones
Ahora que ya hemos tratado las tres categorías principales de aprendizaje automático –supervisado, sin supervisión y reforzado–, vamos a echar un vistazo a la terminología básica que utilizaremos en