Lea la Parte I de esta serie aquí.

En la primera parte de esta serie, hablamos sobre los principios de fklearn y cómo puede resultar útil crear canales de aprendizaje automático utilizando funciones puras. Sin embargo, los beneficios más significativos de usar fklearn se obtienen al realizar análisis y validación de modelos, como veremos a continuación.

Validación Extensible

Para los modelos que entran en producción, la validación a menudo requiere mucho más que simplemente descubrir el valor de alguna métrica en un conjunto de reservas o comparar una métrica con un punto de referencia. A menudo queremos responder preguntas como:

  • ¿Cómo esperamos que funcione el modelo con el tiempo, digamos seis meses después de haber sido entrenado?
  • ¿Más datos ayudarían a mejorar el rendimiento?
  • ¿Con qué frecuencia debo volver a entrenar?
  • ¿Es mejor utilizar más datos o sólo datos recientes?
  • ¿Funciona igualmente bien en todos los segmentos de usuarios?

Todas estas pueden parecer preguntas muy diferentes, pero pueden responderse mediante el mismo algoritmo de validación de modelo generalizado.

Algoritmo de validación generalizado de fklearn: Primero los datos se dividen en fragmentos, se aplica una función de entrenamiento a algún subconjunto de datos, se hacen predicciones en otro subconjunto y luego se aplica una función de evaluación a las predicciones. 

En fklearn, este algoritmo se implementa mediante la función de validación:

La función de validación en fklearn (dentro de fklearn.validation.validator) implementa el algoritmo de validación generalizado que se describe aquí.

  •  train_fn es una función de aprendizaje, exactamente como lo definimos en la última publicación del blog.
  • split_fn controla cómo se dividirán los datos en conjuntos de entrenamiento y prueba. Reciben Marcos de Datos y devuelven listas de índices de capacitación y pruebas.
  • eval_fn define qué métricas se calcularán en los conjuntos de prueba. Más adelante hablaremos más sobre las funciones de evaluación.

El validador devuelve un conjunto de registros que contienen los resultados de todas las evaluaciones realizadas en los conjuntos de prueba. Luego se puede realizar el análisis extrayendo los datos de estos registros (fklearn proporciona funciones auxiliares para hacerlo).

Simplemente intercambiando las funciones de división y evaluación, podemos simular y evaluar muchos escenarios diferentes de la vida real, lo que nos ayuda a responder esas preguntas. 

Veamos un ejemplo, utilizando el alumno que definimos en la Parte 1, en el que intentamos responder estas dos preguntas:

  1. Tenemos dos segmentos de usuarios diferentes, A y B. ¿Qué tan diferente será el rendimiento del modelo entre los dos segmentos?
  2. Esperamos que este modelo siga funcionando durante unos meses después de su entrenamiento. ¿Cuánto esperamos que se degrade el rendimiento del modelo 3, 6 o 9 meses después del entrenamiento?

Un ejemplo completo de formación y evaluación.

Repasemos este ejemplo con más detalle.

Consulte nuestras oportunidades laborales 

Funciones de División

En el ejemplo anterior, después de definir al alumno, definimos dos funciones de división:

  1. Una función de división de validación cruzada K-fold.. Divide los datos aleatoriamente en k conjuntos separados y se utiliza para realizar una validación cruzada estándar. La validación cruzada es útil para obtener una estimación básica del rendimiento de la generalización del modelo, al mismo tiempo que se entrena.
  2. Una función de división de validación de estabilidad. Funciona dividiendo los datos según el parámetro time_column. El modelo se entrenará utilizando datos hasta el training_time_limit y se validará en la división de datos mensualmente después de esa fecha. La evaluación de la estabilidad es útil para estimar cómo se generalizará el modelo en el tiempo, más allá del período de entrenamiento.

