fue escrito en coautoría por Sebastian Humberg y Morris Stallmann.
Introducción
Los modelos de aprendizaje automático (ML) están diseñados para realizar predicciones precisas basadas en patrones en datos históricos. Pero ¿qué pasa si estos patrones cambian de la noche a la mañana? Por ejemplo, en la detección de fraudes con tarjetas de crédito, los patrones de transacciones legítimas de hoy podrían parecer sospechosos mañana a medida que los delincuentes evolucionen sus tácticas y los clientes honestos cambien sus hábitos. O imagine un sistema de recomendación de comercio electrónico: lo que funcionó para los compradores de verano puede fracasar repentinamente a medida que las vacaciones de invierno arrasan con nuevas tendencias. Este cambio de datos sutil, pero implacable, conocido como deriva, puede erosionar silenciosamente el rendimiento de su modelo, convirtiendo las predicciones precisas de ayer en los costosos errores de hoy.
En este artículo, sentaremos las bases para comprender la deriva: qué es, por qué es importante y cómo puede aparecer incluso en los mejores sistemas de aprendizaje automático. Desglosaremos los dos tipos principales de deriva: deriva de datos y deriva de conceptos. Luego, pasamos de la teoría a la práctica delineando marcos sólidos y herramientas estadísticas para detectar la deriva antes de que descarrile sus modelos. Finalmente, podrá echar un vistazo a qué hacer contra la deriva, para que sus sistemas de aprendizaje automático sigan siendo resistentes en un mundo en constante evolución.
¿Qué es la deriva?
La deriva se refiere a cambios inesperados en la distribución de datos a lo largo del tiempo, que pueden afectar negativamente el rendimiento de los modelos predictivos. Los modelos de ML resuelven tareas de predicción aplicando patrones que el modelo aprendió de datos históricos. Más formalmente, en ML supervisado, el modelo aprende una distribución conjunta de algún conjunto de vectores de características X y valores objetivo y de todos los datos disponibles en el momento t0:
[P_{t_{0}}(X, y) = P_{t_{0}}(X) times P_{t_{0}}(y|X)]
Después del entrenamiento y la implementación, el modelo se aplicará a los nuevos datos Xt para predecir yt bajo el supuesto de que los nuevos datos siguen la misma distribución conjunta. Sin embargo, si se viola esa suposición, es posible que las predicciones del modelo ya no sean confiables, ya que los patrones en los datos de entrenamiento pueden haberse vuelto irrelevantes. La violación de ese supuesto, es decir, el cambio de la distribución conjunta, se denomina deriva. Formalmente decimos que se ha producido deriva si:
[P_{t_0} (X,y) ne P_{t}(X,y).]
para algunos t>t0.
Los principales tipos de deriva: deriva de datos y deriva de conceptos
Generalmente, la deriva ocurre cuando la probabilidad conjunta P(X, y) cambia con el tiempo. Pero si miramos más de cerca, notamos que hay diferentes fuentes de deriva con diferentes implicaciones para el sistema ML. En esta sección, presentamos las nociones de deriva de datos y deriva de conceptos.
Recuerde que la probabilidad conjunta se puede descomponer de la siguiente manera:
[P(X,y) = P(X) times P(y|X).]
Dependiendo de qué parte de la distribución conjunta cambie, hablamos de deriva de datos o deriva de conceptos.
Deriva de datos
Si la distribución de las características cambia, entonces hablamos de deriva de datos:
[ P_{t_0}(X) ne P_{t}(X), t_0 > t. ]
Tenga en cuenta que la deriva de datos no significa necesariamente que la relación entre los valores objetivo y y las características X haya cambiado. Por lo tanto, es posible que el modelo de aprendizaje automático siga funcionando de manera confiable incluso después de que se produzca una desviación de datos.
Sin embargo, en general, la desviación de los datos suele coincidir con la desviación del concepto y puede ser un buen indicador temprano de la degradación del rendimiento del modelo. Especialmente en escenarios donde las etiquetas de verdad sobre el terreno no están disponibles (inmediatamente), la detección de la deriva de datos puede ser un componente importante de un sistema de advertencia de deriva. Por ejemplo, pensemos en la pandemia de COVID-19, donde la distribución de los datos de entrada de los pacientes, como los síntomas, cambió para los modelos que intentaban predecir resultados clínicos. Este cambio en los resultados clínicos fue una deriva conceptual y sólo sería observable después de un tiempo. Para evitar un tratamiento incorrecto basado en predicciones de modelos obsoletos, es importante detectar y señalar la desviación de los datos que se pueda observar de inmediato.
Además, la deriva también puede ocurrir en sistemas ML no supervisados donde los valores objetivo y no son de ningún interés. En estos sistemas no supervisados, sólo se define la deriva de datos.
Deriva del concepto
La deriva del concepto es el cambio en la relación entre los valores objetivo y las características a lo largo del tiempo:
[P_{t_0}(y|X) ne P_{t}(y|X), t_0 > t.]
Por lo general, el rendimiento se ve afectado negativamente si se produce una desviación de conceptos.
En la práctica, la etiqueta de verdad fundamental y a menudo sólo está disponible con retraso (o no está disponible en absoluto). Por lo tanto, observar Pt(y|X) también puede ser posible sólo con un retraso. Por lo tanto, en muchos escenarios, detectar la desviación de conceptos de manera oportuna y confiable puede ser mucho más complicado o incluso imposible. En tales casos, es posible que debamos confiar en la deriva de los datos como indicador de la deriva del concepto.
Cómo la deriva puede evolucionar con el tiempo
La deriva de conceptos y datos puede adoptar diferentes formas, y estas formas pueden tener distintas implicaciones para la detección de la deriva y las estrategias de manejo de la misma.
La deriva puede ocurrir repentinamente con cambios abruptos en la distribución. Por ejemplo, el comportamiento de compra puede cambiar de la noche a la mañana con la introducción de un nuevo producto o promoción.
En otros casos, la deriva puede ocurrir de manera más gradual o incremental durante un período de tiempo más largo. Por ejemplo, si una plataforma digital introduce una nueva característica, esto puede afectar el comportamiento del usuario en esa plataforma. Si bien al principio solo unos pocos usuarios adoptaron la nueva función, es posible que cada vez más usuarios la adopten a largo plazo. Por último, la deriva puede ser recurrente y estar impulsada por la estacionalidad. Imagínese una empresa de ropa. Si bien en verano los productos más vendidos de la compañía pueden ser camisetas y pantalones cortos, es poco probable que se vendan igual de bien en invierno, cuando los clientes pueden estar más interesados en abrigos y otras prendas más abrigadas.
Cómo identificar la deriva
Antes de poder manejar la deriva, es necesario detectarla. Para analizar la detección de deriva de manera efectiva, presentamos un marco mental tomado de la excelente lectura "Aprendizaje bajo la deriva de conceptos: una revisión" (consulte la lista de referencias). Un marco de detección de deriva se puede describir en tres etapas:
Recopilación y modelado de datos: la lógica de recuperación de datos especifica los datos y los períodos de tiempo que se compararán. Además, los datos se preparan para los siguientes pasos aplicando un modelo de datos. Este modelo podría ser un modelo de aprendizaje automático, histogramas o incluso ningún modelo. Veremos ejemplos en apartados siguientes. Cálculo de la estadística de prueba: la estadística de prueba define cómo medimos la (des)similitud entre datos históricos y nuevos. Por ejemplo, comparando el rendimiento del modelo con datos históricos y nuevos, o midiendo qué tan diferentes son los histogramas de los fragmentos de datos. Prueba de hipótesis: finalmente, aplicamos una prueba de hipótesis para decidir si queremos que el sistema indique una deriva. Formulamos una hipótesis nula y un criterio de decisión (como definir un valor p).
Recopilación y modelado de datos
En esta etapa, definimos exactamente qué fragmentos de datos se compararán en los pasos siguientes. Primero, es necesario definir las ventanas de tiempo de nuestros datos de referencia y comparación (es decir, nuevos). Los datos de referencia podrían ser estrictamente los datos de entrenamiento históricos (consulte la figura a continuación) o cambiar con el tiempo según lo definido por una ventana deslizante. De manera similar, los datos de comparación pueden ser estrictamente los lotes de datos más recientes o pueden extender los datos históricos a lo largo del tiempo, donde ambas ventanas de tiempo pueden ser deslizantes.
Una vez que los datos estén disponibles, es necesario prepararlos para el cálculo de la estadística de prueba. Dependiendo de la estadística, es posible que sea necesario alimentarla a través de un modelo de aprendizaje automático (por ejemplo, al calcular métricas de rendimiento), transformarla en histogramas o no procesarla en absoluto.
Métodos de detección de deriva
Se puede identificar la deriva aplicando ciertos métodos de detección. Estos métodos monitorean el rendimiento de un modelo (detección de deriva de conceptos) o analizan directamente los datos entrantes (detección de deriva de datos). Al aplicar varias pruebas estadísticas o monitorear métricas, los métodos de detección de deriva ayudan a mantener la confiabilidad de su modelo. Ya sea a través de enfoques simples basados en umbrales o técnicas avanzadas, estos métodos garantizan la solidez y adaptabilidad de su sistema de aprendizaje automático.
Observación de la deriva de conceptos a través de métricas de rendimiento
La forma más directa de detectar la deriva del concepto (o sus consecuencias) es realizar un seguimiento del desempeño del modelo a lo largo del tiempo. Dadas dos ventanas de tiempo [t0, t1] y [t2, t3], calculamos el rendimiento p[t0, t1] y p[t2, t3]. Entonces, el estadístico de prueba se puede definir como la diferencia (o disimilitud) de desempeño:
[dis = |p_{[t_0, t_1]} – p_{[t_2, t_3]}|.]
El rendimiento puede ser cualquier métrica de interés, como exactitud, precisión, recuperación, puntuación F1 (en tareas de clasificación) o error cuadrático medio, error porcentual absoluto medio, R cuadrado, etc. (en problemas de regresión).
El cálculo de las métricas de rendimiento a menudo requiere etiquetas reales que pueden estar disponibles solo con un retraso o que nunca estarán disponibles.
Para detectar la desviación de manera oportuna, incluso en tales casos, a veces se pueden derivar métricas de rendimiento del proxy. Por ejemplo, en un sistema de detección de spam, es posible que nunca sepamos si un correo electrónico es realmente spam o no, por lo que no podemos calcular la precisión del modelo con datos reales. Sin embargo, es posible que podamos observar una métrica de proxy: el porcentaje de correos electrónicos que se movieron a la carpeta de spam. Si la tasa cambia significativamente con el tiempo, esto podría indicar una desviación del concepto.
Si dichas métricas de proxy tampoco están disponibles, podemos basar el marco de detección en métricas basadas en la distribución de datos, que presentamos en la siguiente sección.
Métodos basados en la distribución de datos
Los métodos de esta categoría cuantifican cuán diferentes son las distribuciones de datos de los datos de referencia X[t0,t1] y los nuevos datos X[t2,t3] sin requerir etiquetas de verdad sobre el terreno.
¿Cómo se puede cuantificar la disimilitud entre dos distribuciones? En las siguientes subsecciones, presentaremos algunas métricas univariadas y multivariadas populares.
Métricas univariadas
Comencemos con un enfoque univariado muy simple:
Primero, calcule las medias de la i-ésima característica en la referencia y los nuevos datos. Luego, defina las diferencias de medias como la medida de disimilitud
[dis_i = |media_{i}^{[t_0,t_1]} – media_{i}^{[t_2,t_3]}|. ]
Finalmente, la señal se desvía si disi es inesperadamente grande. Señalamos una deriva cada vez que observamos un cambio inesperado en la media de una característica a lo largo del tiempo. Otras estadísticas simples similares incluyen el mínimo, el máximo, los cuantiles y la proporción de valores nulos en una columna. Son fáciles de calcular y son un excelente punto de partida para construir sistemas de detección de deriva.
Sin embargo, estos enfoques pueden ser demasiado simplistas. Por ejemplo, al calcular la media se omiten los cambios en los extremos de la distribución, al igual que otras estadísticas simples. Es por eso que necesitamos métodos de detección de desviación de datos un poco más complicados.
Prueba Kolmogorov-Smirnov (KS)
Otro método univariado popular es la prueba de Kolmogorov-Smirnov (KS). La prueba KS examina la distribución completa de una sola característica y calcula la función de distribución acumulativa (CDF) de X(i)[t0,t1] y X(i)[t2,t3]. Luego, el estadístico de prueba se calcula como la diferencia máxima entre las dos distribuciones:
[ dis_i = sup |CDF(X(i)_{[t_0,t_1]})-CDF(X(i)_{[t_2,t_3]})|, ]
y puede detectar diferencias en la media y las colas de la distribución.
La hipótesis nula es que todas las muestras provienen de la misma distribución. Por lo tanto, si el valor p es menor que un valor predefinido de 𝞪 (p. ej., 0,05), entonces rechazamos la hipótesis nula y concluimos la deriva. Para determinar el valor crítico de un 𝞪 dado, necesitamos consultar una tabla KS de dos muestras. O, si los tamaños de muestra n (número de muestras de referencia) ym (número de muestras nuevas) son grandes, el valor crítico cv𝞪 se calcula de acuerdo con
[cv_{alpha}= c(alpha)sqrt{ frac{n+m}{n*m} }, ]
donde c(𝞪) se puede encontrar aquí en Wikipedia para valores comunes.
La prueba KS se utiliza ampliamente en la detección de deriva y es relativamente robusta frente a valores extremos. Sin embargo, tenga en cuenta que incluso un número pequeño de valores atípicos extremos puede afectar desproporcionadamente la medida de disimilitud y dar lugar a falsas alarmas positivas.
Índice de estabilidad de la población
Una alternativa (o complemento) aún menos sensible es el índice de estabilidad poblacional (PSI). En lugar de utilizar funciones de distribución acumulativa, el PSI implica dividir el rango de observaciones en contenedores b y calcular frecuencias para cada contenedor, generando efectivamente histogramas de la referencia y los datos nuevos. Comparamos los histogramas y, si parecen haber cambiado inesperadamente, las señales del sistema se desvían. Formalmente, la disimilitud se calcula según:
[dis = sum_{bin B} (ratio(b^{nuevo}) – ratio(b^{ref}))ln(frac{ratio(b^{nuevo})}{ratio(b^{ref})}) = sum_{bin B} PSI_{b}, ]
donde ratio(bnew) es la proporción de puntos de datos que caen en el contenedor b en el nuevo conjunto de datos, y ratio(bref) es la proporción de puntos de datos que caen en el contenedor b en el conjunto de datos de referencia, B es el conjunto de todos los contenedores. Cuanto menor sea la diferencia entre ratio(bnew) y ratio(bref), menor será el PSI. Por lo tanto, si se observa una PSI grande, entonces un sistema de detección de deriva señalaría la deriva. En la práctica, a menudo se aplica como regla general un umbral de 0,2 o 0,25. Es decir, si el PSI > 0,25, las señales del sistema se desvían.
Prueba de chi cuadrado
Por último, presentamos un método de detección de deriva univariante que se puede aplicar a características categóricas. Todos los métodos anteriores sólo funcionan con características numéricas.
Entonces, sea x una característica categórica con n categorías. Calcular el estadístico de prueba de chi-cuadrado es algo similar a calcular el PSI de la sección anterior. En lugar de calcular el histograma de una característica continua, ahora consideramos los recuentos (relativos) por categoría i. Con estos recuentos, definimos la disimilitud como la suma (normalizada) de las diferencias de frecuencia al cuadrado en los datos de referencia y nuevos:
[dis = sum_{i=1}^{n} frac{(count_{i}^{new}-count_{i}^{ref})^{2}}{count_{i}^{ref}}].
Tenga en cuenta que en la práctica es posible que deba recurrir a recuentos relativos si las cardinalidades de los datos nuevos y de referencia son diferentes.
Para decidir si una disimilitud observada es significativa (con algún valor p predefinido), se consulta una tabla de valores de chi-cuadrado con un grado de libertad, por ejemplo, Wikipedia.
Pruebas multivariadas
En muchos casos, la distribución de cada característica individualmente puede no verse afectada por la deriva según las pruebas univariadas de la sección anterior, pero la distribución general X aún puede verse afectada. Por ejemplo, la correlación entre x1 y x2 puede cambiar mientras los histogramas de ambos (y, por tanto, el PSI univariado) parecen ser estables. Claramente, estos cambios en las interacciones de funciones pueden afectar gravemente el rendimiento del modelo de aprendizaje automático y deben detectarse. Por lo tanto, presentamos una prueba multivariada que puede complementar las pruebas univariadas de las secciones anteriores.
Prueba basada en errores de reconstrucción
Este enfoque se basa en codificadores automáticos autosupervisados que se pueden entrenar sin etiquetas. Dichos modelos constan de una parte de codificador y decodificador, donde el codificador asigna los datos a un espacio latente, generalmente de baja dimensión, y el decodificador aprende a reconstruir los datos originales a partir de la representación del espacio latente. El objetivo del aprendizaje es minimizar el error de reconstrucción, es decir, la diferencia entre los datos originales y los reconstruidos.
¿Cómo se pueden utilizar estos codificadores automáticos para la detección de derivas? Primero, entrenamos el codificador automático en el conjunto de datos de referencia y almacenamos el error de reconstrucción medio. Luego, usando el mismo modelo, calculamos el error de reconstrucción con datos nuevos y usamos la diferencia como métrica de disimilitud:
[ dis = |error_{[t_0, t_1]} – error_{[t_2, t_3]}|. ]
Intuitivamente, si los datos nuevos y los de referencia son similares, el modelo original no debería tener problemas para reconstruir los datos. Por lo tanto, si la diferencia es mayor que un umbral predefinido, las señales del sistema se desvían.
Este enfoque puede detectar una deriva multivariante más sutil. Tenga en cuenta que el análisis de componentes principales puede interpretarse como un caso especial de codificadores automáticos. NannyML demuestra cómo las reconstrucciones PCA pueden identificar cambios en las correlaciones de características que los métodos univariados pasan por alto.
Resumen de métodos populares de detección de deriva
Para concluir esta sección, nos gustaría resumir los métodos de detección de deriva en la siguiente tabla:
Qué hacer contra la deriva
Aunque el objetivo de este artículo es la detección de la deriva, también nos gustaría dar una idea de lo que se puede hacer contra la deriva.
Como regla general, es importante automatizar la detección y mitigación de derivas tanto como sea posible y definir responsabilidades claras para garantizar que los sistemas de ML sigan siendo relevantes.
Primera línea de defensa: técnicas de modelado sólidas
La primera línea de defensa se aplica incluso antes de desplegar el modelo. Los datos de entrenamiento y las decisiones de ingeniería de modelos impactan directamente la sensibilidad a la deriva, y los desarrolladores de modelos deben centrarse en técnicas de modelado sólidas o aprendizaje automático sólido. Por ejemplo, un modelo de aprendizaje automático que se base en muchas características puede ser más susceptible a las consecuencias de la deriva. Naturalmente, más características significan una “superficie de ataque” más grande, y algunas características pueden ser más sensibles a la deriva que otras (por ejemplo, las mediciones de los sensores están sujetas a ruido, mientras que los datos sociodemográficos pueden ser más estables). Es probable que invertir en una selección sólida de funciones dé sus frutos a largo plazo.
Además, incluir datos ruidosos o maliciosos en el conjunto de datos de entrenamiento puede hacer que los modelos sean más robustos frente a cambios distributivos más pequeños. El campo del aprendizaje automático adversario se ocupa de enseñar a los modelos de aprendizaje automático cómo lidiar con entradas adversas.
Segunda línea de defensa: definir una estrategia alternativa
Incluso el modelo más cuidadosamente diseñado probablemente experimentará una desviación en algún momento. Cuando esto suceda, asegúrese de tener listo un plan de respaldo. Para preparar un plan de este tipo, primero se deben comprender las consecuencias del fracaso. Recomendar el par de zapatos equivocado en un boletín informativo por correo electrónico tiene implicaciones muy diferentes a clasificar erróneamente objetos en los sistemas de conducción autónoma. En el primer caso, puede ser aceptable esperar la respuesta humana antes de enviar el correo electrónico si se detecta una desviación. En este último caso, se requiere una reacción mucho más inmediata. Por ejemplo, un sistema basado en reglas o cualquier otro sistema que no se vea afectado por la deriva puede tomar el control.
Contraatacando: actualizaciones de modelos
Después de abordar los efectos inmediatos de la deriva, puede trabajar para restaurar el rendimiento del modelo. La actividad más obvia es volver a entrenar el modelo o actualizar los pesos del modelo con los datos más recientes. Uno de los desafíos del reciclaje es definir un nuevo conjunto de datos de capacitación. ¿Debería incluir todos los datos disponibles? En el caso de la deriva de conceptos, esto puede perjudicar la convergencia ya que el conjunto de datos puede contener muestras de entrenamiento inconsistentes. Si el conjunto de datos es demasiado pequeño, esto puede provocar un olvido catastrófico de patrones aprendidos previamente, ya que es posible que el modelo no esté expuesto a suficientes muestras de entrenamiento.
Para evitar un olvido catastrófico se pueden aplicar métodos de aprendizaje continuo y activo, por ejemplo mediante la introducción de sistemas de memoria.
Es importante sopesar diferentes opciones, ser consciente de las compensaciones y tomar una decisión basada en el impacto en el caso de uso.
Conclusión
En este artículo, describimos por qué la detección de desviaciones es importante si le interesa el éxito a largo plazo y la solidez de los sistemas de aprendizaje automático. Si se produce una deriva y no se soluciona, el rendimiento de los modelos de aprendizaje automático se degradará, lo que podría perjudicar los ingresos, erosionar la confianza y la reputación, o incluso tener consecuencias legales.
Introducimos formalmente la deriva de conceptos y datos como diferencias inesperadas entre los datos de entrenamiento y de inferencia. Estos cambios inesperados pueden detectarse aplicando pruebas univariadas como la prueba de Kolmogorov-Smirnov, las pruebas del índice de estabilidad de la población y la prueba de chi-cuadrado, o pruebas multivariadas como las pruebas basadas en errores de reconstrucción. Por último, abordamos brevemente algunas estrategias sobre cómo lidiar con la deriva.
En el futuro, planeamos continuar con una guía práctica basada en los conceptos presentados en este artículo. Finalmente, una última nota: si bien el artículo presenta varios métodos y conceptos cada vez más complejos, tenga en cuenta que cualquier detección de deriva siempre es mejor que ninguna detección de deriva. Dependiendo del caso de uso, un sistema de detección muy sencillo puede resultar muy eficaz.
https://en.wikipedia.org/wiki/Catastrophic_interference J. Lu, A. Liu, F. Dong, F. Gu, J. Gama y G. Zhang, “Aprendizaje bajo la deriva conceptual: una revisión”, en IEEE Transactions on Knowledge and Data Engineering, vol. 31, núm. 2346-2363, 1 de diciembre de 2019 M. Stallmann, A. Wilbik y G. Weiss, “Hacia la detección de deriva de datos repentina sin supervisión en el aprendizaje federado con agrupación difusa”, Conferencia internacional IEEE de 2024 sobre sistemas difusos (FUZZ-IEEE), Yokohama, Japón, 2024, págs. 1-8, doi: 10.1109/FUZZ-IEEE60900.2024.10611883 https://www.evidentlyai.com/ml-in-production/concept-drift https://www.evidentlyai.com/ml-in-production/data-drift https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test https://stats.stackexchange.com/questions/471732/intuitive-explanation-of-kolmogorov-smirnov-test Yurdakul, Bilal, “Propiedades estadísticas del índice de estabilidad de la población” (2018). Disertaciones. 3208. https://scholarworks.wmich.edu/dissertations/3208 https://en.wikipedia.org/wiki/Chi-squared_test https://www.nannyml.com/blog/hypothesis-testing-for-ml-performance#chi-2-test https://nannyml.readthedocs.io/en/main/how_it_works/multivariate_drift.html#how-multiv-drift https://en.wikipedia.org/wiki/Autoencoder