Prepara tus datos de entrenamiento

En esta página se describe cómo preparar los datos de entrenamiento antes de importarlos a AutoML Tables.

Introducción

La calidad de los datos de entrenamiento tiene un gran impacto en la eficacia del modelo que creas y, por extensión, en la calidad de las predicciones que muestra ese modelo. No puedes modificar los datos después de subirlos. Si necesitas cambiar los datos de entrenamiento después de importarlos, debes actualizar los datos de origen y volver a importarlos.

Comprender cómo AutoML Tables interpreta y usa tus datos te permite subir datos limpios y eficaces.

Comprende tu problema

El primer paso para crear datos de entrenamiento eficaces es asegurarte de que tu problema esté bien definido y genere los resultados de predicción que necesitas. Si no estás familiarizado con el aprendizaje automático, debes revisar los tipos de problemas que se abordan en AutoML Tables y decidir qué tipo de modelo deseas crear. Para obtener más información acerca de los tipos de problemas que admite AutoML Tables, consulta la página sobre los tipos de problemas.

Determina qué incluir en tu conjunto de datos

A continuación, debes determinar los datos que se incluirán en tus datos de entrenamiento. En algunos casos, puedes usar una tabla que ya exista en los datos de tu empresa. En otros casos, debes reunir datos de diferentes fuentes, en lo posible realizar algunas transformaciones de datos o descartar algunas columnas para crear los datos de entrenamiento más eficaces.

Requisitos de datos de entrenamiento

Los datos de tu entrenamiento deben cumplir con los siguientes requisitos:

  • Deben ser de 100 GB o menos.

  • Debes incluir el valor que deseas predecir (tu columna objetivo).

    Si los datos no tienen esta columna, AutoML Tables no puede asociar los datos de entrenamiento con el resultado deseado. El tipo de datos de esta columna también determina el tipo de tu modelo. Obtener más información.

  • Debe haber al menos dos columnas y no más de 1,000 columnas.

    Una columna debe ser el objetivo, y debe haber al menos una función disponible para entrenar el modelo. Lo ideal es que tus datos de entrenamiento tengan más de dos columnas.

  • Debe haber al menos 1,000 filas y no más de 200,000,000.

    Según la cantidad de elementos que tenga el conjunto de datos, es posible que 1,000 filas no sean suficientes para entrenar un modelo de alto rendimiento. Obtener más información.

Funciones adicionales basadas en datos de entrenamiento

Además, algunas funciones de AutoML Tables requieren que se incluyan datos específicos en los datos de entrenamiento:

Con el fin de obtener más prácticas recomendadas sobre datos, consulta la página acerca de prácticas recomendadas para crear datos de entrenamiento.

Prepara tu fuente de importación

Puedes proporcionar datos de entrenamiento de modelos a AutoML Tables de dos maneras:

La fuente que uses dependerá de cómo se almacenen tus datos y del tamaño y la complejidad de tus datos. Si tu conjunto de datos es pequeño y no necesitas tipos de datos más complejos, el CSV puede ser más fácil. Para conjuntos de datos más grandes que incluyen arreglos y estructuras, debes usar BigQuery.

Para ambas fuentes de importación, los datos deben cumplir con los siguientes requisitos:

  • Tener entre 1,000 filas y 200,000,000 de filas
  • Tener entre 2 y 1,000 columnas
  • Ser de 100 GB o menos

BigQuery

La tabla de BigQuery debe usar un conjunto de datos de BigQuery multirregional en la ubicación US o EU. Según la ubicación de la tabla de BigQuery y su fuente de datos (que puede ser diferente), debes realizar las actualizaciones de permisos que se indican en la siguiente tabla. Ten en cuenta que es posible que se necesiten cambios en el proyecto principal (el proyecto donde se encuentra AutoML Tables) o en el proyecto externo.

