code { background-color: transparent }
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):
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:
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:
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:
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:
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:
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):
Comencemos:
- Encuentra una lista de funciones de procesamiento previo en la documentación.
- Puedes encontrar las consultas de esta entrada en estos dos blocs de notas de GitHub. Pruébalas desde un bloc de notas de AI Platform o desde Colab.
- Para obtener más información sobre BigQuery ML, realiza esta Quest en Qwiklabs.
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