Detección del desfase de datos (versión preliminar) en los conjuntos de datos

SE APLICA A:Azure ML del SDK de Python v1

Obtenga información sobre cómo supervisar el desfase de datos y establecer alertas cuando el desfase sea alto.

Con los monitores del conjunto de datos de Azure Machine Learning (versión preliminar), puede:

  • Analizar el desfase de los datos para comprender cómo cambian con el tiempo.
  • Supervisar los datos del modelo para conocer las diferencias entre los conjuntos de datos de entrenamiento y de servicio. Comience por recopilar datos de modelo de los modelos implementados.
  • Supervisar los datos nuevos para conocer las diferencias entre los conjuntos de datos de destino y los de referencia.
  • Perfilar características en los datos para realizar un seguimiento de cómo cambian las propiedades estadísticas con el tiempo.
  • Configurar alertas sobre el desfase de datos para tener advertencias tempranas de posibles problemas.
  • Crear una nueva versión del conjunto de datos al determinar que los datos se han desfasado demasiado.

Para crear el monitor, se usa un conjunto de datos de Azure Machine Learning. El conjunto de datos debe incluir una columna de marca de tiempo.

Puede ver las métricas de desfase de datos con el SDK de Python o en Azure Machine Learning Studio. Se pueden encontrar otras métricas e información detallada a través del recurso de Azure Aplicación Insights asociado al área de trabajo de Azure Machine Learning.

Importante

La detección de un desfase de datos en conjuntos de datos se encuentra actualmente en versión preliminar pública. Se ofrece la versión preliminar sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Requisitos previos

Para crear y trabajar con conjuntos de datos, necesita:

¿Qué es el desfase de datos?

La precisión del modelo se degrada con el tiempo, en gran medida debido al desfase de datos. Para los modelos de Machine Learning, el desfase de datos es el cambio en los datos de entrada del modelo que conduce a la degradación del rendimiento del modelo. La supervisión del desfase de datos ayuda a detectar estos problemas de rendimiento del modelo.

Entre las causas del desfase de datos se incluyen:

  • Cambios del proceso ascendente, como un sensor que se reemplaza que cambia las unidades de medida de pulgadas a centímetros.
  • Los problemas de calidad de los datos, como un sensor roto que siempre lee 0.
  • Desfase natural en los datos, como la temperatura media que cambia con las estaciones.
  • Cambio en relación entre las características o el turno covariable.

Azure Machine Learning simplifica la detección de desfases al calcular una sola métrica que abstrae la complejidad de los conjuntos de datos que se comparan. Estos conjuntos de datos pueden tener cientos de características y decenas de miles de filas. Una vez que se detecta el desfase, se exploran las características que lo causan. A continuación, inspeccione las métricas a nivel de característica para depurar y aislar la causa principal del desfase.

Este enfoque de arriba abajo facilita el seguimiento de los datos en mayor medida que las técnicas tradicionales basadas en reglas. Las técnicas basadas en reglas, como el intervalo de datos permitidos o los valores únicos permitidos, pueden consumir mucho tiempo y ser propensos a errores.

En Azure Machine Learning, se usan monitores de conjunto de datos para detectar y alertar sobre el desfase de datos.

Monitores de conjuntos de datos

Con un monitor de conjunto de datos puede:

  • Detectar y avisar sobre el desfase de datos en los nuevos datos de un conjunto de datos.
  • Analizar el desfase en datos históricos.
  • Generar perfiles de datos nuevos a lo largo del tiempo.

El algoritmo de desfase de datos proporciona una medida global del cambio en los datos y la indicación de qué características son responsables de una investigación más detallada. Los monitores de conjuntos de datos generan muchas otras métricas mediante la generación de perfiles de nuevos datos en el conjunto de datos de timeseries.

Mediante Azure Application Insights se pueden configurar alertas personalizadas en todas las métricas generadas por el monitor. Los monitores de conjuntos de datos se pueden usar para detectar rápidamente problemas de datos y reducir el tiempo necesario para depurar el problema mediante la identificación de las causas probables.

