Saltar al contenido principal
InicioTutorialesAprendizaje automático

Comprender la deriva de los datos y la deriva de los modelos: Detección de deriva en Python

Navegue por los peligros de la deriva de modelos y explore nuestra guía práctica para la supervisión de la deriva de datos.
may 2024  · 9 min leer

"Deriva" es un término utilizado en el aprendizaje automático para describir cómo el rendimiento de un modelo de aprendizaje automático en producción empeora lentamente con el tiempo. Esto puede ocurrir por varias razones, como cambios en la distribución de los datos de entrada a lo largo del tiempo o que cambie la relación entre la entrada (x) y el objetivo deseado (y). 

La deriva puede ser un gran problema cuando utilizamos el aprendizaje automático en el mundo real, donde los datos suelen ser dinámicos y siempre cambiantes. Este artículo profundizará en por qué los modelos se desvían, los diferentes tipos de desvíos, los algoritmos para detectarlos y, finalmente, concluirá este artículo con una implementación de código abierto de la detección de desvíos en Python.

¿Qué es la deriva?

Los modelos de aprendizaje automático se entrenan con datos históricos, pero una vez que se utilizan en el mundo real, pueden quedar desfasados y perder precisión con el tiempo debido a un fenómeno llamado deriva. La deriva es el cambio en el tiempo de las propiedades estadísticas de los datos utilizados para entrenar un modelo de aprendizaje automático. Esto puede hacer que el modelo pierda precisión o funcione de forma distinta a la prevista. 

En otras palabras, la "deriva" es la disminución de la capacidad de un modelo para hacer predicciones precisas debido a cambios en el entorno en el que se utiliza.

¿Por qué se desvían los modelos de aprendizaje automático?

Hay varias razones por las que los modelos de aprendizaje automático pueden desviarse con el tiempo. 

Una de las razones más comunes es que los datos con los que se ha entrenado el modelo han quedado obsoletos o ya no representan las condiciones actuales. 

Por ejemplo, consideremos un modelo de aprendizaje automático entrenado para predecir el precio de las acciones de una empresa basándose en datos históricos. Si entrenamos el modelo con datos de un mercado estable, puede que al principio funcione bien. Sin embargo, si el mercado se vuelve más volátil con el tiempo, es posible que el modelo ya no pueda predecir con exactitud el precio de las acciones porque las propiedades estadísticas de los datos han cambiado.

Otra razón de la desviación del modelo es que éste no se diseñó para hacer frente a los cambios en los datos. Algunos modelos de aprendizaje automático pueden manejar los cambios en los datos mejor que otros, pero ningún modelo puede evitar la deriva por completo. 

Tipos de deriva

Analicemos los dos tipos de deriva que hay que tener en cuenta:

1. Concepto Drift

La deriva de conceptos, también conocida como deriva de modelos, se produce cuando la tarea para la que se diseñó el modelo cambia con el tiempo. Por ejemplo, imagine que se entrena un modelo de aprendizaje automático para detectar mensajes de spam basándose en el contenido del mensaje. Si los tipos de spam que se reciben cambian significativamente, es posible que el modelo ya no pueda detectar con precisión el spam.

La deriva conceptual puede dividirse a su vez en cuatro categorías (Aprendizaje bajo deriva conceptual: A Review, Jie Lu et al.):

  • Deriva súbita
  • Deriva gradual
  • Deriva incremental
  • Conceptos recurrentes

Concepto Drift

Source: https://arxiv.org/pdf/2004.05785.pdf

2. Deriva de datos

La desviación de datos, también conocida como desplazamiento de covariables, se produce cuando la distribución de los datos de entrada cambia con el tiempo. Por ejemplo, consideremos un modelo de aprendizaje automático entrenado para predecir la probabilidad de que un cliente compre un producto en función de su edad e ingresos. Si la distribución de edades e ingresos de los clientes cambia significativamente con el tiempo, es posible que el modelo ya no pueda predecir con exactitud la probabilidad de una compra.

Es importante ser consciente tanto de la deriva del concepto como de la deriva de los datos y tomar medidas para prevenir o mitigar sus efectos. Algunas estrategias para hacer frente a la deriva son la supervisión y evaluación continuas del rendimiento de un modelo, la actualización del modelo con nuevos datos y el uso de modelos de aprendizaje automático más resistentes a la deriva.

