Únase a nosotros en DevFest para Ucrania del 14 al 15 de junio En línea Regístrese ahora

Validación de datos de TensorFlow: verificación y análisis de sus datos

Una vez que sus datos están en una canalización TFX, puede usar componentes TFX para analizarlos y transformarlos. Puede utilizar estas herramientas incluso antes de entrenar un modelo.

Hay muchas razones para analizar y transformar sus datos:

  • Para encontrar problemas en sus datos. Los problemas comunes incluyen:
    • Faltan datos, como entidades con valores vacíos.
    • Etiquetas tratadas como características, para que tu modelo pueda ver la respuesta correcta durante el entrenamiento.
    • Funciones con valores fuera del rango esperado.
    • Anomalías de datos.
    • El modelo de transferencia aprendido tiene un procesamiento previo que no coincide con los datos de entrenamiento.
  • Diseñar conjuntos de funciones más eficaces. Por ejemplo, puede identificar:
    • Funciones especialmente informativas.
    • Funciones redundantes.
    • Funciones que varían tanto en escala que pueden ralentizar el aprendizaje.
    • Funciones con poca o ninguna información predictiva única.

Las herramientas TFX pueden ayudar a encontrar errores de datos y ayudar con la ingeniería de funciones.

Validación de datos de TensorFlow

Descripción general

La validación de datos de TensorFlow identifica anomalías en el entrenamiento y la entrega de datos, y puede crear un esquema automáticamente al examinar los datos. El componente se puede configurar para detectar diferentes clases de anomalías en los datos. Puede

  1. Realice verificaciones de validez comparando estadísticas de datos con un esquema que codifique las expectativas del usuario.
  2. Detecte el sesgo de servicio de entrenamiento comparando ejemplos en datos de entrenamiento y servicio.
  3. Detecte la deriva de datos observando una serie de datos.

Documentamos cada una de estas funcionalidades de forma independiente:

Validación de ejemplo basada en esquema

La validación de datos de TensorFlow identifica cualquier anomalía en los datos de entrada al comparar las estadísticas de datos con un esquema. El esquema codifica las propiedades que se espera que satisfagan los datos de entrada, como tipos de datos o valores categóricos, y el usuario puede modificarlos o reemplazarlos.

La validación de datos de Tensorflow generalmente se invoca varias veces dentro del contexto de la canalización TFX: (i) para cada división obtenida de ExampleGen, (ii) para todos los datos pretransformados utilizados por Transform y (iii) para todos los datos posteriores a la transformación generados por Transformar. Cuando se invoca en el contexto de Transform (II-III), las opciones de estadísticas y limitaciones basadas en el esquema se pueden configurar mediante la definición de la stats_options_updater_fn . Esto es particularmente útil al validar datos no estructurados (por ejemplo, características de texto). Ver el código de usuario para un ejemplo.

Funciones de esquema avanzadas

Esta sección cubre una configuración de esquema más avanzada que puede ayudar con configuraciones especiales.

Características escasas

La codificación de características dispersas en los ejemplos generalmente introduce varias características que se espera que tengan la misma valencia para todos los ejemplos. Por ejemplo, la característica escasa:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
se codifica utilizando funciones independientes de índice y valor:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
con la restricción de que la valencia de la función de índice y valor debe coincidir para todos los ejemplos. Esta restricción puede ser explícita en el esquema definiendo un sparse_feature:

sparse_feature {
  name: 'WeightedCategories'
  index_feature { name: 'WeightedCategoriesIndex' }
  value_feature { name: 'WeightedCategoriesValue' }
}

La definición de característica dispersa requiere uno o más índices y una característica de valor que se refieren a características que existen en el esquema. La definición explícita de características dispersas permite a TFDV verificar que las valencias de todas las características referidas coincidan.

Algunos casos de uso introducen restricciones de valencia similares entre funciones, pero no necesariamente codifican una función escasa. El uso de la función escasa debería desbloquearlo, pero no es lo ideal.

Entornos de esquema

