Trabajando el Pipeline de Machine Learning con PyCaret - Parte 1

Daniel Morales
Por Daniel Morales - Screencast # 5
Oct 27, 2020


Dividiremos este video tutorial en 4 pasos
  • Parte #1 - Introducción a la librería, dataset a trabajar e importancia en la división de los datos
  • Parte #2 - N-Fold Cross-validation, setup() y compare_models()
  • Parte #3 - create_model(), tune_model(), plot_model(), evaluate_model() y finalize_model()
  • Parte #4 - predict_model(), save_model(), load_model(), Pros y Cons de la librería, Conslusiones

Este tutorial abarca todo el proceso de ML, desde la ingestión de datos, el preprocesamiento, el entrenamiento del modelo, el ajuste de los hiperparámetros, la predicción y el almacenamiento del modelo para su uso posterior.





Completaremos todos estos pasos en menos de 10 comandos que están construidos de forma natural y son muy intuitivos de recordar, como 
  • create_model(), 
  • tune_model(), 
  • compare_models()
  • plot_model()
  • evaluate_model()
  • predict_model()

Recrear todo el experimento sin PyCaret requiere más de 100 líneas de código en la mayoría de las librerías. La libreria tambien permite hacer cosas más avanzadas, como preprocesamiento avanzado, ensembling, stacking generalizado y otras técnicas que permiten personalizar completamente el pipeline de ML y que son imprescindibles para cualquier científico de datos. 

  • PyCaret es una biblioteca de código abierto y de bajo nivel para ML con Python que le permite pasar de preparar sus datos a desplegar su modelo en cuestión de minutos
  • Permite a los científicos y analistas de datos realizar experimentos iterativos de ciencia de datos de principio a fin de manera eficiente y les permite llegar a conclusiones más rápido debido a que se emplea mucho menos tiempo en la programación
  • Esta librería es muy similar a Caret de R, pero implementada en python
  • Cuando se trabaja en un proyecto de ciencia de datos, normalmente nos lleva mucho tiempo comprender los datos (EDA y feature engineering), 
  • Así que, ¿qué pasaría si pudiéramos reducir a la mitad el tiempo que dedicamos a la parte de modelado del proyecto?
  • https://pycaret.org/


PyCaret Modules
  • Pycaret está subdividido según la tarea que queremos ejecutar, y tiene diferentes módulos, los cuales representan cada tipo de aprendizaje (supervisado o no-supervisado)
  • Para el presente tutorial, estaremos trabajando el módulo de aprendizaje supervisado con un algoritmo de clasificación binaria.
  • El módulo de clasificación de PyCaret (pycaret.classification) es un módulo de aprendizaje automático supervisado que se utiliza para clasificar los elementos en un grupo binario basado en diversas técnicas y algoritmos
  • El módulo de clasificación de PyCaret (pycaret.classification) es un módulo de aprendizaje automático supervisado que se utiliza para clasificar los elementos en un grupo binario basado en diversas técnicas y algoritmos
  • El módulo de clasificación de PyCaret se puede utilizar para problemas de clasificación binarios o de clases múltiples. 
  • Tiene más de 18 algoritmos y 14 gráficos para analizar el rendimiento de los modelos. 
  • Ya sea pa el hiper-parameter tuning, ensembling o técnicas avanzadas como el stacking, el módulo de clasificación de PyCaret lo tiene todo




DataSet

  • Para este tutorial utilizaremos un conjunto de datos de la UCI llamado Default of Credit Card Clients Dataset. 
  • Este conjunto de datos contiene información sobre los pagos por defecto, los factores demográficos, los datos de crédito, el historial de pagos y los extractos de facturación de los clientes de tarjetas de crédito en Taiwán desde abril de 2005 hasta septiembre de 2005.
  • Hay 24.000 muestras y 25 características.
  • El dataset lo puedes encontra aqui: https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients
  • Link directo para descargarlo en CSV: https://drive.google.com/file/d/1bVUAk2Y4bdqKx-2NAPk0b4mIOv078zl6/view?usp=sharing
  • A fin de demostrar la función predict_model() sobre datos no vistos, se ha retenido una muestra de 1.200 registros del conjunto de datos original para utilizarlos en las predicciones
  • Esto no debe confundirse con una división de train/test, ya que esta división particular se realiza para simular un escenario de la vida real
  • Otra forma de pensar sobre esto es que estos 1200 registros no están disponibles en el momento en que se realizó el experimento de ML



