Saltar al contenido

TPOT para el aprendizaje automático de la máquina en Python

9 de septiembre de 2020

El Aprendizaje Automático de Máquinas (AutoML) se refiere a las técnicas para descubrir automáticamente modelos de buen rendimiento para tareas de modelado predictivo con muy poca participación del usuario.

TPOT es una biblioteca de código abierto para realizar AutoML en Python. Hace uso de la popular biblioteca de aprendizaje de máquinas Scikit-Learn para transformaciones de datos y algoritmos de aprendizaje de máquinas y utiliza un procedimiento de búsqueda global estocástica de Programación Genética para descubrir eficientemente un modelo de tubería de alto rendimiento para un determinado conjunto de datos.

En este tutorial, descubrirás cómo utilizar TPOT para AutoML con algoritmos de aprendizaje automático Scikit-Learn en Python.

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

  • TPOT es una biblioteca de código abierto para AutoML con preparación de datos de aprendizaje científico y modelos de aprendizaje automático.
  • Cómo utilizar el TPOT para descubrir automáticamente modelos de alto rendimiento para las tareas de clasificación.
  • Cómo usar TPOT para descubrir automáticamente modelos de alto rendimiento para tareas de regresión.

Empecemos.

TPOT para el aprendizaje automático de la máquina en Python

TPOT para el aprendizaje automático de la máquina en Python
Foto de Gwen, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en cuatro partes; son:

  1. TPOT para el aprendizaje automático de la máquina
  2. Instalar y utilizar el TPOT
  3. TPOT para la clasificación
  4. TPOT para la regresión

TPOT para el aprendizaje automático de la máquina

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 pipeline para un problema de modelación predictiva, incluyendo la preparación de datos y algoritmos de modelación e hiperparámetros de modelos.

… 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.

A continuación se realiza un procedimiento de optimización para encontrar una estructura de árbol que funcione mejor para un determinado conjunto de datos. Específicamente, un algoritmo de programación genética, diseñado para realizar una optimización global estocástica en programas representados como árboles.

TPOT utiliza una versión de la programación genética para diseñar y optimizar automáticamente una serie de transformaciones de datos y modelos de aprendizaje automático que intentan maximizar la precisión de la clasificación para un determinado conjunto de datos de aprendizaje supervisado.

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

La siguiente figura, tomada del documento TPOT, muestra los elementos que intervienen en la búsqueda de oleoductos, incluida la limpieza de datos, la selección de características, el procesamiento de características, la construcción de características, la selección de modelos y la optimización de hiperparámetros.

Resumen de la búsqueda de la tubería de TPOT

Resumen de la búsqueda de la tubería de TPOT
Tomado de: Evaluation of a Tree-based Pipeline Optimization Tool for Automaating Data Science, 2016.

Ahora que estamos familiarizados con lo que es TPOT, veamos cómo podemos instalar y usar TPOT para encontrar un modelo efectivo de tubería.

Instalar y utilizar el TPOT

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.

Su número de versión debería ser el mismo o más alto.

Usar el TPOT es sencillo.

Implica crear una instancia de la clase TPOTRegressor o TPOTClassifier, configurarla para la búsqueda, y luego exportar el modelo de tubería que se encontró para lograr el mejor rendimiento en su conjunto de datos.

La configuración de la clase implica dos elementos principales.

El primero es cómo se evaluarán los modelos, por ejemplo, el esquema de validación cruzada y la métrica de rendimiento. Recomiendo que se especifique explícitamente una clase de validación cruzada con la configuración elegida y la métrica de rendimiento a utilizar.

Por ejemplo, RepeatedKFold para la regresión con ‘error_absoluto_negativo…métrica para la regresión:

O un RepetidoEstratificadoKFold para la regresión con ‘exactitud…métrica para la clasificación:

El otro elemento es la naturaleza del procedimiento de búsqueda global estocástica.

Como algoritmo evolutivo, esto implica la configuración de los parámetros, como el tamaño de la población, el número de generaciones a ejecutar y, potencialmente, las tasas de cruce y mutación. Los primeros controlan de manera importante la extensión de la búsqueda; los segundos pueden dejarse en valores por defecto si la búsqueda evolutiva es nueva para usted.

Por ejemplo, un tamaño de población modesto de 100 y 5 o 10 generaciones es un buen punto de partida.

Al final de la búsqueda, se encuentra un Pipeline que funciona mejor.

Este Pipeline puede ser exportado como código en un archivo Python que luego puede copiar y pegar en su propio proyecto.

Ahora que estamos familiarizados con el uso de TPOT, veamos algunos ejemplos trabajados con datos reales.

TPOT para la clasificación

En esta sección, usaremos TPOT para descubrir un modelo para el conjunto de datos del sonar.

El conjunto de datos del sonar es un conjunto de datos estándar para el aprendizaje de la máquina, compuesto por 208 filas de datos con 60 variables de entrada numéricas y una variable objetivo con dos valores de clase, por ejemplo, la clasificación binaria.

Utilizando un arnés de prueba de validación cruzada estratificada 10 veces con tres repeticiones, un modelo ingenuo puede lograr una precisión de alrededor del 53 por ciento. Un modelo de alto rendimiento puede lograr una precisión en este mismo arnés de prueba de alrededor del 88 por ciento. Esto proporciona los límites del rendimiento esperado en este conjunto de datos.

Recomendado:  AI Training Dataset Market para presenciar la aceleración del crecimiento | Appen Limited, Cogito Tech LLC, Lionbridge Technologies, Inc., Amazon Web Services - KSU

El conjunto de datos implica la predicción de si los retornos del sonar indican una roca o una mina simulada.