Puede obtener más información sobre la ciencia de datos posterior a la implantación, como la deriva, en nuestro episodio del podcast DataFramed. 

¿Cómo se detecta la deriva?

Hay dos formas de detectar la deriva:

1. Enfoque basado en modelos de aprendizaje automático: Enfoque basado en modelos para detectar si los datos de entrada se han desviado o no.

2. Pruebas estadísticas: Existen muchas pruebas estadísticas para detectar la desviación de los datos. Se dividen principalmente en tres categorías: 

    • Métodos de análisis secuencial 
    • Modelo personalizado para detectar la deriva 
    • Método de distribución del tiempo, muy habitual. 

Los métodos basados en la distribución temporal utilizan métodos estadísticos para calcular la diferencia entre dos distribuciones de probabilidad para detectar la deriva. Estos métodos incluyen el índice de estabilidad de la población, la divergencia KL, la divergencia JS, la prueba KS y la métrica de Wasserstein. 

Algoritmos para detectar la desviación de datos

Prueba de Kolmogorov-Smirnov (K-S)

La prueba de Kolmogorov-Smirnov (K-S) es una prueba estadística no paramétrica que se utiliza para determinar si dos conjuntos de datos proceden de la misma distribución. Suele utilizarse para comprobar si una muestra de datos procede de una población determinada o para comparar dos muestras y determinar si proceden de la misma población.

La hipótesis nula en esta prueba es que las distribuciones son iguales. Si se rechaza esta hipótesis, sugiere que hay una desviación en el modelo.

La prueba K-S es una herramienta útil para comparar conjuntos de datos y determinar si proceden de la misma distribución.

Índice de estabilidad de la población

El Índice de Estabilidad de la Población (IEP) es una medida estadística que se utiliza para comparar la distribución de una variable categórica en dos conjuntos de datos diferentes. 

El Índice de Estabilidad de la Población (IEP) es una herramienta utilizada para medir cuánto ha cambiado la distribución de una variable entre dos muestras o a lo largo del tiempo. Suele utilizarse para controlar los cambios en las características de una población e identificar posibles problemas en el rendimiento de un modelo de aprendizaje automático.

El ISP se desarrolló originalmente para supervisar los cambios en la distribución de una puntuación en los cuadros de mando de riesgos, pero ahora se utiliza para examinar los cambios en la distribución de todos los atributos relacionados con el modelo, incluidas las variables dependientes e independientes. 

Un valor elevado del ISP indica que existe una diferencia significativa entre las distribuciones de la variable en los dos conjuntos de datos, lo que puede sugerir que hay una desviación en el modelo. 

Si la distribución de una variable ha cambiado significativamente, o si varias variables han cambiado en cierta medida, puede ser necesario recalibrar o reconstruir el modelo para mejorar su rendimiento.

Método Page-Hinkley

El método Page-Hinkley es un método estadístico utilizado para detectar cambios en la media de una serie de datos a lo largo del tiempo. Se utiliza habitualmente para supervisar el rendimiento de los modelos de aprendizaje automático y detectar cambios en la distribución de los datos que puedan indicar una desviación del modelo.

Para utilizar el método Page-Hinkley, el primer paso consiste en definir un valor umbral y una función de decisión. El valor umbral es un valor por encima del cual un cambio en la media se considera significativo, y la función de decisión es una función que devuelve un valor de 1 si se ha detectado un cambio y un valor de 0 si no se ha detectado ningún cambio.

A continuación, se calcula la media de la serie de datos en cada paso temporal y se aplica la función de decisión a los datos para determinar si se ha producido un cambio. Si la función de decisión devuelve un valor de 1, indica que se ha detectado un cambio y que el modelo puede estar a la deriva.

El método Page-Hinkley es una forma sencilla y eficaz de detectar cambios en la media de una serie de datos a lo largo del tiempo. Resulta especialmente útil para detectar pequeños cambios en la media que pueden no ser inmediatamente evidentes al observar los datos. Sin embargo, es importante seleccionar cuidadosamente el valor umbral y la función de decisión para garantizar que el método sea lo suficientemente sensible como para detectar cambios en los datos, pero no tanto como para generar falsas alarmas.

Detección de la deriva en Python

En esta sección, utilizaremos Evidently para detectar la deriva. Evidently es una biblioteca Python de código abierto creada para científicos de datos e ingenieros que trabajan con aprendizaje automático. Les ayuda a probar, evaluar y controlar el funcionamiento de sus modelos desde la validación hasta la producción.

