Esta publicación fue revisada por: Luis Moneda, Gabriela Mourao y Cristiano Breuel.


Los modelos de aprendizaje automático (ML) son piezas de software muy sensibles; su uso exitoso necesita un seguimiento cuidadoso para garantizar que funcionan correctamente.

Esto es especialmente cierto cuando las decisiones comerciales se toman automáticamente utilizando los resultados de dichos modelos. Esto significa que los modelos defectuosos muy a menudo tendrán un impacto real en la experiencia del cliente final.

Los modelos son tan buenos como los datos que consumen, por lo que monitorear los datos de entrada (y los resultados) es crítico para que el modelo cumpla su objetivo real: ser útil para impulsar buenas decisiones y ayudar a la empresa a alcanzar sus objetivos.

A continuación se incluyen un par de consejos prácticos e independientes del marco que puedes utilizar para tener una estrategia de monitoreo más sólida al utilizar modelos de aprendizaje automático en producción.

(Muchos consejos se superponen entre sí; esto se debe a que se supone que deben usarse como parte de una estrategia integrada, no como soluciones únicas)

Los promedios no cuentan la historia completa

Descubre las oportunidades

Contexto 

Tu monitoreas los valores promedio de las características numéricas en los modelos que utilizas. Haces esto porque deseas detectar problemas de datos, comprender cuándo y si las distribuciones de características y etiquetas cambian, etc.

Afirmación

El monitoreo del valor promedio no te cuenta la historia completa porque implica un par de suposiciones que no necesariamente coinciden con la realidad. Por ejemplo: 

  • Si faltan datos, la mayoría de las herramientas numéricas los ignoran y calculan promedios para los datos restantes (no nulos);
  • Se supone que los problemas de datos serán lo suficientemente grandes como para mover significativamente el valor promedio. Alternativamente, también puede darse el caso de que los cambios en las características muevan mucho los promedios pero no afecten a los percentiles más altos, que es a menudo donde se toman las decisiones sobre el modelo.
  • Se supone que los cambios en las puntuaciones del modelo tienen una relación lineal con las acciones basadas en ellas.

En resumen, puede haber un problema que afecte tus datos de manera grave, pero es posible que los valores promedio de las funciones no se muevan en absoluto, por lo que debes incluir otros ángulos además de este.

Sugerencias 

  • Monitorea los percentiles de valores de características numéricas, p. Percentiles 99, 95, 90 y 10, 5, 1 también. De esta manera puedes detectar casos en los que los ejemplos de cola cambian incluso cuando el valor promedio de la característica no cambió. Esto es especialmente útil en casos en los que la distribución de datos está sesgada o desequilibrada.
  • Monitorea la tasa de valores faltantes para todas las funciones. Esto debe monitorearse por separado porque un gran porcentaje de valores faltantes es un gran problema, incluso cuando la media de los valores no perdidos no ha cambiado mucho.
  • Divide el seguimiento en subpoblaciones para detectar problemas que solo afecten a un subconjunto del total de ejemplos puntuados.

Las Capas de Políticas/Decisiones requieren monitoreo adicional

Contexto

El modelo se utiliza para tomar decisiones (denegar/aprobar préstamos, mostrar/no mostrar un anuncio, etc.) utilizando algún tipo de política

Tu monitoreas los modelos desde una perspectiva técnica (valores de características, precisión, exactitud, etc.) pero no es obvio qué decisiones se toman a partir de eso (esta es la capa de política/decisión).

Afirmación

No basta con monitorear los modelos desde una perspectiva técnica porque esto no deja claro a otras partes interesadas cómo se está viendo afectado el negocio

También debes monitorear las decisiones tomadas utilizando el modelo para asegurarte de que el modelo entregue el valor comercial esperado.