Conceptualmente, hay tres escenarios principales para configurar los monitores de conjunto de datos en Azure Machine Learning.

Escenario Descripción
Supervisión de datos de servicio de un modelo para el desfase de los datos de entrenamiento Los resultados de este escenario se pueden interpretar como la supervisión de un proxy para la precisión del modelo, dado que la precisión del modelo se degrada si los datos de servicio se desfasan de los datos de entrenamiento.
Supervisión de un conjunto de datos de una serie temporal para el desfase desde un período de tiempo anterior Este escenario es más general y se puede usar para supervisar los conjuntos de datos implicados en el flujo ascendente o descendente de la creación del modelo. El conjunto de datos de destino debe tener una columna de marca de tiempo. El conjunto de datos de referencia puede ser cualquier conjunto de datos tabular que tenga características en común con el conjunto de datos de destino.
Análisis sobre datos pasados Este escenario se puede utilizar para comprender los datos históricos e informar de las decisiones en la configuración de los monitores de conjunto de datos.

Los monitores del conjunto de datos dependen de los siguientes servicios de Azure.

Servicio de Azure Descripción
Dataset El desfase usa conjuntos de datos de Machine Learning para recuperar los datos de entrenamiento y comparar los datos para el entrenamiento del modelo. La generación de un perfil de datos se usa para generar algunas de las métricas que se han comunicado, como min, max, distinct values, distinct values count.
Canalización y proceso de Azure Machine Learning El trabajo de cálculo de desfase se hospeda en una canalización de Azure Machine Learning. El trabajo se desencadena a petición o mediante programación para ejecutarse en un proceso configurado en el momento de la creación del monitor de desfase.
Application Insights El desfase emite métricas a Application Insights que pertenecen al área de trabajo de Machine Learning.
Azure Blob Storage El desfase emite métricas en formato json a Azure Blob Storage.

Conjunto de datos de destino y de referencia

Puede supervisar los conjuntos de datos de Azure Machine Learning para el desfase de datos. Al crear un monitor de conjunto de datos, hace referencia a:

  • Conjunto de datos de referencia: normalmente, el conjunto de datos de entrenamiento para un modelo.
  • Conjunto de datos de destino: normalmente, datos de entrada del modelo. Con el tiempo se compara con el conjunto de datos de referencia. Esta comparación significa que el conjunto de datos de destino debe tener especificada una columna de marca de tiempo.

El monitor compara los conjuntos de datos de referencia y de destino.

Creación del conjunto de datos de destino

El conjunto de datos de destino debe tener configurado el rasgo timeseries especificando la columna de marca de tiempo de una columna de los datos o en una columna virtual derivada del patrón de ruta de los archivos. Cree el conjunto de datos con una marca de tiempo a través del SDK de Python o Azure Machine Learning Studio. Tiene que especificarse una columna que represente una "marca de tiempo" para poder agregar el rasgo timeseries al conjunto de datos. Si los datos se particionan en la estructura de carpetas con información temporal, como "{aaaaa/MM/dd}", cree una columna virtual mediante la configuración del patrón de ruta de acceso y establézcala como la "marca de tiempo de partición" para habilitar la funcionalidad de la API de serie temporal.

SE APLICA A:Azure ML del SDK de Python v1

El método with_timestamp_columns() de la clase Dataset define la columna de marca de tiempo del conjunto de datos.

from azureml.core import Workspace, Dataset, Datastore

# get workspace object
ws = Workspace.from_config()

# get datastore object
dstore = Datastore.get(ws, 'your datastore name')

# specify datastore paths
dstore_paths = [(dstore, 'weather/*/*/*/*/data.parquet')]

# specify partition format
partition_format = 'weather/{state}/{date:yyyy/MM/dd}/data.parquet'

# create the Tabular dataset with 'state' and 'date' as virtual columns
dset = Dataset.Tabular.from_parquet_files(path=dstore_paths, partition_format=partition_format)

# assign the timestamp attribute to a real or virtual column in the dataset
dset = dset.with_timestamp_columns('date')

