Procesamiento previo automático de atributos

BigQuery ML realiza el procesamiento previo automático durante el entrenamiento mediante la declaración CREATE MODEL. El procesamiento previo automático consta de la asignación de valor faltante y las transformaciones de atributos.

Para obtener información sobre la compatibilidad del procesamiento previo de atributos en BigQuery ML, consulta Descripción general del procesamiento previo de atributos.

A fin de obtener información sobre las instrucciones y funciones de SQL compatibles para cada tipo de modelo, consulta Recorrido del usuario de extremo a extremo para cada modelo.

Falta de asignación de datos

En las estadísticas, la asignación se usa para reemplazar los datos faltantes con valores sustituidos. Cuando entrenas un modelo en BigQuery ML, los valores NULL se tratan como datos faltantes. Cuando predices resultados en BigQuery ML, puede haber valores faltantes cuando BigQuery ML encuentra un valor NULL o un valor nunca visto anteriormente. BigQuery ML maneja los datos faltantes de manera diferente, según el tipo de datos en la columna.

Tipo de columna Método de asignación
Numérica Tanto en el entrenamiento como en la predicción, los valores NULL de las columnas numéricas se reemplazan por el valor promedio de la columna determinada, como se calcula en la columna de atributos en los datos de entrada originales.
Con codificación One-hot/Multi-hot Tanto en el entrenamiento como en la predicción, los valores NULL en las columnas codificadas se asignan a una categoría adicional que se agrega a los datos. Los datos no vistos anteriormente tienen asignado un peso de 0 durante la predicción.
TIMESTAMP Las columnas TIMESTAMP usan una combinación de métodos de asignación de columnas estandarizadas y con codificación one-hot. Para la columna de tiempo de Unix generada, BigQuery ML reemplaza los valores con el tiempo promedio de Unix en las columnas originales. Para otros valores generados, BigQuery ML los asigna a la categoría NULL correspondiente para cada atributo extraído.
STRUCT Tanto en el entrenamiento como en la predicción, cada campo de STRUCT se asigna según su tipo.

Transformaciones de atributos

De forma predeterminada, BigQuery ML transforma los atributos de entrada de la siguiente manera:

Tipo de datos de entrada Método de transformación Detalles
INT64
NUMERIC
BIGNUMERIC
FLOAT64
Estandarización Para la mayoría de los modelos, BigQuery ML estandariza y centra las columnas numéricas en cero antes de pasarlas al entrenamiento. Las excepciones son modelos de árbol mejorado y de bosque aleatorio, para los que no se produce estandarización, y modelos k-means, en los que la opción STANDARDIZE_FEATURES controla si los atributos numéricos están estandarizados.
BOOL
STRING
BYTES
DATE
DATETIME
TIME
Codificación one-hot Para todas las columnas que no tienen números ni arrays y que no sean TIMESTAMP, BigQuery ML realiza una transformación de codificación one-hot para todos los modelos que no sean modelos de árbol mejorado y de bosque aleatorio. Esta transformación genera un atributo independiente para cada valor único en la columna. La transformación de codificación de etiquetas se aplica para entrenar modelos de árbol mejorado y aleatorios a fin de convertir cada valor único en un valor numérico.
ARRAY Codificado multi-hot Para todas las columnas ARRAY no numéricas, BigQuery ML realiza una transformación de codificación multi-hot. Esta transformación genera un atributo independiente para cada elemento único en el ARRAY.
TIMESTAMP Transformación de marca de tiempo Cuando un modelo de regresión logística o lineal encuentra una columna TIMESTAMP, extrae un conjunto de componentes de TIMESTAMP y realiza una combinación de estandarización y codificación one-hot en el extracto componentes. Para el componente de tiempo Unix en segundos, BigQuery ML utiliza la estandarización. En el caso de los demás componentes, se usa la codificación one-hot.

Para obtener más información, consulta la tabla de transformación de atributos de marca de tiempo a continuación.
STRUCT Expansión de estructura Cuando BigQuery ML encuentra una columna STRUCT, expande los campos dentro de STRUCT para crear una sola columna. Requiere que se nombren todos los campos de STRUCT. No se permiten los STRUCT anidadas. Los nombres de las columnas después de la expansión tienen el formato {struct_name}_{field_name}.
ARRAY de STRUCT Sin transformación
ARRAY de NUMERIC Sin transformación

Transformación del atributo TIMESTAMP

La siguiente tabla muestra los componentes extraídos de columnas TIMESTAMP y el método de transformación correspondiente.

