Reseña del libro 'Mastering Machine Learning with scikit-learn'

El libro Mastering Machine Learning with scikit-learn, de la editorial Packt, revisa los principales conceptos y algoritmos de aprendizaje automático (Machine Learning), llevándolos a la práctica con ejemplos para implementar con la librería de Python scikit-learn, una de las más utilizadas en aprendizaje automático.

Libro Mastering Machine Learning with Scikit-learn

 

En el primer capítulo, The Fundamentals of Machine Learning, se revisan los principales conceptos relacionados con el aprendizaje automático: en qué consiste, cómo se clasifican los principales algoritmos de aprendizaje, y cómo se aplican. En este capítulo se aprende a diferenciar los algoritmos de aprendizaje supervisado de los de aprendizaje no supervisado, cómo se utilizan los datos de entrenamiento, los de pruebas o test, y cómo se evalúan los modelos con medidas de rendimiento, o más bien de desviación como el 'bias' o sesgo del modelo y su varianza.

El capítulo finaliza con la librería scikit-learn, con una breve introducción, y con instrucciones para proceder a su instalación en sistemas operativos Linux, OS X y Windows que ya tengan instalado el lenguaje Python, para así poder probar los ejemplos que se proporcionan en cada capítulo. También se explica cómo instalar las librerías pandas y matplotlib, que también se utilizarán en los ejemplos del libro.

 

El segundo capítulo, Linear Regresion, enseña cómo utilizar modelos lineales en problemas de regresión. Comienza con modelos de regresión lineal simple, con una sola variable de respuesta y una variable explicativa, pasando después a modelos de regresión lineal múltiple, con más de una variable explicativa, y a la regresión polinomial, un caso específico de regresión múltiple que permite modelizar relaciones no lineales.

Se exploran métodos para evaluar el ajuste de los modelos y para ajustar los valores de los parámetros de los modelos que minimizan la función de coste, y se prueban todas las variantes de regresión lineal con funciones de la librería scikit-learn y datos básicos.

 

El capítulo 'Feature Extraction and Preprocesing' entra en el ámbito de las técnicas de preparación de los datos que permiten transformarlos en representaciones de atributos que puedan utilizar los algoritmos de aprendizaje automático. Primero se crean atributos a partir de variables categóricas, y después se repasan las principales técnicas para el tratamiento de textos, creando vectores de frecuencia de palabras, restando importancia o eliminando las palabras más comunes, o normalizando documentos de diferentes longitudes en función de los pesos de sus palabras. Para las imágenes se explican técnicas que permiten obtener representaciones de las imágenes basadas en puntos de interés para reducir los datos a una escala que los algoritmos puedan después procesar.

 

'From Linear Regression to Logistic Regression' está dedicado a la Regresión Logística, que es un modelo de regresión que se utiliza para tareas de clasificación. La Regresión Logística Binaria permite clasificar instancias en sólo dos clases, tal como se muestra en el ejemplo de clasificación de SMS's en SPAM o HAM que se implementa con scikit-learn. La Regresión Logística Multiclase permite clasificar instancias en más de dos clases, tal como se hace al implementar con funciones de scikit un algoritmo para hacer análisis de sentimiento sobre comentarios de películas sobre las clases 'negativo', 'moderadamente negativo', 'neutral', 'moderadamente positivo' y 'positivo'. El último tipo de Regresión Logística que se trata es la de Clasificación Multi-etiqueta, en la que cada instancia se puede asignar a más de una clase, tal como puede ocurrir en una asignación de tags para publicaciones de una web, un método que algún día podríamos probar para enriquecer la taxonomía de las publicaciones de Dataprix.

 

En Nonlinear Classification and Regression with Decision Trees se revisan los árboles de decisión, que son modelos no lineales simples para tareas de clasificación y regresión. Se explica su funcionamiento, y cómo se pueden mejorar sus resultados, o cómo se puede reducir el tiempo de procesamiento con resultados aceptables cuando los árboles de decisión manejan muchos datos, y el número de ramas crece demasiado.