Tipo de tabla Ubicación de la tabla Ubicación de la fuente de datos Se requiere agregar una función
Tabla de BigQuery nativa Proyecto principal N/A Ninguno.
Tabla de BigQuery nativa Proyecto externo No disponible BigQuery Data Viewer para proyectos externos. Obtén más información.
Vista de BigQuery Mismo proyecto No disponible Ninguno.
Vista de BigQuery Proyecto diferente No disponible BigQuery Data Viewer para proyectos externos. Obtén más información.
Fuente de datos externa de BigQuery respaldada por Bigtable Proyecto principal Proyecto principal Bigtable Reader para el proyecto principal. Obtén más información.
Fuente de datos externa de BigQuery respaldada por Bigtable Proyecto principal Proyecto externo Bigtable Reader para proyectos externos. Obtén más información.
Fuente de datos externa de BigQuery respaldada por Bigtable Proyecto externo Proyecto externo BigQuery Reader y Bigtable Reader para proyectos externos. Obtén más información.
Fuente de datos externa de BigQuery respaldada por Cloud Storage Proyecto principal Proyecto principal Ninguno.
Fuente de datos externa de BigQuery respaldada por Cloud Storage Proyecto principal Proyecto externo Storage Object Viewer para proyectos externos. Obtén más información.
Fuente de datos externa de BigQuery respaldada por Cloud Storage Proyecto externo Proyecto externo Storage Object Viewer y BigQuery Data Viewer para proyectos externos. Obtén más información.
Fuente de datos externa de BigQuery respaldada por Hojas de cálculo de Google Proyecto principal No disponible Comparte el archivo de Hojas de cálculo con la cuenta de servicio de AutoML. Obtener más información.
Fuente de datos externa de BigQuery respaldada por Hojas de cálculo de Google Proyecto externo No disponible BigQuery Reader para proyectos externos y comparte el archivo de Hojas de cálculo con la cuenta de servicio de AutoML.

No es necesario que especifiques un esquema para tu tabla de BigQuery. AutoML Tables infiere de manera automática el esquema de tu tabla cuando importas tus datos.

Tu URI de BigQuery (que especifica la ubicación de tus datos de entrenamiento) debe cumplir con el siguiente formato:

bq://<project_id>.<dataset_id>.<table_id>

El URI no puede contener ningún otro carácter especial.

Para obtener información sobre los tipos de datos de BigQuery y cómo se asignan a AutoML Tables, consulta la sección sobre tablas de BigQuery. Para obtener más información sobre el uso de fuentes de datos externas de BigQuery, consulta Introducción a las fuentes de datos externas.

Archivos CSV

Requisitos del archivo CSV

Los archivos CSV pueden estar en Cloud Storage o en tu computadora local. Deben cumplir con los siguientes requisitos:

  • La primera línea del primer archivo debe ser un encabezado que contenga los nombres de las columnas. Si la primera fila de un archivo posterior es igual que el encabezado, también se trata como un encabezado; de lo contrario, se tratará como datos.
  • Los nombres de las columnas pueden incluir cualquier carácter alfanumérico o guion bajo (_). El nombre de la columna no puede comenzar con un guion bajo.
  • El carácter separador debe ser una coma (“,”).
  • Cada archivo no debe superar los 10 GB.

    Puedes incluir varios archivos, hasta un máximo de 100 GB.

No es necesario que especifiques un esquema para tus datos de CSV. AutoML Tables infiere de manera automática el esquema de tu tabla cuando importas los datos y usa la fila de encabezado para los nombres de columna.

Para obtener más información sobre el formato de archivo CSV y los tipos de datos, consulta la sección sobre archivos CSV.

Requisitos del bucket de Cloud Storage

Si importas tus datos desde Cloud Storage, deben estar en un bucket que cumpla con los siguientes requisitos:

Si importas tus datos desde una computadora local, debes tener un bucket de Cloud Storage que cumpla con los siguientes requisitos:

AutoML Tables usa este bucket como área de etapa de pruebas antes de importar los datos.

Debes usar la consola de Google Cloud para importar archivos CSV desde tu computadora local.

Cómo se usan las divisiones de datos