# register the dataset as the target dataset
dset = dset.register(ws, 'target')

Sugerencia

Para obtener un ejemplo completo de cómo usar el rasgo de timeseries de conjuntos de datos, vea el cuaderno de ejemplo o la documentación del SDK de conjuntos de datos.

Creación de un monitor de conjunto de datos

Cree un monitor de conjunto de datos para detectar y alertar sobre el desfase de datos en un nuevo conjunto de datos. Use el SDK de Python o Azure Machine Learning Studio.

Como se describe más adelante, un monitor de conjuntos de datos se ejecuta a intervalos de una frecuencia determinada (diaria, semanal, mensual). Analiza los nuevos datos disponibles en el conjunto de datos de destino desde la última ejecución. En algunos casos, este análisis de los datos más recientes puede no ser suficiente:

  • Los nuevos datos del origen ascendente se retrasaron debido a una canalización de datos rota, y estos nuevos datos no estaban disponibles cuando se ejecutó el monitor de conjuntos de datos.
  • Un conjunto de datos de serie temporal solo tenía datos históricos y quiere analizar patrones de desfase en el conjunto de datos a lo largo del tiempo. Por ejemplo: compare el tráfico que fluye hacia un sitio web, tanto en invierno como en verano, para identificar patrones estacionales.
  • No está familiarizado con los monitores de conjunto de datos. Quiere evaluar cómo funciona la característica con los datos existentes antes de configurarla para supervisar los días futuros. En estos escenarios, puede enviar una ejecución a petición, con un intervalo de fechas específico del conjunto de datos de destino, para compararlo con el conjunto de datos de línea base.

La función de reposición ejecuta un trabajo de reposición para un intervalo de fechas de inicio y finalización especificados. Un trabajo de reposición rellena los puntos de datos que faltan esperados en un conjunto de datos, como una manera de garantizar la precisión y la integridad de los datos.

SE APLICA A:Azure ML del SDK de Python v1

Consulte la Documentación de referencia de Python SDK sobre el desfase de datos para obtener información completa.

En el siguiente ejemplo se muestra cómo crear un monitor de conjunto de datos mediante el SDK de Python

from azureml.core import Workspace, Dataset
from azureml.datadrift import DataDriftDetector
from datetime import datetime

# get the workspace object
ws = Workspace.from_config()

# get the target dataset
target = Dataset.get_by_name(ws, 'target')

# set the baseline dataset
baseline = target.time_before(datetime(2019, 2, 1))

# set up feature list
features = ['latitude', 'longitude', 'elevation', 'windAngle', 'windSpeed', 'temperature', 'snowDepth', 'stationName', 'countryOrRegion']

# set up data drift detector
monitor = DataDriftDetector.create_from_datasets(ws, 'drift-monitor', baseline, target,
                                                      compute_target='cpu-cluster',
                                                      frequency='Week',
                                                      feature_list=None,
                                                      drift_threshold=.6,
                                                      latency=24)

# get data drift detector by name
monitor = DataDriftDetector.get_by_name(ws, 'drift-monitor')

# update data drift detector
monitor = monitor.update(feature_list=features)

# run a backfill for January through May
backfill1 = monitor.backfill(datetime(2019, 1, 1), datetime(2019, 5, 1))

# run a backfill for May through today
backfill1 = monitor.backfill(datetime(2019, 5, 1), datetime.today())

# disable the pipeline schedule for the data drift detector
monitor = monitor.disable_schedule()

# enable the pipeline schedule for the data drift detector
monitor = monitor.enable_schedule()

Sugerencia

Para ver un ejemplo completo de cómo configurar un conjunto de datos de timeseries y el detector de desfase de datos, consulte nuestro cuaderno de ejemplos.

Descripción de los resultados del desfase de datos

En esta sección se muestran los resultados de la supervisión de un conjunto de datos, que se encuentra en la página Conjuntos de datos / Monitores de conjuntos de datos en Azure Studio. Puede actualizar la configuración y analizar los datos existentes para un período de tiempo específico en esta página.