El ejemplo que se implementa con scikit-learn y pandas es el de un árbol de decisión que, aprendiendo de las características de imágenes de anuncios e imágenes 'normales', es capaz de clasificar nuevas imágenes en banners publicitarios o imágenes normales con el objetivo de bloquear las imágenes publicitarias. Finalmente, se mejoran los resultados predictivos del algoritmos utilizando un clasificador Random Forest en lugar de un árbol de decisión simple.

 

El capítulo 6, Clustering with K-Means, trata sobre la primera tarea de aprendizaje no supervisada: el clustering. Los algoritmos de clustering son capaces de realizar agrupaciones de datos no etiquetados por grado de similitud. El algoritmo K-Means aprende de la experiencia sin supervisión, para proponer centroides y clusters de datos que se agrupan a su alrededor. Se puede medir su rendimiento y realizar reajustes con diferentes técnicas.

Con la ayuda de Python y la librería scikit-learn, se utiliza K-Means para comprimir imágenes con una técnica que hace agrupaciones de colores similares, y también para, combinando regresión y clustering (sistema semi-supervisado), resolver un problema de clasificación de imágenes obteniendo representaciones de atributos de mucha más precisión que si se hubiera utilizado un clasificador de regresión logística.

 

En Dimensionality Reduction with PCA se explica cómo el método de Análisis de los Componentes Principales puede ayudar a solucionar problemas de rendimiento, y también de visualización gracias a la capacidad de convertir datasets con alta dimensionalidad y muchas variables posiblemente correlacionadas a datasets de baja dimensionalidad con pocas variables linealmente independientes, o componentes principales no relacionados. Este método se suele emplear como paso previo de optimización para la aplicación de otros algoritmos.

En el ejemplo con scikit learn se utilizan las funciones de análisis de componentes principales para reducir la dimensionalidad de un dataset de imágenes de rostros de 10.304 a 150 dimensiones para poder después entrenar un clasificador de regresión logística y obtener así un sistema de reconocimiento facial.

 

En el capítulo 8, The Perceptron, se explica el funcionamiento teórico de este modelo lineal para clasificación binaria inspirado en las conexiones entre las neuronas de nuestro cerebro. Se implementa con scikit un ejemplo de clasificación de documentos de un dataset obtenido de 20 grupos de noticias. También se explican las limitaciones del perceptron, que dan pie a los modelos sobre los que tratan los capítulos finales.

 

El capítulo 9 From the Perceptron to Support Vector Machines, presenta el modelo SVM, que resuelve las limitaciones más importantes del perceptron, y puede ser utilizado en problemas de clasificación lineal con mapeos a espacios con mayor nivel de dimensionalidad a un coste computacional razonable. Se ilustra el funcionamiento del modelo SVM con scikit-learn utilizando sus funciones para implementar un clasificador de dígitos escritos a mano, y un clasificador de carácteres para imágenes de caracteres fotografiados por diferentes fotógrafos en la ciudad de Bangalore.

 

En el último capítulo, From the Perceptron to Artificial Neural Networks, se explica en qué consisten los modelos de Redes Neuronales Artificiales y cómo resuelven las limitaciones del perceptron. Para hacer un símil, si el perceptron imita el funcionamiento de una neurona, las redes neuronales imitan el funcionamiento de todas las neuronas que conforman el cerebro. Las redes neuronales artificiales son modelos para clasificación y regresión que pueden representar funciones complejas, y funciones continuas.

Para ilustrar su funcionamiento se utiliza un fork de la librería scikit-learn para implementar con la función Multilayer perceptron una función XOR, y para clasificar dígitos escritos a mano, obteniendo resultados similares a los del ejemplo del capítulo anterior con el modelo SVM.

 

Nota: El libro Mastering Machine Learning with scikit-learn también está disponible en Amazon.