Trabajando el Pipeline de Machine Learning con PyCaret - Parte 3

Daniel Morales
Por Daniel Morales - Screencast # 7
Nov 10, 2020


Creando el Modelo
  • create_model es la función más granular de PyCaret y a menudo es la base de la mayoría de las funcionalidades de PyCaret
  • Como su nombre lo indica, esta función entrena y evalúa un modelo utilizando una validación cruzada que puede ser establecida con el parámetro fold
  • La salida imprime una cuadrícula de puntuación que muestra por Fold la precisión, AUC, Recall, Precision, F1, Kappa y MCC.
  • Para el resto de este tutorial, trabajaremos con los siguientes modelos como nuestros modelos candidatos. 
  • Las selecciones son sólo para fines ilustrativos y no significan necesariamente que sean los de mayor rendimiento o ideales para este tipo de datos
    • Decision Tree Classifier ('dt')
    • K Neighbors Classifier ('knn')
    • Random Forest Classifier ('rf')
  • Hay 18 clasificadores disponibles en la biblioteca modelos de PyCaret. 
  • Para ver la lista de todos los clasificadores, compruebe la documentación o utilice la función de models() para ver la biblioteca.
  • Fíjese que la puntuación media de todos los modelos coincide con la puntuación impresa en compare_models().
  • Esto se debe a que las métricas impresas en la cuadrícula de puntuación compare_models() son las puntuaciones medias de todos los folds



Afinando (Tunning) el Modelo
  • Cuando se crea un modelo usando la función create_model() se utilizan los hiperparámetros por defecto para entrenar el modelo.
  • Para afinar los hiperparámetros se utiliza la función tune_model(). 
  • Esta función sintoniza automáticamente los hiperparámetros de un modelo utilizando el Random Grid Search en un espacio de búsqueda predefinido
  • La salida imprime una cuadrícula de puntuación que muestra la precisión, AUC, Recall, Precision, F1, Kappa y MCC por Fold para el mejor modelo
  • Para utilizar un search grid personalizado, puede pasar el parámetro custom_grid en la función tune_model 




  • Por defecto, tune_model optimiza el Accuracy pero esto puede ser cambiado usando el parámetro de optimización.
  • Por ejemplo: tune_model(dt, optimize = 'AUC') buscará los hiperparámetros de un Clasificador de Árbol de Decisión que resulte en el AUC más alto en lugar del Accuracy
  • Para los propósitos de este ejemplo, hemos usado la métrica por defecto de Accuracy sólo por razones de simplicidad.
  • Generalmente, cuando el conjunto de datos está inbalanceado (como el conjunto de datos de crédito con el que estamos trabajando) el Accuracy no es una buena métrica a tener en cuenta.
  • La metodología que subyace a la selección de la métrica correcta para evaluar un clasificador está fuera del alcance de este tutorial
  • Las métricas por sí solas no son los únicos criterios que debe considerar al seleccionar el mejor modelo para producción. 
  • Otros factores a considerar incluyen el tiempo de entrenamiento, la desviación estándar de los k-folds, etc. 
  • Por ahora, avancemos considerando el Clasificador de Random Forest tuneado tuned_rf, como nuestro mejor modelo para el resto de este tutorial

Plot Model




  • Antes de finalizar el modelo, la función plot_model() puede ser utilizada para analizar el rendimiento a través de diferentes aspectos tales como AUC, confusion_matrix, decision boundary etc. 
  • Esta función toma un objeto modelo entrenado y devuelve un gráfico basado en el conjunto de test / hold-out set.
  • Hay 15 graficos diferentes disponibles, por favor, consulte la documentación de plot_model() para ver la lista de graficos disponibles










  • Otra forma de analizar el rendimiento de los modelos es utilizar la función evaluate_model() que muestra una interfaz de usuario para todos los gráficos disponibles para un modelo determinado. 

Evaluate Model

  • Otra forma de analizar el rendimiento de los modelos es utilizar la función evaluate_model() que muestra una interfaz de usuario para todos los gráficos disponibles para un modelo determinado. 
  • Internamente utiliza la función plot_model().

Finalize Model

  • La finalización del modelo es el último paso del experimento. 
  • Un flujo de trabajo normal de aprendizaje de máquinas en PyCaret comienza con setup(), seguido de la comparación de todos los modelos utilizando compare_models() y la preselección de algunos modelos candidatos (basados en la métrica de interés) para realizar varias técnicas de modelado, como el ajuste de hiperparámetros, el ensamblaje, el apilamiento, etc.
  • Este flujo de trabajo te llevará finalmente al mejor modelo para su uso en la realización de predicciones sobre datos nuevos y no vistos. 
  • La función finalize_model() ajusta el modelo al conjunto de datos completo, incluyendo la muestra de test (30% en este caso).
  • El propósito de esta función es entrenar al modelo en el conjunto de datos completo antes de que se despliegue en la producción
  • Una última palabra de precaución. Una vez que el modelo se finaliza usando finalize_model(), todo el conjunto de datos, incluyendo el conjunto de test, se utiliza para el entrenamiento
  • Por lo tanto, si el modelo se utiliza para hacer predicciones sobre el conjunto de test después de que se utilice finalize_model(), la cuadrícula de información impresa será engañosa ya que se está intentando hacer predicciones sobre los mismos datos que se utilizaron para el modelado
  • Para demostrar este punto solamente, usaremos final_rf en predict_model() para comparar la cuadrícula de información con la anterior
  • Fíjense en cómo el AUC en final_rf ha aumentado a 0,8222 desde 0,7563, a pesar de que el modelo es el mismo. 
  • Esto se debe a que la variable final_rf ha sido entrenada en el conjunto de datos completo, incluyendo el conjunto de test

“Trabajando el Pipeline de Machine Learning con PyCaret - Parte 3”
– 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
12

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
22

Trabajando el Pipeline de Machine Learning con PyCaret - Parte 1

Dividiremos este video tutorial en 4 pasosParte #1 - Introducción a la librería, dataset a trabajar e importancia en la división de los datosParte ...

Daniel Morales
Por Daniel Morales
Partners

arrow-up icon