Saltar al contenido

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

7 de septiembre de 2020

Última actualización el 7 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.

Auto-Sklearn es una biblioteca de código abierto para realizar AutoML en Python. Utiliza la popular biblioteca de aprendizaje automático Scikit-Learn para transformaciones de datos y algoritmos de aprendizaje automático y utiliza un procedimiento de búsqueda de optimización bayesiana para descubrir de forma eficiente un modelo de tuberías de alto rendimiento para un conjunto de datos determinado.

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

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

  • Auto-Sklearn es una biblioteca de código abierto para AutoML con preparación de datos scikit-learn y modelos de aprendizaje automático.
  • Cómo usar Auto-Sklearn para descubrir automáticamente modelos de alto rendimiento para tareas de clasificación.
  • Cómo usar Auto-Sklearn para descubrir automáticamente modelos de alto rendimiento para tareas de regresión.

Empecemos.

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

Auto-aprendizaje para el aprendizaje automático de la máquina en Python
Foto de Richard, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en cuatro partes; son:

  1. AutoML con Auto-Sklearn
  2. Instalar y usar Auto-Sklearn
  3. Auto-aprendizaje para la clasificación
  4. Auto-aprendizaje para la regresión

AutoML con Auto-Sklearn

El Aprendizaje Automático de Máquinas, o AutoML para abreviar, es un proceso de descubrimiento de la tubería de mejor rendimiento de las transformaciones de datos, el modelo y la configuración del modelo para un conjunto de datos.

El AutoML a menudo implica el uso de sofisticados algoritmos de optimización, como la Optimización Bayesiana, para navegar eficientemente por el espacio de los posibles modelos y configuraciones de modelos y descubrir rápidamente lo que funciona bien para una determinada tarea de modelación predictiva. Permite a los profesionales no expertos en aprendizaje automático descubrir rápida y fácilmente lo que funciona bien o incluso mejor para un determinado conjunto de datos con muy pocos antecedentes técnicos o de entrada directa.

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.

La ventaja de Auto-Sklearn es que, además de descubrir la preparación de datos y el modelo que funciona para un conjunto de datos, también es capaz de aprender de los modelos que funcionaron bien en conjuntos de datos similares y es capaz de crear automáticamente un conjunto de modelos de alto rendimiento descubiertos como parte del proceso de optimización.

Este sistema, que denominamos AUTO-SKLEARN, mejora los métodos existentes de AutoML al tener en cuenta automáticamente el rendimiento pasado en conjuntos de datos similares, y al construir conjuntos a partir de los modelos evaluados durante la optimización.

– Aprendizaje automático eficiente y robusto, 2015.

Los autores ofrecen una útil descripción de su sistema en el documento, que se presenta a continuación.

Visión general del sistema de autoaprendizaje

Visión general del sistema de autoaprendizaje.
Tomado de: Efficient and Robust Automated Machine Learning, 2015.

Instalar y usar Auto-Sklearn

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.

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

El uso de Auto-Sklearn es sencillo.

Dependiendo de si su tarea de predicción es de clasificación o de regresión, usted crea y configura una instancia de la clase AutoSklearnClassifier o AutoSklearnRegressor, la ajusta en su conjunto de datos, y eso es todo. El modelo resultante se puede utilizar para hacer predicciones directamente o guardarse en un archivo (utilizando pickle) para su uso posterior.

Hay una tonelada de opciones de configuración proporcionadas como argumentos a la clase de Autoaprendizaje.

De forma predeterminada, la búsqueda utilizará una división de prueba de trenes de su conjunto de datos durante la búsqueda, y este valor predeterminado se recomienda tanto para la velocidad como para la simplicidad.

Lo importante es que deberías poner el «n_jobs» argumento al número de núcleos en su sistema, por ejemplo, 8 si tiene 8 núcleos.

El proceso de optimización se llevará a cabo durante el tiempo que usted permita, medido en minutos. Por defecto, se ejecutará durante una hora.