No es necesario descargar el conjunto de datos; lo descargaremos automáticamente como parte de nuestros ejemplos de trabajo.

El siguiente ejemplo descarga el conjunto de datos y resume su forma.

Ejecutando el ejemplo se descarga el conjunto de datos y se divide en elementos de entrada y salida. Como era de esperar, podemos ver que hay 208 filas de datos con 60 variables de entrada.

A continuación, usemos TPOT para encontrar un buen modelo para el conjunto de datos del sonar.

Primero, podemos definir el método para evaluar los modelos. Utilizaremos una buena práctica de validación cruzada estratificada k-pliegue repetida con tres repeticiones y 10 pliegues.

Usaremos un tamaño de población de 50 por cinco generaciones para la búsqueda y usaremos todos los núcleos en el sistema estableciendo «n_jobs» a -1.

Finalmente, podemos iniciar la búsqueda y asegurarnos de que el modelo de mejor rendimiento se guarda al final de la carrera.

A continuación se muestra el ejemplo completo.

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

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.

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

En este caso, podemos ver que el oleoducto de mayor rendimiento alcanzó una precisión media de alrededor del 86,6 por ciento. Este es un modelo hábil, y cercano a un modelo de alto rendimiento en este conjunto de datos.

El oleoducto de mayor rendimiento se guarda en un archivo llamado «tpot_sonar_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.

Recomendado:  Cualquiera que sea su especialidad, incluya estos cursos universitarios imprescindibles para el éxito profesional

NotaTal como está, este código no se ejecuta, por diseño. Es una plantilla que puedes copiar y pegar en tu proyecto.

En este caso, podemos ver que el modelo de mejor rendimiento es un pipeline compuesto por un modelo de Bayes ingenuo y un modelo de Gradient Boosting.

Podemos adaptar este código para que se ajuste a un modelo final con todos los datos disponibles y hacer una predicción para los nuevos datos.

El ejemplo completo figura a continuación.

La ejecución del ejemplo se ajusta al modelo de mejor rendimiento del conjunto de datos y hace una predicción para una sola fila de nuevos datos.

TPOT para la regresión

En esta sección, usaremos TPOT para descubrir un modelo para el conjunto de datos del seguro de automóviles.

El conjunto de datos de seguro de automóviles es un conjunto de datos estándar de aprendizaje por máquina que consta de 63 filas de datos con una variable de entrada numérica y una variable de destino numérica.

Utilizando un arnés de pruebas de validación cruzada estratificada 10 veces con tres repeticiones, un modelo ingenuo puede lograr un error absoluto medio (MAE) de alrededor de 66. Un modelo de alto rendimiento puede lograr un MAE en este mismo arnés de prueba de alrededor de 28. Esto proporciona los límites del rendimiento esperado en este conjunto de datos.

El conjunto de datos implica la predicción de la cantidad total en reclamaciones (miles de coronas suecas) dado el número de reclamaciones para las diferentes regiones geográficas.

No es necesario descargar el conjunto de datos; lo descargaremos automáticamente como parte de nuestros ejemplos de trabajo.

El siguiente ejemplo descarga el conjunto de datos y resume su forma.

Ejecutando el ejemplo se descarga el conjunto de datos y se divide en elementos de entrada y salida. Como era de esperar, podemos ver que hay 63 filas de datos con una variable de entrada.

A continuación, podemos usar TPOT para encontrar un buen modelo para el conjunto de datos del seguro de automóviles.

Primero, podemos definir el método para evaluar los modelos. Usaremos una buena práctica de validación cruzada repetida k-pliegue con tres repeticiones y 10 pliegues.

Usaremos un tamaño de población de 50 por 5 generaciones para la búsqueda y usaremos todos los núcleos en el sistema estableciendo «n_jobs» a -1.

Finalmente, podemos iniciar la búsqueda y asegurarnos de que el modelo de mejor rendimiento se guarda al final de la carrera.

A continuación se muestra el ejemplo completo.

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

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o el procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo unas cuantas veces y compare el resultado promedio.

El MAE de los modelos de mayor rendimiento será informado a lo largo del camino.

En este caso, podemos ver que el oleoducto de mayor rendimiento alcanzó el MAE medio de alrededor de 29,14. Este es un modelo hábil, y cercano a un modelo de alto rendimiento en este conjunto de datos.

El oleoducto de mayor rendimiento se guarda en un archivo llamado «tpot_insurance_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.

NotaTal como está, este código no se ejecuta, por diseño. Es una plantilla que puedes copiar y pegar en tu proyecto.

En este caso, podemos ver que el modelo de mejor rendimiento es una tubería compuesta por un modelo de máquina de vector de soporte lineal.

Podemos adaptar este código para que se ajuste a un modelo final con todos los datos disponibles y hacer una predicción para los nuevos datos.

El ejemplo completo figura a continuación.

La ejecución del ejemplo se ajusta al modelo de mejor rendimiento del conjunto de datos y hace una predicción para una sola fila de nuevos datos.

Más lecturas

Esta sección proporciona más recursos sobre el tema si desea profundizar en él.

Resumen

En este tutorial, descubriste cómo usar TPOT para AutoML con algoritmos de aprendizaje automático Scikit-Learn en Python.

Específicamente, aprendiste:

  • TPOT es una biblioteca de código abierto para AutoML con preparación de datos de aprendizaje científico y modelos de aprendizaje automático.
  • Cómo utilizar el TPOT para descubrir automáticamente modelos de alto rendimiento para las tareas de clasificación.
  • Cómo usar TPOT para descubrir automáticamente modelos de alto rendimiento para tareas de regresión.

¿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