Gestión de flujos de trabajo de machine learning con pipelines de Scikit-Learn Parte 1: Una introducción amable

Matthew Mayo
Ciencia y Datos
Published in
3 min readMay 11, 2018

¿Está familiarizado con los pipelines (tuberías) de Scikit-learn?

Son una herramienta extremadamente simple pero muy útil para gestionar flujos de trabajo de machine learning.

Una tarea típica de machine learning generalmente implica la preparación de datos en diversos grados. No entraremos en la amplia gama de actividades que componen la preparación de datos aquí, pero hay muchas . Esas tareas son conocidas por ocupar una gran parte del tiempo dedicado a cualquier tarea de machine learning.

Después de un conjunto de datos se limpia desde un estado inicial potencial de confusión masiva, sin embargo, todavía hay varios menos intensivo todavía no menos importantes pasos de preprocesamiento de datos de transformación, tales como la extracción de características , escala característica , y la reducción de dimensionalidad , por nombrar sólo algunos .

Tal vez su preprocesamiento requiera solo una de estas transformaciones, como alguna forma de escalado. Pero tal vez necesites encadenar varias transformaciones juntas, y finalmente terminar con un estimador de algún tipo. Aquí es donde los pipelines de Scikit-learn pueden ser útiles.

La clase Pipeline de Scikit-learn está diseñada como una forma manejable de aplicar una serie de transformaciones de datos seguidas por la aplicación de un estimador . De hecho, eso es todo lo que es:

Pipeline de transformaciones con un estimador final.

Eso es. En definitiva, esta sencilla herramienta es útil para:

  • Conveniencia en la creación de un flujo de trabajo coherente y fácil de entender
  • Aplicación de la implementación del flujo de trabajo y el orden deseado de las aplicaciones de paso
  • Reproducibilidad
  • Valor en la persistencia de objetos enteros del pipeline (va a la reproducibilidad y la conveniencia)

Así que echemos un vistazo rápido a Pipelines. Específicamente, esto es lo que haremos.

Construir 3 pipelines , cada una con un estimador diferente (algoritmo de clasificación), usando hiperparámetros predeterminados:

Para demostrar las transformaciones de tubería , realizaremos:

  • escalado de características
  • reducción de dimensionalidad, utilizando PCA para proyectar datos en un espacio bidimensional

Terminaremos con la adaptación a nuestros estimadores finales .

Después, y casi sin relación alguna, para hacer esto un poco más como un flujo de trabajo completo (todavía no lo es, pero más cerca), haremos lo siguiente:

  • Seguimiento con datos de prueba de puntuación
  • Comparar las exactitudes del modelo de pipeline
  • Identificar el “mejor” modelo, lo que significa que tiene la mayor precisión en nuestros datos de prueba
  • Persistir (guardar en archivo) todo el pipeline del “mejor” modelo

Por supuesto, dado que usaremos hiperparámetros predeterminados, es probable que esto no dé como resultado los modelos más precisos posibles, pero proporcionará una idea de cómo usar pipelines simples. Volveremos sobre la cuestión de la modelización más compleja, el ajuste de hiperparámetros y la evaluación de modelos posteriores.

Ah, y para una mayor simplicidad, estamos usando el dataset del iris. El código está bien comentado y debería ser fácil de seguir.

Vamos a ejecutar nuestro script y ver qué pasa.

Logistic Regression pipeline test accuracy: 0.933
Support Vector Machine pipeline test accuracy: 0.900
Decision Tree pipeline test accuracy: 0.867
Classifier with best accuracy: Logistic Regression
Saved Logistic Regression pipeline to file
Traducción:Precisión de la prueba de la tubería de regresión logística: 0,933 Exactitud de la prueba de tuberías de Vector de soporte: 0,900 Exactitud de la prueba de tuberías del Árbol de decisiones: 0,867 Clasificador con la mejor precisión: Regresión logística Guardado de la tubería de regresión logística para archivar

Entonces ahí lo tienes; una implementación simple de pipelines de Scikit-learn. En este caso particular, nuestra pipelines de regresión logística con parámetros predeterminados obtuvo la mayor precisión.

Como se mencionó anteriormente, sin embargo, estos resultados probablemente no representan nuestros mejores esfuerzos. ¿Qué pasa si queremos probar una serie de hiperparámetros diferentes? ¿Podemos usar la búsqueda de grillas? ¿Podemos incorporar métodos automatizados para ajustar estos hiperparámetros? ¿Puede AutoML encajar en esta imagen en alguna parte? ¿Qué pasa con el uso de validación cruzada?

En los próximos dos artículos veremos estos problemas adicionales y veremos cómo estas piezas simples se unen para hacer que los pipelines sean mucho más potentes de lo que parecen dar nuestro ejemplo inicial.

Originalmente publicado en inglés en KDnuggets.

--

--

Matthew Mayo
Ciencia y Datos

I turn coffee into code in desperate need of refactoring, which I then refactor. #MachineLearning Researcher & Editor @kdnuggets #NeuralNetworks