Recomiendo que se establezca el «tiempo_de_esta_tarea«…por el número de segundos que quieres que dure el proceso. Por ejemplo, menos de 5-10 minutos es probablemente suficiente para muchas pequeñas tareas de modelado predictivo (menos de 1.000 filas).

Recomendado:  kNN Imputación por valores perdidos en el aprendizaje automático

Usaremos 5 minutos (300 segundos) para los ejemplos de este tutorial. También limitaremos el tiempo asignado a cada evaluación del modelo a 30 segundos a través de la función «límite_de_tiempo_por_corrido«argumento». Por ejemplo:

Puede limitar los algoritmos considerados en la búsqueda, así como las transformaciones de datos.

Por defecto, la búsqueda creará un conjunto de modelos de alto rendimiento descubiertos como parte de la búsqueda. A veces, esto puede llevar a una sobrecarga y puede ser desactivado por el ajuste de la «tamaño_de_conjunto» argumento a 1 y «configuraciones_iniciales_vía_aprendizaje_de_metal» a 0.

Al final de una corrida, se puede acceder a la lista de modelos, así como a otros detalles.

Tal vez la característica más útil es la sprint_statistics() que resume la búsqueda y el rendimiento del modelo final.

Ahora que estamos familiarizados con la biblioteca de Auto-Sklearn, veamos algunos ejemplos trabajados.

Auto-aprendizaje para la clasificación

En esta sección, usaremos Auto-aprendizaje 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.

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.

Usaremos Auto-Sklearn para encontrar un buen modelo para el conjunto de datos del sonar.

Primero, dividiremos el conjunto de datos en conjuntos de entrenamiento y de prueba y permitiremos que el proceso encuentre un buen modelo en el conjunto de entrenamiento, para luego evaluar el rendimiento de lo que se encontró en el conjunto de pruebas de retención.

El AutoSklearnClassifier está configurado para funcionar durante 5 minutos con 8 núcleos y limitar cada evaluación del modelo a 30 segundos.

La búsqueda se realiza entonces en el conjunto de datos de entrenamiento.

Posteriormente, se informa de un resumen de la búsqueda y del modelo de mejor rendimiento.

Finalmente, evaluamos el rendimiento del modelo que se preparó en el conjunto de datos de la prueba de retención.

A continuación se muestra el ejemplo completo.

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

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.

Al final de la tirada, se imprime un resumen que muestra que se evaluaron 1.054 modelos y que el rendimiento estimado del modelo final fue del 91%.

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

Auto-aprendizaje para la regresión

En esta sección, usaremos Auto-Sklearn 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.

Usaremos Auto-Sklearn para encontrar un buen modelo para el conjunto de datos del seguro de auto.

Podemos utilizar el mismo proceso que se utilizó en la sección anterior, aunque utilizaremos el AutoSklearnRegressor en lugar de la clase AutoSklearnClassifier.

Por defecto, el regresor optimizará la métrica R^2.

En este caso, estamos interesados en el error absoluto medio, o MAE, que podemos especificar a través de la «métrico» argumento cuando se llama a la fit() función.

El ejemplo completo figura a continuación.

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

Puede que veas algunos mensajes de advertencia durante la carrera y puedes ignorarlos con seguridad, como por ejemplo:

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.

Al final de la tirada, se imprime un resumen que muestra que se evaluaron 1.759 modelos y que el rendimiento estimado del modelo final fue un MAE de 29.

Luego evaluamos el modelo en el conjunto de datos de retención y vemos que se logró un MAE de 26, lo cual es un gran resultado.

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 Auto-Sklearn para AutoML con los algoritmos de aprendizaje automático Scikit-Learn en Python.

Específicamente, aprendiste:

  • Auto-Sklearn es una biblioteca de código abierto para AutoML con preparación de datos scikit-learn y modelos de aprendizaje automático.
  • Cómo usar Auto-Sklearn para descubrir automáticamente modelos de alto rendimiento para tareas de clasificación.
  • Cómo usar Auto-Sklearn 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