Fklearn viene preempaquetado con muchas funciones de división para casos de uso comunes (puede encontrar una lista completa y descripciones de cuándo son útiles aquí). La mayoría de los divisores están diseñados para simular situaciones de la vida real, donde normalmente los modelos se entrenan con datos de un período de tiempo pero se aplican en el futuro. La validación cruzada simple suele ser insuficiente para modelos reales.

Evaluación Personalizable

Esto surge a menudo en la evaluación de modelos: las métricas globales únicas a menudo no cuentan la historia completa. Es posible que deseemos aislar los efectos del ordenamiento de los modelos y la calibración del modelo o analizar el desempeño en subgrupos específicos de nuestra población. También podríamos estar interesados en la evolución de una métrica particular, en lugar de simplemente una estimación puntual.

Para ello, necesitamos evaluar simultáneamente múltiples métricas, divididas en dimensiones (por ejemplo, tiempo, segmento de clientes). Fklearn permite esto al permitirnos definir árboles de evaluación, combinando funciones de evaluación individuales. Volviendo a nuestro ejemplo, así es como definimos la función de evaluación:

Ejemplo de definición de un árbol de evaluación.

Este fragmento de código conduce al árbol de evaluación que se muestra a continuación:

Representación de árbol de la función de evaluación definida anteriormente.

Una vez que se aplica final_eval_fn a los datos, se ejecuta todo el árbol de evaluadores y todos los resultados se devuelven en el registro. Esto significa que tanto r2 como la correlación de Spearman se calcularán primero para todos y luego por separado para cada segmento de usuarios. Estos árboles de evaluación pueden ser muy poderosos y permiten a los científicos de datos automatizar análisis recurrentes.

Analizando Resultados

Como habrás notado, la mayoría de las operaciones en fklearn devuelven registros. Estos registros concentran información valiosa, ya sean parámetros del modelo, metadatos del conjunto de datos o resultados de validación. Fklearn puede ser muy detallado con el registro, ya que nos hemos arrepentido de no haber guardado información con frecuencia.

Fklearn también proporciona funciones útiles para extraer datos de estos registros (pueden llegar a ser bastante grandes) y es fácil crear gráficos de evaluación utilizando solo los registros. Esto nos permite construir un código de evaluación genérico que recibe registros de ejecuciones de entrenamiento y genera paneles con el rendimiento del modelo, acelerando el proceso de iteración. A continuación se muestra un ejemplo de extracción de datos de los registros:

Ejemplo de uso de extractores de fklearn para obtener resultados de registros.

Gráfico de la curva de estabilidad de la muestra, después de extraer los datos de los registros. Muestra el rendimiento del modelo (correlación de Spearman entre predicción y objetivo) a lo largo del tiempo, dividido por segmento. También sería posible trazar R2 a partir de los mismos datos.

Felicidad Funcional

Como nota final sobre la validación, observe que el alumno que definimos se utilizará una y otra vez dentro de estas llamadas de validador, entrenando varios modelos. Tenemos la tranquilidad de saber que es una función pura, por lo que nada de lo que sucede dentro de la validación puede cambiar la definición de nuestro modelo, y que, al validar nuestro modelo, todos los pasos de nuestra canalización se aplican de manera consistente a todos los pliegues de datos. En última instancia, esto significa que nuestro modelo final, que pasa a producción, coincide con precisión con los modelos que pasan por todos estos escenarios de validación.

Lo mismo ocurre con el ajuste o la selección de funciones. Para ambos, fklearn proporciona funciones que son similares en espíritu al validador: usted define cómo dividir los datos, cómo evaluar el rendimiento del modelo y reutilizar su función de aprendizaje.

¿Qué sigue?

Esta publicación concluye nuestra breve introducción a fklearn. Para obtener más ejemplos de las capacidades de validación de modelos de fklearn y otras herramientas poderosas, consulte la documentación aquí. También esperamos que esto le entusiasme al probar fklearn usted mismo.

Consulte nuestras oportunidades laborales 

Descubre las oportunidades