Trabajando el Pipeline de Machine Learning con PyCaret - Parte 2

Daniel Morales
Por Daniel Morales - Screencast # 6
Nov 03, 2020


Puedes acceder a la Parte#1 de Trabajando el Pipeline de Machine Learning con PyCaret aqui:

Entorno de PyCaret

  • Ahora vamos a configurar el ambiente de Pycaret
  • La función setup() inicializa el entorno en pycaret y crea la tubería de transformación para preparar los datos para el modelado y el despliegue
  • setup() debe ser llamada antes de ejecutar cualquier otra función en pycaret. 
  • Toma dos parámetros obligatorios: un dataframe de pandas y el nombre de la columna de destino
  • Todos los demás parámetros son opcionales y se utilizan para personalizar la tubería de preprocesamiento
  • La mayor parte de esta parte de la configuración se hace automáticamente, pero se pueden establecer manualmente algunos parámetros. Por ejemplo:
    • La proporción de división por defecto es 70:30, pero puede ser cambiada con "train_size"
    • La validación cruzada K-fold se establece en 10 por defecto
    • "session_id" es nuestro clásico "random_state"
  • Cuando se ejecuta setup(), el algoritmo de inferencia de PyCaret deducirá automáticamente los tipos de datos de todas las características en función de determinadas propiedades.
  • El tipo de datos debe ser inferido correctamente pero no siempre es así. 
  • Para tener esto en cuenta, PyCaret muestra una tabla que contiene las características y sus tipos de datos inferidos después de que se ejecuta setup().
  • Si todos los tipos de datos se identifican correctamente, se puede pulsar enter para continuar o salir para terminar el experimento
  • Asegurarse de que los tipos de datos son correctos es de fundamental importancia en PyCaret, ya que realiza automáticamente algunas tareas de preprocesamiento que son imprescindibles para cualquier experimento de ML
  • Estas tareas se realizan de forma diferente para cada tipo de datos, lo que significa que es muy importante que estén correctamente configurados.
  • Podriamos sobreescribir el tipo de datos inferidos de PyCaret utilizando los parámetros numeric_features y categorical_features en setup().
  • Una vez que la configuración se ha ejecutado con éxito, se imprime la cuadrícula de información que contiene varias piezas importantes de información
  • La mayor parte de la información está relacionada con la tubería de preprocesamiento que se construye cuando se ejecuta setup()
  • La mayoría de estas características están fuera de alcance para los propósitos de este tutorial, sin embargo, algunas cosas importantes a tener en cuenta en esta etapa incluyen:
    • session_id : Un número pseduo-aleatorio distribuido como semilla en todas las funciones para su posterior reproducibilidad. 
    • Tipo de objetivo : Binario o Multiclase. El tipo de objetivo se detecta y muestra automáticamente.
    • Etiqueta codificada : Cuando la variable Objetivo es de tipo string (es decir, 'Sí' o 'No') en lugar de 1 o 0, automáticamente codifica la etiqueta en 1 y 0 y muestra el mapeo (0 : No, 1 : Sí) como referencia
    • Datos originales : Muestra la forma original del conjunto de datos. En este experimento (22800, 24)
    • Valores perdidos : Cuando hay valores faltantes en los datos originales esto se mostrará como Verdadero
    • Características numéricas : El número de características inferidas como numéricas. 
    • Rasgos categóricos : El número de características inferidas como categóricas
    • Train set transformados: Observe que la forma original de (22800, 24) se transforma en (15959, 91) para el train set transformados y el número de features ha aumentado de 24 a 91 debido a la codificación categórica
    • Conjunto de test Transformadas: Hay 6.841 muestras en el conjunto de test. Esta división se basa en el valor por defecto de 70/30 que puede ser cambiado usando el parámetro train_size en la configuración.
  • Obsérvese cómo algunas tareas que son imperativas para realizar la modelización se manejan automáticamente, como la imputación de valores perdidos (en este caso no hay valores perdidos en los datos de entrenamiento, pero aún necesitamos imputadores para los datos no vistos), la codificación categórica, etc
  • La mayoría de los parámetros de setup() son opcionales y se utilizan para personalizar la tubería de preprocesamiento. 

compare_models()



  • La comparación de todos los modelos para evaluar el rendimiento es el punto de partida recomendado para el modelado una vez que se ha completado la configuración (a menos que se sepa exactamente qué tipo de modelo se necesita, lo que a menudo no es el caso)
  • Esta función entrena a todos los modelos de la biblioteca de modelos y los califica utilizando una validación cruzada estratificada para la evaluación de la métrica.
  • La salida imprime una cuadrícula de puntaje que muestra el promedio del Accuracy, AUC, Recall, Precision, F1, Kappa, y MCC a través de los fold (10 por defecto) junto con los tiempos de entrenamiento
  • La función compare_models() permite comparar muchos modelos a la vez. 
  • Para mí, esta es una de las grandes ventajas de usar PyCaret. 
  • En una sola línea, tienes una tabla de comparación entre muchos modelos.
  • Dos simples palabras de código (ni siquiera una línea) han entrenado y evaluado más de 15 modelos utilizando la validación cruzada
  • La tabla de puntuación impresa arriba destaca la métrica de mayor rendimiento sólo con fines de comparación.
  • La cuadrícula por defecto se ordena usando "Accuracy" (de mayor a menor) que puede ser cambiada al pasar el parámetro de ordenación
  • Por ejemplo, compare_models(sort = 'Recall') ordenará la cuadrícula por Recall en lugar de por Accuracy.
  • Si desea cambiar el parámetro Fold del valor predeterminado de 10 a un valor diferente, puede utilizar el parámetro fold.
  • Por ejemplo compare_models(fold = 5) comparará todos los modelos en una validación cruzada de 5 veces.
  • Reducir el número de folds mejorará el tiempo de entrenamiento
  • Por defecto, compare_models devuelve el modelo de mejor rendimiento basado en el orden de clasificación predeterminado, pero puede utilizarse para devolver una lista de los N modelos principales utilizando el parámetro n_select.
  • Además, devuelve algunas métricas como la precisión, AUC y F1. 
  • Otra cosa genial es cómo la biblioteca resalta automáticamente los mejores resultados.
  • Una vez que elijas tu modelo, puedes crearlo y luego afinarlo. 
N-Fold

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

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