Training Set Vs Test Set Vs Validation Set

  • Conjunto de datos de entrenamiento: La muestra de datos utilizada para entrenar el modelo.
  • El conjunto de datos reales que usamos para entrenar el modelo
  • El modelo ve y aprende de estos datos.
  • Conjunto de datos de test: La muestra de datos utilizada para proporcionar una evaluación imparcial de un modelo se ajusta al conjunto de datos de entrenamiento mientras se ajustan los hiperparámetros del modelo. 
  • La evaluación se vuelve más sesgada a medida que la habilidad en el conjunto de datos de test se incorpora a la configuración del modelo.
  • El conjunto de test se utiliza para evaluar un modelo determinado, pero esto es para una evaluación frecuente. 
  • Nosotros, como ingenieros de ML, usamos estos datos para afinar los hiperparámetros del modelo. 
  • Por lo tanto, el modelo ve ocasionalmente estos datos, pero nunca "aprende" de ellos. 
  • Utilizamos los resultados del conjunto de test, y actualizamos los hiperparámetros de nivel superior
  • Así que el conjunto de test afecta a un modelo, pero sólo indirectamente. 
  • El conjunto de test también se conoce como el conjunto de Desarrollo. 
  • Esto tiene sentido, ya que este conjunto de datos ayuda durante la etapa de "desarrollo" del modelo.
  • La muestra de datos utilizada para proporcionar una evaluación imparcial de un modelo final encaja en el conjunto de datos de entrenamiento.
  • El conjunto de datos de validacion proporciona el patrón oro utilizado para evaluar el modelo. 
  • Sólo se utiliza una vez que el modelo está completamente entrenado (utilizando los conjuntos de entrenamiento y test).
  • El conjunto de validacion es generalmente lo que se utiliza para evaluar los modelos de una competencia (por ejemplo, en muchas competiciones de Kaggle o DataSource.ai, el conjunto de test se libera inicialmente junto con el conjunto de entrenamiento y el conjunto de validacion real sólo se libera cuando la competición está a punto de cerrarse, y es el resultado del modelo del conjunto de validacion el que decide el ganador).
  • Muchas veces el set de test se utiliza como el set de validacion, pero no es una buena práctica. 
  • El conjunto de validacion está generalmente bien curado. 
  • Contiene datos cuidadosamente muestreados que abarcan las diversas clases a las que se enfrentaría el modelo, cuando se usen en el mundo real.
  • Se tiene a mezclar el nombre de test y validación.
  • Según el tutorial, la fuente, el libro, el video o el profesor se cambian los términos, lo importante es mantener el concepto.
  • En nuestro caso ya separamos el conjunto de validacion al principio (1.200 samples de data_unseen)

“Trabajando el Pipeline de Machine Learning con PyCaret - Parte 1”
– Daniel Morales twitter social icon Tweet

Compartir este artículo:

0 Comentarios

Crear un comentario
Ingresar para Comentar
divider graphic

Otros Tutoriales

6

Trabajando el Pipeline de Machine Learning con PyCaret - Parte 4

PrediccionAntes de finalizar el modelo, es aconsejable realizar una comprobación final mediante la predicción del conjunto de test/hold-out y la re...

Daniel Morales
Por Daniel Morales
7

Trabajando el Pipeline de Machine Learning con PyCaret - Parte 3

Creando el Modelocreate_model es la función más granular de PyCaret y a menudo es la base de la mayoría de las funcionalidades de PyCaretComo su no...

Daniel Morales
Por Daniel Morales
7

Trabajando el Pipeline de Machine Learning con PyCaret - Parte 2

Puedes acceder a la Parte#1 de Trabajando el Pipeline de Machine Learning con PyCaret aqui: Entorno de PyCaretAhora vamos a configurar el ambiente ...

Daniel Morales
Por Daniel Morales
Partners

arrow-up icon