Cuando se usa un conjunto de datos para entrenar un modelo, los datos se dividen en tres divisiones: un conjunto de entrenamiento, un conjunto de validación y un conjunto de prueba.

Los conjuntos de entrenamiento y validación se usan para probar una gran cantidad de combinaciones de opciones de preprocesamiento, hiperparámetros y arquitectura. Estas pruebas dan como resultado modelos entrenados que luego se evalúan en el conjunto de validación de calidad y guían la exploración de combinaciones de opciones adicionales.

Cuando la realización de más pruebas ya no genera mejoras en la calidad, esa versión del modelo se considera el modelo final, con mejor rendimiento y más entrenado. A continuación, AutoML Tables entrena dos modelos más con los parámetros y la arquitectura determinados en la fase de ajuste paralelo:

  1. Un modelo entrenado con tus conjuntos de entrenamiento y validación.

    AutoML Tables genera las métricas de evaluación del modelo en este modelo con tu conjunto de prueba. Esta es la primera vez en el proceso que se usa el conjunto de prueba. Este enfoque garantiza que las métricas finales de evaluación sean un reflejo imparcial de lo bien que funcionará el modelo final entrenado en la producción.

  2. Un modelo entrenado con tus conjuntos de entrenamiento, validación y prueba.

    Este modelo es el que usas para solicitar predicciones.

Información acerca del control de la división de datos

De forma predeterminada, AutoML Tables selecciona al azar el 80% de tus filas de datos para el entrenamiento, el 10% para la validación y el 10% para las pruebas. Para los conjuntos de datos que no cambian con el tiempo, son relativamente equilibrados y reflejan la distribución de los datos que se usarán para las predicciones de producción, el algoritmo de selección aleatoria suele ser suficiente. El objetivo clave es asegurarse de que tu conjunto de pruebas represente con exactitud los datos que verá el modelo en producción. Esto garantiza que las métricas de evaluación proporcionen una señal precisa sobre el rendimiento del modelo en datos del mundo real.

Estas son algunas ocasiones en las que es posible que desees elegir qué filas se usarán en qué división de datos:

  • Tus datos son temporales.

    En este caso, debes usar una columna de tiempo o una división manual que genere el uso de los datos más recientes como conjunto de prueba.

  • Los datos de prueba incluyen datos de poblaciones que no se representarán en la producción.

    Por ejemplo, supongamos que estás entrenando un modelo con datos de compra de varias tiendas. Sin embargo, sabes que el modelo se usará por lo general con el fin de hacer predicciones para las tiendas que no están en los datos de entrenamiento. Para asegurarse de que el modelo se pueda generalizar a las tiendas que no se ven, debes segregar tus conjuntos de datos por tiendas. En otras palabras, tu conjunto de prueba solo debe incluir tiendas distintas del conjunto de evaluación, y el conjunto de evaluación debe incluir solo tiendas diferentes del conjunto de entrenamiento.

  • Tus clases están desequilibradas.

    Si tienes más de una clase que otra en tus datos de entrenamiento, es posible que debas incluir de forma manual más ejemplos de la clase minoritaria en tus datos de prueba. AutoML Tables no realiza muestras estratificadas, por lo que el conjunto de pruebas podría incluir muy pocos o incluso ningún ejemplo de la clase minoritaria.

Puedes controlar qué filas se seleccionan para cada división mediante uno de dos enfoques:

Si especificas una columna de división de datos y una columna de tiempo, solo la columna de división de datos se usará para dividir tus datos.

La columna de división de datos

La columna de división de datos te permite seleccionar filas específicas para el entrenamiento, la validación y la prueba. Cuando creas tus datos de entrenamiento, agregas una columna que puede contener uno de los siguientes valores (con distinción entre mayúsculas y minúsculas):

  • TRAIN
  • VALIDATE
  • TEST
  • UNASSIGNED

Los valores de esta columna deben ser una de las dos combinaciones siguientes:

  • Todos los TRAIN, VALIDATE y TEST
  • Solo TEST y UNASSIGNED