De forma predeterminada, las validaciones asumen que todos los ejemplos de una canalización se adhieren a un solo esquema. En algunos casos, es necesario introducir ligeras variaciones en el esquema, por ejemplo, las características que se utilizan como etiquetas son necesarias durante el entrenamiento (y deben validarse), pero faltan durante la publicación. Entornos se pueden utilizar para expresar tales requisitos, en particular default_environment() , in_environment() , not_in_environment() .

Por ejemplo, suponga que se requiere una función llamada 'LABEL' para la capacitación, pero se espera que falte en la publicación. Esto se puede expresar mediante:

  • Defina dos entornos distintos en el esquema: ["SERVICIO", "ENTRENAMIENTO"] y asocie 'ETIQUETA' solo con el entorno "ENTRENAMIENTO".
  • Asocie los datos de entrenamiento con el entorno "TRAINING" y los datos de servicio con el entorno "SERVING".
Generación de esquemas

El esquema de datos de entrada se especifica como una instancia de la TensorFlow esquema .

En lugar de construir un esquema manualmente desde cero, un desarrollador puede confiar en la construcción automática de esquemas de Validación de datos de TensorFlow. Específicamente, TensorFlow Data Validation construye automáticamente un esquema inicial basado en estadísticas calculadas sobre los datos de entrenamiento disponibles en la canalización. Los usuarios pueden simplemente revisar este esquema generado automáticamente, modificarlo según sea necesario, registrarlo en un sistema de control de versiones y enviarlo explícitamente a la canalización para su posterior validación.

TFDV incluye infer_schema() para generar un esquema de forma automática. Por ejemplo:

schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)

Esto desencadena una generación automática de esquemas basada en las siguientes reglas:

  • Si un esquema ya se ha generado automáticamente, se utiliza tal cual.

  • De lo contrario, TensorFlow Data Validation examina las estadísticas de datos disponibles y calcula un esquema adecuado para los datos.

Nota: El esquema generado automáticamente es el mejor esfuerzo y solo intenta inferir propiedades básicas de los datos. Se espera que los usuarios lo revisen y modifiquen según sea necesario.

Detección de sesgos de formación-servicio

Descripción general

La validación de datos de TensorFlow puede detectar un sesgo de distribución entre el entrenamiento y la entrega de datos. El sesgo de distribución se produce cuando la distribución de valores de características para los datos de entrenamiento es significativamente diferente de los datos de servicio. Una de las causas clave del sesgo de distribución es el uso de un corpus completamente diferente para entrenar la generación de datos y superar la falta de datos iniciales en el corpus deseado. Otra razón es un mecanismo de muestreo defectuoso que solo elige una submuestra de los datos de servicio para entrenar.

Escenario de ejemplo

Ver la Guía de Validación de datos TensorFlow Comienza para obtener información sobre la configuración de detección de inclinación de formación de servir.

Detección de deriva

La detección de desviación se admite entre tramos consecutivos de datos (es decir, entre el tramo N y el tramo N + 1), como entre diferentes días de datos de entrenamiento. Expresamos deriva en términos de la distancia L-infinito para características categóricas y aproximada divergencia Jensen-Shannon para las características numéricas. Puede establecer la distancia de umbral para recibir advertencias cuando la desviación sea mayor de lo aceptable. Establecer la distancia correcta es típicamente un proceso iterativo que requiere experimentación y conocimiento del dominio.

Ver la Guía de Validación de datos TensorFlow Comienza para obtener información sobre la configuración de detección de derivas.

Uso de visualizaciones para verificar sus datos

La validación de datos de TensorFlow proporciona herramientas para visualizar la distribución de los valores de las funciones. Mediante el examen de estas distribuciones en un cuaderno Jupyter usando facetas que puede detectar los problemas comunes con los datos.

Estadísticas de funciones

Identificación de distribuciones sospechosas

Puede identificar errores comunes en sus datos utilizando una pantalla de Resumen de facetas para buscar distribuciones sospechosas de valores de características.