Sugerencias

  • Monitorear las decisiones tomadas utilizando el modeloPor ejemplo: ¿cuántas personas obtuvieron préstamos aprobados por el modelo de riesgo cada día? ¿A cuántas personas se les bloquearon las cuentas mediante el modelo de fraude cada día? A menudo es útil monitorear tanto los valores absolutos como los relativos.
  • Ten cuidado al ajustar el nivel de granularidad según el público objetivo: si tu modelo califica a un cliente determinado varias veces, tu público objetivo puede estar más interesado en las métricas agregadas por los clientes que en las entidades individuales calificadas.
  • Si estás ejecutando un modelo en tiempo real, ¿cuántas decisiones equivocadas se tomaron debido a discrepancias en el sesgo de entrenamiento/servicio? También deberías controlar esto.

Divide el monitoreo en subpoblaciones para obtener mejores conocimientos

Contexto

Tú eres responsable de mantener los modelos de aprendizaje automático más utilizados que se emplean para calificar muchos ejemplos individuales diariamente. 

Tú monitoreas características/puntuaciones a través de paneles y hay varios patrones interesantes que deseas investigar, pero generalmente lleva mucho tiempo rastrear las razones de estos problemas.

Afirmación

Una forma de facilitar la comprensión de los datos y/o los problemas del modelo es dividir los datos de monitoreo en subpoblaciones (subconjuntos de datos que el modelo califica) y monitorearlos por separado.

La razón de esto es que muchos problemas de datos tienen un impacto crítico en algunos subconjuntos de ejemplos, pero pueden “desaparecer” porque su impacto absoluto no es suficiente para sentirse cuando se observan los valores agregados en todo el conjunto de datos.

Sugerencias

  • En lugar de observar valores agregados de características/puntuaciones para conjuntos de datos completos, divídelos en subpoblaciones y monitorealas.
    • Por ejemplo: si tienes un modelo de fraude, puede que valga la pena dividir el monitoreo por el tipo de dispositivo (web, móvil, etc.) utilizado en cada ejemplo puntuado.
  • También supervisa los recuentos brutos de poblaciones separadas (cuántos ejemplos de cada una se calificaron cada día, cuál fue el porcentaje, etc.)

La codificación de funciones adecuada facilita el seguimiento

Contexto

Las características utilizadas en los modelos a menudo se preprocesan o codifican para permitir su uso en algunos clasificadores. 

A veces, esto es un problema porque es difícil monitorear visualmente o mediante programación, características complejas y cuidadosamente diseñadas que no son inmediatamente obvias a primera vista.

Afirmación

Al codificar (o decodificar) las funciones con cuidado, puedes facilitar el seguimiento. Esto se debe a que la mayoría de los marcos de seguimiento son más adecuados para valores numéricos y valores categóricos. Si utilizas diferentes tipos de funciones (por ejemplo, incrustaciones de palabras, coordenadas de geolocalización), es posible que desees decodificarlas (por ejemplo, en cadenas y nombres de ciudades, respectivamente) para poder analizarlas más fácilmente en informes y gráficos.

Además, probablemente quieras monitorear los valores originales (no preprocesados, no codificados), porque esto facilita la comunicación con otros equipos y la solución de problemas cuando surgen.

Sugerencias

  • Monitorea los valores de entrada (es decir, no necesariamente las funciones en sí, sino la información utilizada para crear funciones) además de las funciones en sí. Esto es útil cuando les aplicas varias transformaciones numéricas.
  • Siempre que sea posible, codifica los valores de características booleanas como flotantes (1.0, 0.0 y nulo), para que sea más fácil monitorearlos como una variable numérica normal (extraer medias y otras propiedades numéricas, etc.) y reutilizar todas las herramientas (por ejemplo, gráficos) creadas para esos .
  • Para las funciones categóricas codificadas con estrategias como la codificación one-hot o la codificación de destino, probablemente quieras volver a decodificarlas a sus valores originales para poder monitorear las clases reales, no las categorías codificadas.

La consistencia reduce la carga mental del monitoreo

Contexto

Tú eres responsable de mantener/operar uno o más modelos de aprendizaje automático, cada uno de los cuales tiene varias características, se utiliza de distintas maneras, etc. 

Se están generando varios paneles e informes, pero el gran esfuerzo requerido para revisarlos es demasiado alto y lleva mucho tiempo.

