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.