Saltar al contenido

Bibliotecas de aprendizaje automático (AutoML) para Python

18 de septiembre de 2020

El AutoML proporciona herramientas para descubrir automáticamente buenos modelos de aprendizaje automático para un conjunto de datos con muy poca intervención del usuario.

Es ideal para los expertos en el campo que son nuevos en el aprendizaje automático o para los profesionales del aprendizaje automático que buscan obtener buenos resultados rápidamente para una tarea de modelado predictivo.

Las bibliotecas de código abierto están disponibles para usar los métodos de AutoML con las populares bibliotecas de aprendizaje automático en Python, como la biblioteca de aprendizaje automático Scikit-learn.

En este tutorial, descubrirás cómo utilizar las principales bibliotecas de código abierto de AutoML para aprender ciencia en Python.

Después de completar este tutorial, lo sabrás:

  • AutoML son técnicas para descubrir automática y rápidamente un modelo de aprendizaje de máquinas de buen rendimiento para una tarea de modelado predictivo.
  • Las tres bibliotecas de AutoML más populares para Scikit-Learn son Hyperopt-Sklearn, Auto-Sklearn y TPOT.
  • Cómo utilizar las bibliotecas de AutoML para descubrir modelos de buen rendimiento para tareas de modelado predictivo en Python.

Empecemos.

Bibliotecas de aprendizaje automático (AutoML) para Python

Bibliotecas de aprendizaje automático (AutoML) para Python
Foto de Michael Coghlan, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en cuatro partes; son:

  1. Aprendizaje automático de la máquina
  2. Auto-Sklearn
  3. Herramienta de optimización de tuberías en árboles (TPOT)
  4. Hyperopt-Sklearn

Aprendizaje automático de la máquina

El Aprendizaje Automático de Máquinas, o AutoML para abreviar, implica la selección automática de la preparación de datos, el modelo de aprendizaje de máquinas y los hiperparámetros del modelo para una tarea de modelado predictivo.

Se refiere a las técnicas que permiten a los profesionales y no expertos en aprendizaje automático semisofisticados descubrir rápidamente un buen modelo de predicción para su tarea de aprendizaje automático, con muy poca intervención aparte de proporcionar un conjunto de datos.

… el usuario simplemente proporciona datos, y el sistema AutoML determina automáticamente el enfoque que mejor funciona para esta aplicación en particular. De este modo, AutoML hace que los enfoques de aprendizaje automático de última generación sean accesibles a los científicos del dominio que están interesados en aplicar el aprendizaje automático pero que no tienen los recursos para conocer en detalle las tecnologías que hay detrás de él.

– Página ix, Aprendizaje automático de máquinas: Métodos, sistemas, desafíos, 2019.

Un aspecto central del enfoque es la definición de un gran problema de optimización jerárquica que implica la identificación de las transformaciones de datos y los propios modelos de aprendizaje de la máquina, además de los hiperparámetros de los modelos.

Muchas empresas ofrecen ahora el AutoML como un servicio, en el que se carga un conjunto de datos y se puede descargar o alojar y utilizar un modelo de canalización a través de un servicio web (es decir, MLaaS). Entre los ejemplos más populares figuran las ofertas de servicios de Google, Microsoft y Amazon.

Además, se dispone de bibliotecas de código abierto que implementan técnicas de AutoML, centradas en las transformaciones, modelos e hiperparámetros de datos específicos utilizados en el espacio de búsqueda y en los tipos de algoritmos utilizados para navegar u optimizar el espacio de búsqueda de posibilidades, siendo las versiones de Optimización Bayesiana las más comunes.

Hay muchas bibliotecas de AutoML de código abierto, aunque en este tutorial nos centraremos en las mejores bibliotecas que pueden utilizarse junto con la popular biblioteca de aprendizaje de máquinas Python de código abierto.

Lo son: Hyperopt-Sklearn, Auto-Sklearn, y TPOT.

¿Me he perdido tu biblioteca favorita de AutoML para aprender ciencia?
Hágamelo saber en los comentarios de abajo.

Examinaremos cada una de ellas más detenidamente, para que puedan evaluar y considerar qué biblioteca podría ser apropiada para su proyecto.

Auto-Sklearn

Auto-Sklearn es una biblioteca de Python de código abierto para AutoML que utiliza modelos de aprendizaje automático de la biblioteca de aprendizaje automático de Scikit-learn.

