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. STRUCT s 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 TIMESTAMP
s 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.