Cada fila debe tener un valor para esta columna; no puede ser la string vacía.

El siguiente es un ejemplo con todos los conjuntos especificados:

"TRAIN","John","Doe","555-55-5555"
"TEST","Jane","Doe","444-44-4444"
"TRAIN","Roger","Rogers","123-45-6789"
"VALIDATE","Sarah","Smith","333-33-3333"

Este es un ejemplo solo con el conjunto de prueba especificado:

"UNASSIGNED","John","Doe","555-55-5555"
"TEST","Jane","Doe","444-44-4444"
"UNASSIGNED","Roger","Rogers","123-45-6789"
"UNASSIGNED","Sarah","Smith","333-33-3333"

La columna de división de datos puede tener cualquier nombre de columna válido.

Si el valor de la columna de división de datos es UNASSIGNED, AutoML Tables asigna de manera automática esa fila al conjunto de entrenamiento o validación.

Después de importar los datos, selecciona una división de datos manual y especifica esta columna como la columna de división de datos. (También puedes usar el campo mlUseColumnSpecId).

La columna de tiempo

Se usa la columna de tiempo con el fin de indicarle a AutoML Tables que el tiempo importa para tus datos; no se distribuye al azar en el tiempo. Cuando especificas la columna de tiempo, AutoML Tables usa el primer 80% de las filas para el entrenamiento, el siguiente 10% de las filas para la validación y el último 10% de las filas para la prueba.

AutoML Tables trata cada fila como un ejemplo independiente e idénticamente distribuido; cuando se configura la columna de tiempo, esto no cambia. La columna de tiempo solo se usa para dividir el conjunto de datos.

Debes incluir un valor para la columna de tiempo de cada fila en tu conjunto de datos. Asegúrate de que la columna de tiempo tenga suficientes valores distintos, de modo que los conjuntos de evaluación y prueba no estén vacíos. Por lo general, tener al menos 20 valores distintos debería ser suficiente.

La columna de tiempo debe tener un tipo de datos de Timestamp.

Durante la revisión del esquema, selecciona esta columna como la columna de tiempo. (En la API, usa el campo timeColumnSpecId). Esta selección solo se aplica si no especificaste la columna de división de datos.

Si tienes una columna relacionada con el tiempo que no deseas usar con el fin de dividir los datos, establece el tipo de datos para esa columna en Timestamp, pero no la establezcas como la columna de tiempo.

Información acerca del uso de ponderaciones en tus datos de entrenamiento

De forma predeterminada, AutoML Tables pondera cada fila de tus datos de entrenamiento de la misma manera: ninguna fila se considera más importante para el entrenamiento que otra.

A veces, puede ser deseable que algunas filas tengan más importancia para el entrenamiento. Por ejemplo, si usa datos de inversión, puede que quieras que los datos asociados con los usuarios que gastan más dinero tengan un mayor impacto en el modelo. Si deseas evitar que un resultado específico esté faltante, puedes ponderar las filas con ese resultado de manera más intensa.

Agrega una columna de ponderación a tu conjunto de datos para darles un peso relativo a las filas. La columna de ponderación debe ser una columna numérica. Se usa para especificar un valor de 0 a 10,000. Los valores más altos indican a AutoML Tables que la fila es más importante cuando se entrena el modelo. Un peso de 0 significa que se ignora la fila. Si incluyes una columna de ponderación, debe contener un valor para cada fila.

Más adelante, cuando revises tu esquema, especifica esta columna como la columna de ponderación. (También puedes usar el campo weightColumnSpecId).

Los esquemas de ponderación personalizados se usan solo para entrenar el modelo; no afectan la evaluación del modelo.

Requisitos para la columna de destino

La columna de destino debe cumplir con los siguientes requisitos:

  • Debe ser categórica o numérica.
  • Si es categórica, debe tener al menos 2 y no más de 500 valores distintos.
  • No se puede anular.

¿Qué sigue?