Pré-processamento automático de atributos

O BigQuery ML realiza o pré-processamento automático durante o treinamento usando a instrução CREATE MODEL. O pré-processamento automático consiste na imputação de valor ausente e nas transformações de atributo.

Para informações sobre suporte a pré-processamento de atributos no BigQuery ML, consulte Visão geral do pré-processamento de atributos.

Para informações sobre as instruções e funções SQL compatíveis com cada tipo de modelo, consulte Jornada do usuário completa de cada modelo.

Imputação de dados ausente

Em estatística, a imputação é usada para substituir dados ausentes por valores substitutos. Quando você treina um modelo no BigQuery ML, os valores NULL são tratados como dados ausentes. Quando você prevê resultados no BigQuery ML, podem ocorrer valores ausentes quando o BigQuery ML encontra um valor NULL ou um valor não visto anteriormente. O BigQuery ML lida com os dados ausentes de maneira diferente, com base no tipo de dados na coluna.

Tipo de coluna Método de imputação
Numérico No treinamento e na previsão, os valores NULL em colunas numéricas são substituídos pelo valor médio da coluna especificada, conforme calculado pela coluna de atributo nos dados de entrada originais.
Codificação one-hot/multi-hot Seja no treinamento ou na predição, os valores NULL nas colunas de codificação são mapeados para uma categoria extra que é adicionada aos dados. Os dados não vistos anteriormente recebem peso 0 durante a predição.
TIMESTAMP Colunas TIMESTAMP usam uma combinação de métodos de imputação de colunas padronizadas e de codificação one-hot. Para a coluna de tempo do unix gerada, o BigQuery ML substitui os valores pelo tempo médio do unix das colunas originais. Para os outros valores gerados, o BigQuery ML os atribui à respectiva categoria NULL de cada recurso extraído.
STRUCT Tanto no treinamento quanto na previsão, cada campo de STRUCT é imputado de acordo com seu tipo.

Transformações de atributos

Por padrão, o BigQuery ML transforma os recursos de entrada da seguinte maneira:

Tipo de dados de entrada Método de transformação Detalhes
INT64
NUMERIC
BIGNUMERIC
FLOAT64
Padronização (em inglês) Para a maioria dos modelos, o BigQuery ML padroniza e centraliza colunas numéricas em zero antes de passá-las para treinamento. As exceções são os modelos de árvore otimizada e da floresta aleatória, em que não ocorre uma padronização, e os modelos de k-means, em que a opção STANDARDIZE_FEATURES controla se os recursos numéricos são padronizados.
BOOL
STRING
BYTES
DATE
DATETIME
TIME
Codificação one-hot (em inglês) Para todas as colunas não numéricas e não matrizes que não sejam TIMESTAMP, o BigQuery ML executa uma transformação de codificação one-hot em todos os modelos, exceto nos modelos de árvore otimizada e floresta aleatória. Essa transformação gera um recurso separado para cada valor exclusivo na coluna. A transformação de codificação de rótulos é aplicada para treinar modelos de árvore aleatória e floresta aleatória para converter cada valor exclusivo em um valor numérico.
ARRAY Codificação multi-hot Para todas as colunas ARRAY não numéricas, o BigQuery ML executa uma transformação de codificação multi-hot. Essa transformação gera um recurso separado para cada elemento exclusivo na ARRAY.
TIMESTAMP Transformação de carimbo de data/hora Quando um modelo de regressão linear ou logística encontra uma coluna TIMESTAMP, ele extrai um conjunto de componentes do TIMESTAMP e executa uma combinação de padronização e codificação one-hot na extração. Para o componente de tempo em segundos do Unix, o BigQuery ML usa a padronização. Para todos os outros componentes, ele usa a codificação one-hot.

Para mais informações, consulte a tabela de transformação de recursos de carimbo de data/hora abaixo.
STRUCT Expansão de struct Quando o BigQuery ML encontra uma coluna STRUCT, ele expande os campos dentro da STRUCT para criar uma única coluna. Exige que todos os campos de STRUCT sejam nomeados. STRUCTs aninhados não são permitidos. Os nomes das colunas após a expansão estão no formato {struct_name}_{field_name}.
ARRAY de STRUCT Sem transformação
ARRAY de NUMERIC Sem transformação

Transformação de atributos TIMESTAMP

A tabela a seguir mostra os componentes extraídos de TIMESTAMPs e o método de transformação correspondente.