Afirmación

Es posible reducir la carga cognitiva y el tiempo necesario para revisar paneles e informes de seguimiento. 

Una forma de hacerlo es promover la consistencia y la estandarización, de modo que los costos de cambio de contexto se minimicen y su equipo pueda ser más eficiente y efectivo.

Sugerencias

  • Utiliza una única herramienta para monitorear todo; si es posible, usa una única herramienta/proveedor para monitorear todos los modelos. Esto facilita compartir patrones de configuración y uso entre varios modelos.
  • Ordena las cosas de manera consistente. Por ejemplo: ordena los gráficos de características según la importancia de la característica para que puedas ver rápidamente si hay problemas graves que necesitas investigar (o simplemente ordenarlos alfabéticamente)
  • Nombra las cosas consistentemente: si necesitas nombrar cosas como archivos, conjuntos de datos, paneles, tablas, etc., asegúrate de seguir algún tipo de patrón (como <nombre-equipo>-<nombre-modelo>-<fecha>) para que sea más fácil automatizar y configurar para todo el equipo.

Monitorea trabajos/rutinas de monitoreo en sí (meta-monitoreo)

Contexto

Utiliza rutinas auxiliares, trabajos por lotes o scripts ad hoc para procesar los datos de registro del modelo. Estas rutinas se utilizan para analizar las características y puntuaciones del modelo y generar valores agregados. También utiliza estas herramientas para generar alertas bajo determinadas condiciones.

Afirmación

Los trabajos por lotes/rutinas de monitoreo de modelos son solo otra pieza de software y, por lo general, dejan de funcionar de vez en cuando (alguien cambió el nombre de una tabla y el script se rompe, sus credenciales expiraron, etc.). 

Si cuentas con trabajos/rutinas/scripts de monitoreo para ejecutarse y señalar condiciones problemáticas, la ausencia de alertas puede llevarte a pensar que todo está bien cuando en realidad los trabajos de monitoreo simplemente no se ejecutaron o hubo algún problema con ellos. 

Debes monitorear los propios trabajos de monitoreo para protegerte contra esto (metasupervisión).

Sugerencias

  • Monitorea los tiempos de ejecución del trabajo. Los tiempos de ejecución en constante aumento pueden indicar que pronto tendrás que cambiar de estrategia. Los tiempos de ejecución demasiado cortos pueden indicar que hubo algún otro problema en el trabajo.
  • Utiliza alertas de estilo latido. Puedes agregar un paso al final de cada trabajo/script para enviar un ping a algún otro sistema. Las alertas de latido se activan cuando algo no ha sucedido, por ejemplo, si el backend no ha recibido un ping durante más de 24 horas.

Patrones para el seguimiento de lotes

Contexto

Tienes trabajos por lotes que analizan los datos de registro del modelo y calculan los agregados de ellos (valor promedio de las características cada día, puntajes promedio, etc.), pero alguien necesita ver los datos para ver si todo está bien. 

Afirmación

Es fácil crear informes de seguimiento que se ignoran porque nadie ha tenido tiempo de ir activamente al panel/cuadernos y ver los resultados. A continuación se muestran algunas formas de hacerlos más útiles y eficientes.

Sugerencias

  • Haz que los trabajos envíenactívamente los resultados (gráficos, tablas, etc.) como un mensaje a tu correo electrónico o canal de Slack al final de cada ejecución. En el cuerpo del mensaje, incluye solo la información más importante.
    • La idea aquí es tener suficiente información para que puedas ver rápidamente si hay algún problema.
    • En el cuerpo del mensaje, agrega un enlace al panel completo o a los datos del informe para que las personas puedan verlo completo si lo necesitan.
  • Escribe código que pueda manejar datos históricos de forma predeterminada: esto facilita la reutilización del código tanto para el análisis histórico como para el monitoreo incremental (por ejemplo, diario).
  • Utiliza lenguaje empresarial siempre que sea posible para que todas las partes interesadas (no solo los técnicos) puedan comprender el impacto de los modelos en las decisiones empresariales.

