Preprocesamiento automático de funciones
BigQuery ML realiza un preprocesamiento automático durante el entrenamiento mediante la instrucción CREATE MODEL
.
El preprocesamiento automático consta de imputación de valores que faltan y transformaciones de características.
Para obtener información sobre la compatibilidad con el preprocesamiento de características en BigQuery ML, consulta el resumen del preprocesamiento de características.
Imputación de datos que faltan
En estadística, la imputación se usa para sustituir los datos que faltan por valores sustituidos. Cuando entrenas un modelo en BigQuery ML, los valores NULL
se tratan como datos que faltan. Cuando predices resultados en BigQuery ML, pueden producirse valores que faltan cuando BigQuery ML encuentra un valor NULL
o un valor que no se ha visto antes. BigQuery ML gestiona los datos que faltan de forma diferente en función del tipo de datos de la columna.
Tipo de columna | Método de imputación |
---|---|
Numérico | Tanto en el entrenamiento como en la predicción, los valores NULL de las columnas numéricas se sustituyen por el valor medio de la columna en cuestión, calculado por la columna de características de los datos de entrada originales. |
Codificación one-hot o multi-hot | Tanto en el entrenamiento como en la predicción, los valores NULL de las columnas codificadas se asignan a una categoría adicional que se añade a los datos. A los datos que no se han visto antes se les asigna un peso de 0 durante la predicción. |
TIMESTAMP |
Las columnas TIMESTAMP usan una combinación de métodos de imputación
de columnas estandarizadas y codificadas mediante codificación one-hot. En el caso de la columna de hora Unix generada, BigQuery ML sustituye los valores por la media de la hora Unix de las columnas originales. En el caso de otros valores generados, BigQuery ML los asigna a la categoría NULL correspondiente de cada característica extraída. |
STRUCT |
Tanto en el entrenamiento como en la predicción, cada campo de STRUCT
se imputa según su tipo. |
Transformaciones de funciones
De forma predeterminada, BigQuery ML transforma las funciones de entrada de la siguiente manera:
Tipo de datos de entrada | Método de transformación | Detalles |
---|---|---|
INT64 NUMERIC BIGNUMERIC FLOAT64 |
Estandarización | En la mayoría de los modelos, BigQuery ML estandariza y centra las columnas numéricas en cero antes de usarlas en el entrenamiento. Las excepciones son los modelos de árbol de decisión reforzado y de bosque aleatorio, en los que no se produce ninguna estandarización, y los modelos de k-means, en los que la opción STANDARDIZE_FEATURES controla si las características numéricas se estandarizan. |
BOOL STRING BYTES DATE DATETIME TIME |
Codificación one-hot | En el caso de todas las columnas no numéricas y no de matriz que no sean TIMESTAMP , BigQuery ML realiza una transformación de codificación one-hot para todos los modelos, excepto los de árbol de refuerzo y de bosque aleatorio. Esta transformación genera
una función independiente para cada valor único de la columna. La transformación de codificación de etiquetas
se aplica para entrenar modelos de árbol de refuerzo y de bosque aleatorio
para convertir cada valor único en un valor numérico. |
ARRAY |
Codificación multi-hot | En todas las columnas ARRAY no numéricas, BigQuery ML realiza una transformación de codificación multi-hot. Esta transformación genera
una función independiente para cada elemento único del ARRAY . |
TIMESTAMP |
Transformación de marca de tiempo | Cuando un modelo de regresión lineal o logística se encuentra con una columna TIMESTAMP , extrae un conjunto de componentes de la TIMESTAMP y realiza una combinación de estandarización y codificación one-hot en los componentes extraídos. Para el componente de tiempo de época de Unix en segundos, BigQuery ML usa la estandarización. En el resto de los componentes, se usa la codificación one-hot.Para obtener más información, consulta la siguiente tabla de transformación de características de marca de tiempo. |
STRUCT |
Expansión de struct | Cuando BigQuery ML encuentra una columna STRUCT , expande los campos de su interior para crear una sola columna.STRUCT Requiere que se asignen nombres a todos los campos de STRUCT . No se permiten STRUCT s 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 de la función TIMESTAMP
En la siguiente tabla se muestran los componentes extraídos de las columnas TIMESTAMP
y el método de transformación correspondiente.
Componente TIMESTAMP |
processed_input resultado |
Método de transformación |
---|---|---|
Tiempo de época de 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 |
Minuto de la hora | _TS_MOH_[COLUMN_NAME] |
Codificación one-hot |
Semana del año (las semanas empiezan el domingo) | _TS_WOY_[COLUMN_NAME] |
Codificación one-hot |
Año | _TS_YEAR_[COLUMN_NAME] |
Codificación one-hot |
Codificación de funciones de categoría
En el caso de las características que se codifican con un solo valor activo, puedes especificar otro método de codificación predeterminado mediante la opción de modelo CATEGORY_ENCODING_METHOD
. En el caso de los modelos lineales generalizados (GLM), puedes asignar a CATEGORY_ENCODING_METHOD
uno de los siguientes valores:
Codificación one-hot
La codificación one-hot asigna a cada categoría que tiene una característica su propia característica binaria, donde 0
representa la ausencia de la característica y 1
representa la presencia (conocida como variable ficticia). Esta asignación crea N
columnas de características nuevas, donde N
es el número de categorías únicas de la característica en la tabla de entrenamiento.
Por ejemplo, supongamos que tu tabla de entrenamiento tiene una columna de características llamada fruit
con las categorías Apple
, Banana
y Cranberry
, como se muestra a continuación:
Acceso | fruta |
---|---|
1 | Apple |
2 | Amarillo huevo |
3 | Arándano rojo |
En este caso, la opción CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING'
transforma la tabla en la siguiente representación interna:
Acceso | 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 lineal y logística y de árbol de refuerzo.
Codificación ficticia
La codificación ficticia es similar a la codificación one-hot, en la que una característica categórica se transforma en un conjunto de variables de marcador de posición. La codificación ficticia usa variables de marcador de posición N-1
en lugar de variables de marcador de posición N
para representar las categorías N
de una función.
Por ejemplo, si asignas el valor CATEGORY_ENCODING_METHOD
a 'DUMMY_ENCODING'
en la misma columna de características fruit
que se muestra en el ejemplo de codificación one-hot anterior, la tabla se transforma en la siguiente representación interna:
Acceso | fruit_Apple | fruit_Banana |
---|---|---|
1 | 1 | 0 |
2 | 0 | 1 |
3 | 0 | 0 |
Se elimina la categoría con más apariciones en el conjunto de datos de entrenamiento. Cuando varias categorías tienen el mayor número de ocurrencias, se elimina una categoría aleatoria de ese conjunto.
El conjunto final de pesos de
ML.WEIGHTS
sigue incluyendo la categoría eliminada, pero su peso siempre es 0.0
. En el caso de ML.ADVANCED_WEIGHTS
,
el error estándar y el valor p de la variable eliminada son NaN
.
Si se usa warm_start
en un modelo que se entrenó inicialmente con 'DUMMY_ENCODING'
, la misma variable de marcador de posición se elimina de la primera ejecución del entrenamiento. Los modelos no pueden cambiar los métodos de codificación entre ejecuciones de entrenamiento.
La codificación ficticia es compatible con los modelos de regresión lineal y logística.
Codificación de etiquetas
La codificación de etiquetas transforma el valor de una característica categórica en un INT64
en [0, <number of categories>]
.
Por ejemplo, si tuvieras 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 de la etiqueta 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 se ordena alfabéticamente. Los valores y las categorías de NULL
que no están en el vocabulario se codifican como 0
.
Los modelos de árbol potenciado admiten la codificación de etiquetas.
Codificación de destino
La codificación de destino sustituye el valor de la función categórica por la probabilidad del destino en los modelos de clasificación o por el valor esperado del destino en los modelos de regresión.
Las funciones que se han codificado por objetivo pueden tener un aspecto similar al del 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 potenciado.
Siguientes pasos
Para obtener más información sobre las instrucciones y funciones de SQL admitidas en los modelos que admiten el preprocesamiento automático de características, consulta los siguientes documentos:
- Recorridos de usuario integrales para modelos de aprendizaje automático
- Recorridos de usuario integrales para modelos de previsión de series temporales