Datos desequilibrados

Una característica desequilibrada es una característica para la que predomina un valor. Las características desequilibradas pueden ocurrir de forma natural, pero si una característica siempre tiene el mismo valor, es posible que tenga un error de datos. Para detectar características desequilibradas en una descripción general de facetas, elija "No uniformidad" en el menú desplegable "Ordenar por".

Las características más desequilibradas se enumerarán en la parte superior de cada lista de tipos de características. Por ejemplo, la siguiente captura de pantalla muestra una característica que es todo ceros y una segunda que está muy desequilibrada, en la parte superior de la lista "Características numéricas":

Visualización de datos desequilibrados

Datos distribuidos uniformemente

Una característica distribuida uniformemente es aquella en la que todos los valores posibles aparecen con casi la misma frecuencia. Al igual que con los datos desequilibrados, esta distribución puede ocurrir de forma natural, pero también puede producirse por errores de datos.

Para detectar características distribuidas uniformemente en una descripción general de facetas, elija "No uniformidad" en el menú desplegable "Ordenar por" y marque la casilla de verificación "Orden inverso":

Histograma de datos uniformes

Los datos de cadena se representan mediante gráficos de barras si hay 20 valores únicos o menos, y como un gráfico de distribución acumulativa si hay más de 20 valores únicos. Entonces, para los datos de cadena, las distribuciones uniformes pueden aparecer como gráficos de barras planas como el de arriba o líneas rectas como el de abajo:

Gráfico de líneas: distribución acumulativa de datos uniformes

Errores que pueden producir datos distribuidos uniformemente

A continuación, se muestran algunos errores comunes que pueden producir datos distribuidos uniformemente:

  • Usar cadenas para representar tipos de datos que no son cadenas, como fechas. Por ejemplo, tendrá muchos valores únicos para una función de fecha y hora con representaciones como "2017-03-01-11-45-03". Los valores únicos se distribuirán uniformemente.

  • Incluyendo índices como "número de fila" como características. Aquí nuevamente tienes muchos valores únicos.

Datos perdidos

Para comprobar si a una característica le faltan valores por completo:

  1. Elija "Cantidad faltante / cero" en el menú desplegable "Ordenar por".
  2. Marque la casilla de verificación "Orden inverso".
  3. Mire la columna "perdidos" para ver el porcentaje de instancias con valores perdidos para una característica.

Un error de datos también puede causar valores de características incompletos. Por ejemplo, puede esperar que la lista de valores de una característica siempre tenga tres elementos y descubra que a veces solo tiene uno. Para comprobar si hay valores incompletos u otros casos en los que las listas de valores de características no tienen el número esperado de elementos:

  1. Elija "Longitud de la lista de valores" en el menú desplegable "Gráfico para mostrar" a la derecha.

  2. Mire el gráfico a la derecha de cada fila de características. El gráfico muestra el rango de longitudes de la lista de valores para la característica. Por ejemplo, la fila resaltada en la captura de pantalla siguiente muestra una característica que tiene algunas listas de valores de longitud cero:

Pantalla de descripción general de facetas con función con listas de valores de función de longitud cero

Grandes diferencias de escala entre funciones

Si sus características varían mucho en escala, es posible que el modelo tenga dificultades para aprender. Por ejemplo, si algunas características varían de 0 a 1 y otras varían de 0 a 1,000,000,000, tiene una gran diferencia de escala. Compare las columnas "máximo" y "mínimo" de las funciones para encontrar escalas muy variables.

Considere la posibilidad de normalizar los valores de las funciones para reducir estas amplias variaciones.

Etiquetas con etiquetas no válidas

Los estimadores de TensorFlow tienen restricciones sobre el tipo de datos que aceptan como etiquetas. Por ejemplo, los clasificadores binarios normalmente solo funcionan con etiquetas {0, 1}.

Revisar los valores de la etiqueta en la general Facetas y asegurarse de que se ajustan a los requisitos de los estimadores .