Sólo modelos en tiempo real: Monitoreo de Sesgo de Entrenamiento/Entrega

Contexto

Los modelos utilizados para hacer inferencias en tiempo real generalmente se entrenan a partir de datos históricos recuperados de una base de datos, por lotes. 

Esto crea el riesgo de que la ruta de datos utilizada para el entrenamiento no coincida exactamente con la ruta de datos utilizada para la inferencia (normalmente llamadas HTTP a servicios externos para obtener funciones). Esto se llama sesgo de entrenamiento/entrega.

Afirmación

Sesgo de entrenamiento/entrega es un riesgo importante que debes considerar al implementar modelos en tiempo real.. Esto debe ser monitoreado continuamente, mientras el modelo esté en uso. 

Las causas más comunes de discrepancias aquí son cambios en los servicios externos de los que depende el modelo para recuperar datos de características en tiempo real.

Sugerencias

  • Monitorea la tasa de coincidencias exactas entre flujos por lotes/en tiempo real (es decir, puede tener un 1 si hubo una coincidencia exacta entre ambos flujos y 0 si no hubo una coincidencia exacta) y monitorea este del mismo modo que monitoreas otras funciones. De esta manera puedes ver cuánto sesgo tienes por característica.
  • Monitorea la magnitud de las desviaciones: en los casos en los que hubo una discrepancia entre las rutas de datos por lotes y en tiempo real, ¿qué tan grave fue? ¿Fue sólo una pequeña diferencia o una gran diferencia?
  • Monitorea también los recuentos: monitorea cuántos ejemplos había en cada ruta de datos para un día determinado. Esto es importante porque los cambios desconocidos pueden hacer que los modelos en tiempo real califiquen más ejemplos de los que esperaba. 

Sólo modelos en tiempo real: Patrones de alerta

Ahora tenemos una publicación dedicada a este tema: Mejores Prácticas para el Aprendizaje Automático en tiempo Real: Alertas

Contexto

Has creado algunas alertas en tiempo real (correos electrónicos, mensajes flojos, notificaciones push móviles, etc.) para avisarte cuando el modelo se comporta de manera inesperada, como valores de características extraños, características faltantes, puntuaciones demasiado altas o demasiado bajas, etc.

Afirmación

Es bastante fácil terminar con alertas que son demasiado ruidosas (se activan muy a menudo y la gente ya no las toma en serio) o nada sensibles (nunca se activan, incluso cuando deberían).

Debes intentar que las alertas sean relevantes y fáciles de actuar (incluye suficiente información para que las personas puedan saber rápidamente si la alerta indica un problema real).

Sugerencias

  • Ten cuidado con los períodos de tiempo extraños, como temprano en la mañana, los fines de semana, etc. Dado que estos son momentos en los que puede obtener muchos menos ejemplos calificados por los modelos, las alertas pueden activarse por la sencilla razón de que el tamaño de tu muestra es demasiado pequeño.
  • Incluye siempre el período de tiempo los puntos de datos específicos utilizados para la alerta para permitir que las personas evalúen si se trata de un falso positivo o no: Mal: “La característica X en el modelo Y es demasiado alta”. Bien: “El valor promedio de la Característica X en el modelo Y durante los últimos 15 minutos fue demasiado alto (se esperaba entre 0.4 y 0.5, pero en su lugar obtuvo 100.0)”.
  • Si es posible, incluye un enlace al panel completo o algún lugar donde puedas ver datos más completos y decidir si debes investigarlos más a fondo.
  • Si es posible, ten a mano algún tipo de guía de solución de problemas para que los nuevos miembros del equipo puedan actuar fácilmente ante las alertas.

Conclusión

Estos son un par de consejos que consideramos útiles para monitorear varios modelos de ML aquí en Nubank. 

Se utilizan en una variedad de contextos comerciales (crédito, fraude, CX, operaciones, etc.) y creemos que son lo suficientemente generales como para ser aplicables también en otras empresas.

Descubre las oportunidades