Bibliotecas de importación

```

# import libraries

import pandas as pd

import numpy as np

from sklearn import datasets


from evidently.report import Report

from evidently.metrics import DataDriftTable

from evidently.metrics import DatasetDriftMetric

```

Importar conjunto de datos y crear particiones de referencia y de destino

```

# create ref and cur dataset for drift detection

adult_data = datasets.fetch_openml(name='adult', version=2, as_frame='auto')

adult = adult_data.frame




adult_ref = adult[~adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]

adult_cur = adult[adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]




adult_cur.iloc[:2000, 3:5] = np.nan

```

Generar informe de deriva

```

#dataset-level metrics

data_drift_dataset_report = Report(metrics=[

    DatasetDriftMetric(),

    DataDriftTable(),    

])

data_drift_dataset_report.run(reference_data=adult_ref, current_data=adult_cur)

data_drift_dataset_report

```

Panel de detección de deriva

Tablero de Detección de Deriva - creado usando EvidentlyAI

Exportar informe de deriva en formato JSON

```

#report in a JSON format

data_drift_dataset_report.json()

```

Consulte el Cuaderno Datacamp completo aquí.

Conclusión

La desviación de datos y modelos puede plantear importantes retos a los sistemas de aprendizaje automático en producción. Al comprender las causas y los efectos de la desviación y aplicar prácticas eficaces de supervisión de la desviación, puede asegurarse de que sus modelos de aprendizaje automático sigan siendo precisos y fiables a lo largo del tiempo. 

Supervisar el rendimiento de los modelos, utilizar un modelo de detección de desviaciones y volver a formarse periódicamente con datos actualizados son sólo algunas de las mejores prácticas que puede seguir para mitigar los riesgos de la desviación. Al ser proactivo en la supervisión de las derivas, puede asegurarse de que su sistema de aprendizaje automático siga aportando valor a su organización.

La supervisión de los modelos de aprendizaje automático para detectar desviaciones es sólo un aspecto de un campo más amplio denominado MLOps. Comprender los conceptos de MLOps es esencial para que cualquier científico de datos, ingeniero o líder pueda llevar los modelos de aprendizaje automático de un cuaderno local a un modelo funcional en producción. 

Si desea profundizar en la comprensión de MLOps y cómo puede beneficiarle en su carrera, consulte nuestro curso Conceptos de MLOps. Aquí aprenderá qué es MLOps, comprenderá las distintas fases de los procesos MLOps e identificará los diferentes niveles de madurez de MLOps. Después de conocer los conceptos esenciales de MLOps, estará bien equipado para implementar el aprendizaje automático de forma continua, fiable y eficaz.

Preguntas frecuentes sobre la detección de deriva

¿Qué es la deriva del modelo de aprendizaje automático?

La deriva de un modelo de aprendizaje automático se produce cuando el rendimiento de un modelo con datos nuevos difiere de su rendimiento con los datos de entrenamiento con los que se construyó. Esto puede ocurrir por varias razones, como los cambios en la distribución de los datos a lo largo del tiempo, la adición de nuevos datos que no se ajustan a los supuestos del modelo original o la propia incapacidad del modelo para adaptarse a las condiciones cambiantes.

¿Por qué es un problema la deriva del modelo?

La deriva del modelo puede afectar significativamente al rendimiento y la precisión de un modelo de aprendizaje automático. A medida que las predicciones del modelo se vuelven menos fiables, pueden conducir a decisiones o acciones incorrectas que pueden tener consecuencias negativas. Por ejemplo, en un entorno sanitario, la desviación del modelo podría conducir a diagnósticos o recomendaciones de tratamiento incorrectos, mientras que en un entorno financiero podría dar lugar a decisiones de inversión erróneas.

¿Cómo se detecta la deriva del modelo?

Hay varias formas de determinar si un modelo está a la deriva, como las pruebas estadísticas, los algoritmos de detección de la deriva y la observación del rendimiento del modelo. Algunos de estos métodos están pensados para encontrar desviaciones en tiempo real, mientras que otros son mejores para realizar pruebas en momentos determinados o en grupos. Es importante elegir la técnica adecuada para la aplicación y el entorno de datos específicos.

¿Cómo evitar el desvío del modelo?