Comience con la información de nivel superior sobre la magnitud del desfase de datos y el resaltado de las características que se van a investigar.

Drift overview

Métrica Descripción
Magnitud del desfase de datos Un porcentaje de desfase entre la referencia y el conjunto de datos de destino a lo largo del tiempo. De 0 a 100, 0, donde 0 indica conjuntos de datos idénticos y 100 indica que el modelo de desfase de datos de Azure Machine Learning puede indicar por completo los dos conjuntos de datos. Se espera un ruido en el porcentaje exacto medido debido a las técnicas de aprendizaje automático que se usan para generar esta magnitud.
Principales características de desfase Muestra las características del conjunto de datos que presentan un desfase más importante y, en consecuencia, contribuyen en mayor medida a la métrica Magnitud del desfase. Debido al cambio de covariable, no es necesario que la distribución subyacente de una característica cambie para tener una importancia de la característica relativamente alta.
Threshold La magnitud del desfase de datos más allá del umbral establecido desencadena alertas. Configure el valor de umbral en la configuración del monitor.

Tendencia de la magnitud del desfase

Vea cómo el conjunto de datos difiere del conjunto de datos de destino en el período de tiempo especificado. Cuanto más cerca del 100 %, más se diferencian los dos conjuntos de datos.

Drift magnitude trend

Magnitud del desfase según las características

Esta sección contiene información a nivel de características sobre el cambio en la distribución de la característica seleccionada, así como otras estadísticas, a lo largo del tiempo.

El conjunto de datos de destino también se perfila a lo largo del tiempo. La distancia estadística entre la distribución de referencia de cada característica se compara con el conjunto de datos de destino a lo largo del tiempo. Conceptualmente, esto es similar a la magnitud del desfase de datos. Sin embargo, esta distancia estadística es para una característica individual y no para todas las características. También están disponibles Mín, Máx y Media.

En Estudio de Azure Machine Learning, seleccione una barra del gráfico para ver los detalles del nivel de características de esa fecha. De forma predeterminada, ve la distribución del conjunto de datos de referencia y la distribución del trabajo más reciente de la misma característica.

Drift magnitude by features

Estas métricas también se pueden recuperar en el SDK de Python a través del método get_metrics() en un objeto DataDriftDetector.

Detalles de la característica

Por último, desplácese hacia abajo para ver los detalles de cada característica individual. Use las listas desplegables sobre el gráfico para seleccionar la característica y, además, seleccione la métrica que desea ver.

Numeric feature graph and comparison

Las métricas del gráfico dependen del tipo de característica.

  • Características numéricas

    Métrica Descripción
    Distancia de Wasserstein Cantidad mínima de trabajo para transformar la distribución de la línea base en la distribución de destino.
    Valor medio Valor promedio de la característica.
    Valor mínimo Valor mínimo de la característica.
    Valor máximo Valor máximo de la característica.
  • Características de categorías

    Métrica Descripción
    Distancia euclidiana   Se calcula para columnas de categorías. La distancia euclidiana se calcula sobre dos vectores, generados a partir de la distribución empírica de la misma columna de categorías de dos conjuntos de valores. 0 indica que no hay ninguna diferencia en las distribuciones empíricas.  Cuanto más se desvíe de 0, mayor desfase habrá en la columna. Se pueden observar tendencias a partir de un trazado de serie temporal de esta métrica, y puede resultar útil para revelar una característica de desfase.  
    Valores únicos Número de valores únicos (cardinalidad) de la característica.

En este gráfico, seleccione una sola fecha para comparar la distribución de características entre el destino y esta fecha para la característica mostrada. En el caso de las características numéricas, se muestran dos distribuciones de probabilidad. Si la característica es numérica, se muestra un gráfico de barras.

Select a date to compare to target

Métricas, alertas y eventos