Fue desarrollado por Matthias Feurer, et al. y descrito en su documento de 2015 titulado «Aprendizaje automático eficiente y robusto».

… introducimos un nuevo y robusto sistema de AutoML basado en scikit-learn (utilizando 15 clasificadores, 14 métodos de preprocesamiento de características y 4 métodos de preprocesamiento de datos, dando lugar a un espacio de hipótesis estructurado con 110 hiperparámetros).

– Aprendizaje automático eficiente y robusto, 2015.

El primer paso es instalar la biblioteca de Auto-Sklearn, que se puede lograr usando pip, de la siguiente manera:

Una vez instalado, podemos importar la biblioteca e imprimir el número de versión para confirmar que se instaló con éxito:

Ejecutando el ejemplo se imprime el número de versión. El número de versión debe ser igual o superior.

A continuación, podemos demostrar el uso de Auto-Sklearn en una tarea de clasificación sintética.

Podemos definir una clase AutoSklearnClassifier que controle la búsqueda y configurarla para que se ejecute durante dos minutos (120 segundos) y mate a cualquier modelo que tarde más de 30 segundos en evaluarse. Al final de la ejecución, podemos reportar las estadísticas de la búsqueda y evaluar el modelo de mejor rendimiento en un conjunto de datos de retención.

Recomendado:  MOOC: ¿Qué son y por qué son tan populares?

El ejemplo completo figura a continuación.

Ejecutar el ejemplo llevará unos dos minutos, dado el duro límite que le impusimos a la carrera.

Al final de la tirada, se imprime un resumen que muestra que se evaluaron 599 modelos y que el rendimiento estimado del modelo final fue del 95,6 por ciento.

Luego evaluamos el modelo en el conjunto de datos de retención y vemos que se logró una precisión de clasificación del 97%, lo cual es razonablemente hábil.

Para más información sobre la biblioteca de Auto-Sklearn, ver:

Herramienta de optimización de tuberías en árboles (TPOT)

La herramienta de optimización de tuberías basada en árboles, o TPOT para abreviar, es una biblioteca de Python para el aprendizaje automatizado de las máquinas.

TPOT utiliza una estructura basada en árboles para representar un modelo de tuberías para un problema de modelación predictiva, incluyendo la preparación de datos y los algoritmos de modelación, y los hiperparámetros del modelo.

… un algoritmo evolutivo llamado Herramienta de Optimización de Tuberías Basada en Árboles (TPOT) que diseña y optimiza automáticamente las tuberías de aprendizaje de las máquinas.

– Evaluación de una herramienta de optimización de oleoductos basada en árboles para automatizar la ciencia de los datos, 2016.

El primer paso es instalar la biblioteca de TPOT, que se puede lograr usando pip, de la siguiente manera:

Una vez instalado, podemos importar la biblioteca e imprimir el número de versión para confirmar que se instaló con éxito:

Ejecutando el ejemplo se imprime el número de versión. El número de versión debe ser igual o superior.

A continuación, podemos demostrar el uso de TPOT en una tarea de clasificación sintética.

Esto implica configurar una instancia del TPOTClassifier con el tamaño de la población y el número de generaciones para la búsqueda evolutiva, así como el procedimiento de validación cruzada y la métrica utilizada para evaluar los modelos. El algoritmo ejecutará entonces el procedimiento de búsqueda y guardará en un archivo el modelo mejor descubierto.

El ejemplo completo figura a continuación.

Ejecutar el ejemplo puede llevar unos minutos, y verás una barra de progreso en la línea de comandos.

La precisión de los modelos de alto rendimiento se informará a lo largo del camino.

Sus resultados específicos variarán dada la naturaleza estocástica del procedimiento de búsqueda.

En este caso, podemos ver que el oleoducto de mayor rendimiento alcanzó una precisión media de alrededor del 92,6 por ciento.

El oleoducto de mayor rendimiento se guarda en un archivo llamado «tpot_best_model.py“.

Al abrir este archivo, se puede ver que hay un código genérico para cargar un conjunto de datos y ajustar la tubería. A continuación se muestra un ejemplo.

Entonces puedes recuperar el código para crear la tubería modelo e integrarla en tu proyecto.

Para obtener más información sobre TPOT, consulte los siguientes recursos:

Hyperopt-Sklearn

HyperOpt es una librería Python de código abierto para la optimización Bayesiana desarrollada por James Bergstra.