Componente TIMESTAMP Resultado processed_input Método de transformación
Tiempo Unix en segundos [COLUMN_NAME] Estandarización
Día del mes _TS_DOM_[COLUMN_NAME] Codificación one-hot
Día de la semana _TS_DOW_[COLUMN_NAME] Codificación one-hot
Mes del año _TS_MOY_[COLUMN_NAME] Codificación one-hot
Hora del día _TS_HOD_[COLUMN_NAME] Codificación one-hot
Minutos _TS_MOH_[COLUMN_NAME] Codificación one-hot
Semana del año (las semanas comienzan el domingo) _TS_WOY_[COLUMN_NAME] Codificación one-hot
Año _TS_YEAR_[COLUMN_NAME] Codificación one-hot

Codificación de atributos de categorías

Para los atributos que tienen codificación one-hot, puedes especificar un método de codificación predeterminado diferente con la opción del modelo CATEGORY_ENCODING_METHOD. Para los modelos lineales generalizados (GLM), puedes establecer CATEGORY_ENCODING_METHOD como uno de los siguientes valores:

Codificación one-hot

La codificación one-hot asigna cada categoría que un atributo tiene a su propio atributo binario, en el que 0 representa la ausencia de la función y 1 representa la presencia (conocida como una variable de prueba). Esta asignación crea N columnas de atributos nuevas, en las que N es la cantidad de categorías únicas de la función en la tabla de entrenamiento.

Por ejemplo, supongamos que tu tabla de entrenamiento tiene una columna de atributos que se llama fruit con las categorías Apple, Banana y Cranberry, como la siguiente:

Fila fruit
1 Apple
2 Banana
3 Cranberry

En este caso, la opción CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' transforma la tabla en la siguiente representación interna:

Fila fruit_Apple fruit_Banana fruit_Cranberry
1 1 0 0
2 0 1 0
3 0 0 1

La codificación one-hot es compatible con los modelos de regresión logística y lineal y de árbol mejorado.

Codificación de prueba

La codificación de prueba es similar a la codificación one-hot, en la que un atributo categórico se transforma en un conjunto de variables de marcador de posición. La codificación ficticia usa N-1 variables de marcador de posición en lugar de N variables de marcador de posición para representar N categorías de un atributo. Por ejemplo, si configuras CATEGORY_ENCODING_METHOD como 'DUMMY_ENCODING' para la misma columna de atributos fruit que se muestra en el ejemplo de codificación one-hot anterior, la tabla se transforma en la siguiente representación interna:

Fila fruit_Apple fruit_Banana
1 1 0
2 0 1
3 0 0

La categoría con la mayor cantidad de casos en el conjunto de datos de entrenamiento se descarta. Cuando hay varias categorías con más casos, se descarta una categoría aleatoria dentro de ese conjunto.

El conjunto final de pesos de ML.WEIGHTS aún incluye la categoría descartada, pero su peso siempre es 0.0. Para ML.ADVANCED_WEIGHTS, el error y el valor p estándar de la variable descartada son NaN.

Si se usa warm_start en un modelo que se entrenó inicialmente con 'DUMMY_ENCODING', se descarta la misma variable de marcador de posición de la primera ejecución de entrenamiento. Los modelos no pueden cambiar los métodos de codificación entre ejecuciones de entrenamiento.

La codificación de prueba es compatible con los modelos de regresión logística y lineal.

Codificación de etiquetas

La codificación de etiquetas transforma el valor de un atributo categórico en un valor INT64 en [0, <number of categories>].

Por ejemplo, si tenías un conjunto de datos de libros como el siguiente:

Título Género
Libro 1 Fantasía
Libro 2 Cocina
Libro 3 Historial
Libro 4 Cocina

Los valores codificados en etiquetas pueden ser similares a los siguientes:

Título Género (texto) Género (numérico)
Libro 1 Fantasía 1
Libro 2 Cocina 2
Libro 3 Historial 3
Libro 4 Cocina 2

El vocabulario de codificación está en orden alfabético. Los valores y las categorías de NULL que no están en el vocabulario se codifican en 0.

La codificación de etiquetas es compatible con los modelos de árbol mejorado.

Codificación de destino

La codificación de destino reemplaza el valor del atributo categórico con la probabilidad del objetivo para los modelos de clasificación o por el valor esperado del objetivo para los modelos de regresión.

Las características con codificación de destino pueden verse similares al siguiente ejemplo:

# Classification model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, target_1) |     0.5              |
| (category_1, target_2) |     0.5              |
| (category_2, target_1) |     0.0              |
+------------------------+----------------------+

# Regression model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, 2)        |     2.5              |
| (category_1, 3)        |     2.5              |
| (category_2, 1)        |     1.5              |
| (category_2, 2)        |     1.5              |
+------------------------+----------------------+

La codificación de destino es compatible con los modelos de árbol mejorado.