Las métricas se pueden consultar en el recurso de Azure Application Insights asociado con el área de trabajo de aprendizaje automático. Tiene acceso a todas las características de Application Insights, entre las que se incluye la configuración de reglas de alertas personalizadas y grupos de acciones para desencadenar una acción como un correo electrónico/SMS/notificación push/mensaje de voz o una función de Azure. Para más información, consulte la documentación de Application Insights completa.

Para empezar, vaya a Azure Portal y seleccione la página Información general de su área de trabajo. El recurso de Application Insights asociado está en el extremo derecho:

Azure portal overview

Seleccione Registros (Analytics) en Supervisión, en el panel izquierdo:

Application insights overview

Las métricas del monitor de conjuntos de datos se almacenan como customMetrics. Para verlas, puede escribir y ejecutar una consulta después de configurar un monitor de conjuntos de datos:

Log analytics query

Después de identificar las métricas para configurar reglas de alerta, cree una regla:

New alert rule

Para definir la acción que se debe realizar cuando se cumplan las condiciones establecidas, puede usar un grupo de acciones existente, o bien crear uno:

New action group

Solucionar problemas

Limitaciones y problemas conocidos de los monitores de desfase de datos:

  • El intervalo de tiempo del análisis de datos históricos está limitado a 31 intervalos de la configuración de frecuencia del monitor.

  • Limitación de 200 características, a menos que no se especifique ninguna lista de características (se usan todas las características).

  • El tamaño de proceso debe ser lo suficientemente grande como para controlar los datos.

  • Asegúrese de que el conjunto de datos tiene datos dentro de las fechas de inicio y finalización de un trabajo de monitor determinado.

  • Los monitores del conjunto de datos solo funcionan en conjuntos de datos que contengan 50 filas, o más.

  • Las columnas, o características, del conjunto de datos se clasifican como categóricas o numéricas en función de las condiciones de la tabla siguiente. Si la característica no cumple estas condiciones, por ejemplo, una columna de tipo cadena con > 100 valores únicos, la característica se quita de nuestro algoritmo de desfase de datos, pero se perfila aún así.

    Tipo de característica Tipo de datos Condición Limitaciones
    Categorías string El número de valores únicos de la característica es menor que 100 y menor que el 5 % del número de filas. NULL se trata como su propia categoría.
    Numérico int, float Los valores de la característica son de un tipo de datos numérico y no cumplen la condición de una característica de categoría. Característica quitada si > 15 % de los valores son NULL.
  • Cuando haya creado un monitor de desfase de datos, pero no pueda ver datos en la página Monitores de conjuntos de datos en Azure Machine Learning Studio, intente lo siguiente.

    1. Compruebe si ha seleccionado el intervalo de fechas correcto en la parte superior de la página.
    2. En la pestaña Monitores de conjuntos de datos, seleccione el vínculo de experimento para comprobar el estado del trabajo. El vínculo se encuentra en el extremo derecho de la tabla.
    3. Si el trabajo se completó correctamente, compruebe los registros del controlador para ver el número de métricas que se han generado o si hay algún mensaje de advertencia. Busque registros de controladores en la pestaña Salida y registros después de seleccionar un experimento.
  • Si la función backfill() del SDK no genera la salida esperada, puede deberse a un problema de autenticación. Cuando cree el proceso para pasar esta función, no utilice Run.get_context().experiment.workspace.compute_targets. En su lugar, use una ServicePrincipalAuthentication como la siguiente para crear el proceso que se pasa en esa función backfill():

    auth = ServicePrincipalAuthentication(
            tenant_id=tenant_id,
            service_principal_id=app_id,
            service_principal_password=client_secret
            )
    ws = Workspace.get("xxx", auth=auth, subscription_id="xxx", resource_group="xxx")
    compute = ws.compute_targets.get("xxx")
    
  • En el recopilador de datos del modelo, puede tardar hasta 10 minutos para que lleguen los datos a la cuenta de Blob Storage. Sin embargo, normalmente tarda menos tiempo. En un script o Notebook, espere 10 minutos para asegurarse de que se ejecutarán las celdas siguientes correctamente.

    import time
    time.sleep(600)
    

Pasos siguientes