Está diseñado para la optimización a gran escala de modelos con cientos de parámetros y permite que el procedimiento de optimización sea escalado a través de múltiples núcleos y múltiples máquinas.

HyperOpt-Sklearn envuelve la biblioteca HyperOpt y permite la búsqueda automática de métodos de preparación de datos, algoritmos de aprendizaje automático e hiperparámetros de modelos para tareas de clasificación y regresión.

… presentamos Hyperopt-Sklearn: un proyecto que aporta los beneficios de la configuración automática de algoritmos a los usuarios de Python y scikit-learn. Hyperopt-Sklearn utiliza Hyperopt para describir un espacio de búsqueda sobre las posibles configuraciones de los componentes de Scikit-Learn, incluyendo los módulos de preprocesamiento y clasificación.

– Hyperopt-Sklearn: Configuración automática de hiperparámetros para Scikit-Learn, 2014.

Ahora que estamos familiarizados con HyperOpt y HyperOpt-Sklearn, veamos cómo usar HyperOpt-Sklearn.

El primer paso es instalar la biblioteca HyperOpt.

Esto se puede lograr usando el administrador de paquetes de pip como se indica a continuación:

A continuación, debemos instalar la biblioteca HyperOpt-Sklearn.

Esto también puede ser instalado usando pip, aunque debemos realizar esta operación manualmente clonando el repositorio y ejecutando la instalación desde los archivos locales, de la siguiente manera:

Recomendado:  Los beneficios de una estrategia basada en la IA

Podemos confirmar que la instalación se realizó con éxito comprobando el número de versión con el siguiente comando:

Esto resumirá la versión instalada de HyperOpt-Sklearn, confirmando que se está utilizando una versión moderna.

A continuación, podemos demostrar el uso de Hyperopt-Sklearn en una tarea de clasificación sintética.

Podemos configurar una instancia de HyperoptEstimator que ejecute la búsqueda, incluyendo los clasificadores a considerar en el espacio de búsqueda, los pasos de preprocesamiento y el algoritmo de búsqueda a utilizar. En este caso, utilizaremos TPE, o Tree of Parzen Estimators, y realizaremos 50 evaluaciones.

Al final de la búsqueda, se evalúa y resume la tubería modelo de mejor rendimiento.

El ejemplo completo figura a continuación.

Ejecutar el ejemplo puede llevar unos minutos.

Se informará sobre el progreso de la búsqueda y verá algunas advertencias que puede ignorar con seguridad.

Al final de la ejecución, el modelo de mejor rendimiento se evalúa en el conjunto de datos de retención y la tubería descubierta se imprime para su uso posterior.

Sus resultados específicos pueden diferir dada la naturaleza estocástica del algoritmo de aprendizaje y el proceso de búsqueda. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el modelo elegido alcanzó una precisión de alrededor del 84,8 por ciento en el conjunto de pruebas de retención. El Pipeline involucra un modelo de clasificador SGDC sin preprocesamiento.

El modelo impreso puede ser utilizado directamente, por ejemplo, el código copiado en otro proyecto.

Para más información sobre Hyperopt-Sklearn, ver:

Resumen

En este tutorial, descubriste cómo usar las principales bibliotecas de código abierto de AutoML para aprender ciencia en Python.

Específicamente, aprendiste:

  • AutoML son técnicas para descubrir automática y rápidamente un modelo de aprendizaje de máquinas de buen rendimiento para una tarea de modelado predictivo.
  • Las tres bibliotecas de AutoML más populares para Scikit-Learn son Hyperopt-Sklearn, Auto-Sklearn y TPOT.
  • Cómo utilizar las bibliotecas de AutoML para descubrir modelos de buen rendimiento para tareas de modelado predictivo en Python.

¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios de abajo y haré lo posible por responder.

Descubre el aprendizaje rápido de la máquina en Python!

Aprendizaje de la máquina maestra con Python

Desarrolle sus propios modelos en minutos

…con sólo unas pocas líneas de código de aprendizaje científico…

Aprende cómo en mi nuevo Ebook:
Dominio de la máquina de aprendizaje con la pitón

Cubre Tutoriales de auto-estudio y proyectos integrales como:
Cargando datos, visualización, modelado, tuningy mucho más…

Finalmente traer el aprendizaje automático a
Sus propios proyectos

Sáltese los académicos. Sólo los resultados.

Ver lo que hay dentro