La prevención de la desviación del modelo requiere una combinación de selección cuidadosa del modelo, supervisión y pruebas periódicas e intervención proactiva. Esto puede implicar el uso de algoritmos más resistentes a la deriva, el reentrenamiento periódico de los modelos con nuevos datos o la aplicación de estrategias para abordar activamente la deriva cuando se detecta. También es importante conocer bien los factores que pueden provocar desviaciones para poder tomar medidas para evitarlas.

¿Cómo afecta la distribución de los datos a la deriva del modelo?

La distribución de los datos puede afectar significativamente al rendimiento de un modelo de aprendizaje automático. Si la distribución de los datos cambia con el tiempo, puede producirse una desviación del modelo, ya que éste puede dejar de ser capaz de predecir con exactitud nuevos datos que no se ajustan a sus supuestos originales. Esto puede ocurrir de diversas maneras, como por ejemplo a través de variaciones naturales en los datos, la adición de nuevas fuentes de datos o cambios en los procesos o sistemas subyacentes que generan los datos.

¿Es reversible la deriva del modelo?

En algunos casos, la deriva del modelo puede ser reversible volviendo a entrenarlo con nuevos datos o ajustando sus parámetros. Sin embargo, esto no siempre es posible, sobre todo si la distribución de los datos ha cambiado significativamente o el modelo se ha vuelto demasiado complejo o especializado. En estas situaciones, puede ser necesario volver a empezar con un nuevo modelo.

¿Es posible eliminar por completo la deriva del modelo?

Eliminar por completo la deriva del modelo es difícil, si no imposible. Incluso los modelos de aprendizaje automático más sólidos y bien diseñados pueden verse afectados por cambios en los datos o en los procesos subyacentes que los generan. Lo mejor es gestionar y mitigar el impacto de la desviación del modelo mediante controles, pruebas e intervenciones periódicas.

¿Cómo influye la desviación del modelo en su rendimiento?

La deriva del modelo puede tener un impacto significativo en el rendimiento de un modelo de aprendizaje automático. A medida que las predicciones del modelo se vuelven menos precisas, puede producirse una reducción del rendimiento en métricas importantes como la exactitud, la precisión, la recuperación y la eficacia general del modelo. En algunos casos, la deriva del modelo puede incluso hacer que éste falle por completo, dando lugar a predicciones incorrectas o poco fiables.

¿Cómo afecta la deriva del modelo a su precisión?

La deriva del modelo puede tener un impacto negativo en la precisión de un modelo de aprendizaje automático. A medida que las predicciones del modelo se vuelven menos precisas, pueden conducir a decisiones o acciones incorrectas, lo que puede tener consecuencias negativas en las aplicaciones del mundo real. Por ejemplo, en un entorno sanitario, la desviación del modelo podría conducir a diagnósticos o recomendaciones de tratamiento incorrectos, mientras que en un entorno financiero podría dar lugar a decisiones de inversión erróneas. Para mantener la precisión del modelo, es importante controlarlo y comprobar su desviación con regularidad.

Temas

Cursos MLOps

Course

MLOps Concepts

2 hr
13K
Discover how MLOps can take machine learning models from local notebooks to functioning models in production that generate real business value.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

tutorial

Aprendizaje automático de datos categóricos con el tutorial de Python

Aprenda los trucos más comunes para manejar datos categóricos y preprocesarlos para construir modelos de aprendizaje automático.
Moez Ali's photo

Moez Ali

28 min

tutorial

Comprender la regresión logística en el tutorial de Python

Aprende sobre la regresión logística, sus propiedades básicas, y construye un modelo de machine learning sobre una aplicación del mundo real en Python.
Avinash Navlani's photo

Avinash Navlani

10 min

tutorial

Tutorial de Lasso y regresión Ridge en Python

Conozca las técnicas de regresión del lazo y la cresta. Compare y analice los métodos en detalle.
DataCamp Team's photo

DataCamp Team

10 min

tutorial

Tutorial de Clasificación en Árbol de Decisión en Python

En este tutorial, aprenderás Clasificación en Árbol de Decisión, medidas de selección de atributos y cómo construir y optimizar el Clasificador en Árbol de Decisión utilizando el paquete Python Scikit-learn.
Avinash Navlani's photo

Avinash Navlani

12 min

tutorial

Tutorial de ecuación normal para regresión lineal

Aprende qué es la ecuación normal y cómo puedes utilizarla para construir modelos de machine learning.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

See MoreSee More