Transformaciones de datos simples para el aprendizaje automático en BigQuery

code { background-color: transparent }

Para lograr el éxito al crear modelos de aprendizaje automático con datos estructurados, suele ser necesario realizar muchas transformaciones de datos. Además, también es necesario aplicar dichas transformaciones al momento de las predicciones, y esta tarea suele estar a cargo de un equipo de ingeniería de datos que no es el mismo equipo de ciencia de datos que entrenó los modelos. Debido a las diferencias entre los conjuntos de herramientas que usan ambos equipos, puede resultar difícil mantener la uniformidad de las transformaciones entre la etapa de entrenamiento y la de inferencia. Hoy anunciaremos algunas funciones nuevas de BigQuery ML que pueden servir de ayuda para el proceso previo y la transformación de los datos usando funciones sencillas de SQL. Además, dado que BigQuery aplica automáticamente estas transformaciones al momento de realizar las predicciones, se simplifica enormemente la capacidad de producción de los modelos de AA.
En un libro publicado en 2003 sobre el análisis exploratorio de datos, Dasu y Johnson observaron que el 80% del tiempo que demora un análisis de datos se invierte en limpiar los datos. Esto sigue siendo igual con el aprendizaje automático. En Google Cloud, solemos ver que mucho del tiempo que se invierte en los proyectos de aprendizaje automático está dedicado a preparar los datos para dicho aprendizaje. Algunas de las tareas son:

  • Escribir canalizaciones de ETL para recopilar datos de diversos sistemas fuente en un solo lugar (un data lake)
  • Limpiar los datos para corregir errores en la colección o extracción de datos
  • Convertir los datos sin procesar de los data lakes a un formato que permita unir conjuntos de datos de fuentes diferentes
  • Procesar previamente los datos para eliminar valores atípicos, imputar valores faltantes, escalar columnas numéricas, insertar columnas dispersas, etc.
  • Diseñar funciones nuevas a partir de los datos sin procesar mediante operaciones (como el cruce de funciones) para permitir que los modelos de AA sean más sencillos y converjan más rápido
  • Convertir los datos unidos, procesados previamente y diseñados en un formato específico (por ejemplo, registros de TensorFlow) que sea eficiente para el aprendizaje automático
  • Replicar este conjunto de tareas de procesamiento de datos en el sistema de inferencia, que podría estar escrito en otro lenguaje de programación
  • Producir las canalizaciones de entrenamiento y predicción

Cómo aprovechar un almacén de datos con aprendizaje automático integrado
En gran parte, los proyectos de aprendizaje automático implican limpiar, transformar y mover datos. En lugar de escribir canalizaciones de ETL personalizadas para cada proyecto a fin de mover los datos a un data lake y pedir que cada proyecto de AA deba entender los datos y convertirlos en un formato que pueda unirse, recomendamos que las organizaciones creen un almacén de datos empresarial (EDW). Si el EDW está basado en la nube y permite separar el cálculo del almacenamiento (como lo hace BigQuery), cualquier unidad del negocio e incluso un socio externo pueden acceder a los datos sin tener que moverlos. Todo lo que hace falta para acceder a los datos es el rol adecuado de administración de identidades y accesos (IAM).
Con este tipo de EDW, los equipos de ingeniería de datos pueden escribir las canalizaciones de ETL una sola vez para capturar los cambios en el sistema fuente y enviarlos al almacén de datos, en lugar de hacer que los equipos de aprendizaje automático se ocupen de codificarlos paso a paso. Los científicos de datos pueden concentrarse en obtener estadísticas de los datos en lugar de convertirlos de un formato a otro. Además, si el EDW ofrece capacidades de aprendizaje automático y la integración con una infraestructura de AA eficaz (como AI Platform), evitas completamente el movimiento de los datos. En Google Cloud, cuando entrenas un modelo de red neuronal profunda en BigQuery ML, en realidad se realiza en AI Platform, pero ni siquiera lo notas.
Por ejemplo, si quieres entrenar un modelo de aprendizaje automático con un conjunto de datos de trayectos en taxi en Nueva York para predecir la tarifa, todo lo que necesitas es una consulta de SQL (visita esta entrada anterior del blog para obtener más información):