Componente TIMESTAMP Resultado processed_input Método de transformação
Tempo do Unix em segundos [COLUMN_NAME] Padronização
Dia do mês _TS_DOM_[COLUMN_NAME] Codificação one-hot
Dia da semana _TS_DOW_[COLUMN_NAME] Codificação one-hot
Mês do ano _TS_MOY_[COLUMN_NAME] Codificação one-hot
Hora do dia _TS_HOD_[COLUMN_NAME] Codificação one-hot
Minuto de hora _TS_MOH_[COLUMN_NAME] Codificação one-hot
Semana do ano (as semanas começam no domingo) _TS_WOY_[COLUMN_NAME] Codificação one-hot
Ano _TS_YEAR_[COLUMN_NAME] Codificação one-hot

Codificação de recursos da categoria

Para recursos que são codificados com uma só vez, é possível especificar um método de codificação padrão diferente usando a opção de modelo CATEGORY_ENCODING_METHOD. Para modelos de modelos lineares generalizados (GLM), defina CATEGORY_ENCODING_METHOD como um dos seguintes valores:

Codificação one-hot

A codificação one-hot mapeia cada categoria que um recurso tem para o próprio recurso binário, em que 0 representa a ausência do recurso e 1 representa a presença (conhecida como variável dummy). Esse mapeamento cria N novas colunas de atributos, em que N é o número de categorias únicas do recurso na tabela de treinamento.

Por exemplo, suponha que sua tabela de treinamento tenha uma coluna de recursos chamada fruit com as categorias Apple, Banana e Cranberry, como a seguinte:

Linha fruta
1 Apple
2 Banana
3 Cranberry

Nesse caso, a opção CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' transforma a tabela para a seguinte representação interna:

Linha fruit_Apple fruit_Banana fruit_Cranberry
1 1 0 0
2 0 1 0
3 0 0 1

A codificação one-hot é compatível com modelos de regressão linear e logística e de árvore otimizada.

Codificação dummy

A codificação dummy é semelhante à codificação one-hot, em que um recurso categórico é transformado em um conjunto de variáveis de marcador. A codificação dummy usa variáveis de marcador N-1 em vez de variáveis N para representar categorias N de um recurso. Por exemplo, se você definir CATEGORY_ENCODING_METHOD como 'DUMMY_ENCODING' para a mesma coluna de atributos fruit mostrada no exemplo de codificação one-hot anterior, a tabela será transformada para a seguinte representação interna:

Linha fruit_Apple fruit_Banana
1 1 0
2 0 1
3 0 0

A categoria com mais ocorrências no conjunto de dados de treinamento é descartada. Quando várias categorias têm a maioria das ocorrências, uma categoria aleatória dentro desse conjunto é descartada.

O conjunto final de pesos de ML.WEIGHTS ainda inclui a categoria descartada, mas é sempre 0.0. Para ML.ADVANCED_WEIGHTS, o erro padrão e o valor-p da variável descartada é NaN.

Se warm_start for usado em um modelo que foi treinado inicialmente com 'DUMMY_ENCODING', a mesma variável de marcador será descartada da primeira execução de treinamento. Os modelos não podem alterar métodos de codificação entre execuções de treinamento.

A codificação fictícia é compatível com modelos de regressão linear e logística.

Codificação de rótulos

A codificação de rótulos transforma o valor de um atributo categórico em um valor INT64 em [0, <number of categories>].

Por exemplo, se você tiver um conjunto de dados de livros como este:

Título Gênero
Livro 1 Fantasia
Livro 2 Culinária
Livro 3 Histórico
Livro 4 Culinária

Os valores codificados no rótulo podem ser semelhantes aos seguintes:

Título Gênero (texto) Gênero (numérico)
Livro 1 Fantasia 1
Livro 2 Culinária 2
Livro 3 Histórico 3
Livro 4 Culinária 2

O vocabulário de codificação é classificado em ordem alfabética. Valores e categorias de NULL que não estão no vocabulário são codificados para 0.

A codificação de rótulos é compatível com modelos de árvore otimizada.

Codificação de destino

A codificação de destino substitui o valor do atributo categórico pela probabilidade de o destino para modelos de classificação ou pelo valor esperado do destino para modelos de regressão.

Os recursos que foram codificados como destino podem ser semelhantes ao exemplo a seguir:

# 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              |
+------------------------+----------------------+

A codificação de destino é compatível com modelos de árvore otimizada.