Producción con consultas programadas
Una vez que se entrena el modelo, podemos determinar la tarifa de un trayecto específico si proporcionamos el punto de salida y el de llegada:
Este es el resultado:
Productionizing with scheduled queries 1.png
Si usas un EDW moderno basado en la nube (como BigQuery) que ofrece capacidades de aprendizaje automático, te liberas de gran parte de las dificultades asociadas con el movimiento de datos. Observa cómo la consulta anterior es capaz de entrenar un modelo de AA con tan solo una declaración SELECT. Con esto, solucionamos los tres inconvenientes que identificamos al principio de este artículo. Para producir el entrenamiento del modelo de AA y llevar adelante predicciones por lotes, basta con programar las dos consultas de SQL anteriores, lo que reduce sustancialmente el inconveniente que supone la producción.
Las funciones de procesamiento previo y transformación de BigQuery ML que anunciamos hoy superan el resto de los obstáculos. Así, puedes organizar los datos con eficacia, entrenar rápidamente modelos de aprendizaje automático y llevar a cabo predicciones sin el temor de que haya incoherencias del entrenamiento a la ejecución.
Procesamiento previo en BigQuery ML
Un almacén de datos aloja los datos sin procesar de modo que puedan aplicarse a una gran variedad de tareas de análisis. Por ejemplo, los paneles suelen mostrar datos del almacén de datos y los analistas suelen realizar consultas ad hoc. Sin embargo, un requisito habitual del entrenamiento de modelos de aprendizaje automático es no entrenar los datos sin procesar, sino filtrar los valores atípicos y ejecutar determinadas operaciones (como depósito y escalamiento) para mejorar la capacidad de entrenamiento y la convergencia.
El filtrado puede realizarse en SQL mediante una cláusula WHERE, como se detalla a continuación:
Una vez que determinamos qué operaciones son necesarias para limpiar y corregir los datos, podemos crear una vista materializada:
Dado que las vistas materializadas de BigQuery están todavía en versión alfa, puedes optar por usar una vista lógica o exportar los datos a una tabla nueva. La ventaja de usar una vista materializada en el contexto del AA es que puedes liberarte del problema que supone mantener los datos actualizados en BigQuery. A medida que se agreguen filas nuevas a la tabla original, aparecerán filas limpias en la vista materializada.
El escalamiento puede implementarse en SQL de manera similar. Por ejemplo, el siguiente código genera una norma cero a partir de los cuatro campos de entrada:
Es posible almacenar estos datos escalados en la vista materializada, pero no recomendamos hacerlo porque la media y la varianza cambiarán con el paso del tiempo. La operación de escalamiento es un ejemplo de las operaciones de procesamiento previo del AA que requieren un análisis (en este caso, para determinar la media y la varianza). Debido a que los resultados del análisis cambiarán a medida que se agreguen datos, es mejor incluir en la consulta de entrenamiento del AA las operaciones de procesamiento previo que requieran análisis. Además, ten en cuenta cómo aprovechamos los UDF convenientes definidos en un repositorio de la comunidad de GitHub.
BigQuery brinda asistencia inmediata para numerosas operaciones habituales de aprendizaje automático que no requieren un análisis independiente de los datos. Este es un ejemplo de cómo almacenar los datos en un depósito usando los límites de latitud y longitud de Nueva York:
Observa que ahora los campos son categóricos y corresponden al mismo directorio bin que los puntos de salida y llegada:
fields are categorical and correspond.png
Cómo limitar las incoherencias del entrenamiento a la ejecución con TRANSFORM
Como demostramos antes, el problema de entrenar un modelo es que la producción se vuelve difícil. Ya no alcanza con enviar los datos de latitud y longitud al modelo, sino que también debemos recordar y replicar los pasos del procesamiento previo en la canalización de predicción:
Por eso, hoy anunciamos la compatibilidad con la palabra clave TRANSFORM. Si colocas todas las operaciones de procesamiento previo en una cláusula TRANSFORM especial, BigQuery ML llevará a cabo esas mismas operaciones automáticamente durante la predicción. Con esto, reduces la incoherencia del entrenamiento a la ejecución.
En el siguiente ejemplo, es posible ver el cálculo de cantidades de GIS, la extracción de características de una marca de tiempo, el cruce de funciones y hasta la concatenación de los diversos directorios bin de salida y llegada (en otras palabras, tareas de procesamiento previo muy complejas):
El código de predicción es muy simple y directo, y no hace falta que replique ninguno de los pasos del procesamiento previo:
BigQuery ML mitigates.png
¡Disfruta de estas funciones nuevas!
Comencemos:

Consulta el capítulo 9 de BigQuery: The Definitive Guide para acceder a una introducción detallada al mundo del aprendizaje automático en BigQuery.


Source: Google Dev

Deja un comentario