Pré-processamento automático de caraterísticas
O BigQuery ML realiza o pré-processamento automático durante a preparação através da declaração CREATE MODEL.
O pré-processamento automático consiste na imputação de valores em falta e nas transformações de caraterísticas.
Para informações sobre o suporte de pré-processamento de caraterísticas no BigQuery ML, consulte a vista geral do pré-processamento de caraterísticas.
Imputação de dados em falta
Em estatística, a imputação é usada para substituir dados em falta por valores substituídos. Quando treina um modelo no BigQuery ML, os valores NULL são tratados como dados em falta. Quando prevê resultados no BigQuery ML, podem ocorrer valores em falta quando o BigQuery ML encontra um valor NULL
ou um valor nunca antes visto. O BigQuery ML processa os dados em falta de forma diferente, com base no tipo de dados na coluna.
| Tipo de coluna | Método de imputação | 
|---|---|
| Numérico | Tanto na preparação como na previsão, os valores NULLnas colunas numéricas são substituídos pelo valor médio da coluna fornecida, calculado pela coluna de funcionalidades nos dados de entrada originais. | 
| Codificado com disparo único/disparos múltiplos | Na preparação e na previsão, os valores NULLnas colunas codificadas são mapeados para uma categoria adicional que é adicionada aos dados. Os dados nunca vistos anteriormente são atribuídos a um peso de 0 durante a previsão. | 
| TIMESTAMP | As colunas TIMESTAMPusam uma combinação de métodos de imputação
    de colunas padronizadas e codificadas a quente. Para a coluna de tempo Unix gerada, o BigQuery ML substitui os valores pelo tempo Unix médio nas colunas originais. Para outros valores gerados,
    o BigQuery ML atribui-os à respetiva categoriaNULLpara cada funcionalidade extraída. | 
| STRUCT | No treino e na previsão, cada campo do STRUCTé imputado de acordo com o respetivo tipo. | 
Transformações de funcionalidades
Por predefinição, o BigQuery ML transforma as caraterísticas de entrada da seguinte forma:
| Tipo de dados de entrada | Método de transformação | Detalhes | 
|---|---|---|
| INT64NUMERICBIGNUMERICFLOAT64 | Normalização | Para a maioria dos modelos, o BigQuery ML padroniza e centra as colunas numéricas em zero antes de as passar para a preparação. As exceções
    são os modelos de árvore melhorada e floresta aleatória, para os quais não ocorre
    normalização, e os modelos de k-means, em que a opção STANDARDIZE_FEATUREScontrola se as caraterísticas numéricas são normalizadas. | 
| BOOLSTRINGBYTESDATEDATETIMETIME | Codificado com um disparo único | Para todas as colunas não numéricas e não de matrizes, exceto TIMESTAMP, o BigQuery ML
      executa uma transformação de codificação one-hot para todos os modelos, exceto
      os modelos de árvores de decisão otimizadas e de florestas aleatórias. Esta transformação gera
      uma funcionalidade separada para cada valor único na coluna. A transformação de codificação de etiquetas é aplicada para formar modelos de árvores melhoradas e de florestas aleatórias para converter cada valor único num valor numérico. | 
| ARRAY | Codificado com vários disparos | Para todas as colunas ARRAYnão numéricas, o BigQuery ML
      executa uma transformação de codificação multi-hot. Esta transformação gera
      uma funcionalidade separada para cada elemento único noARRAY. | 
| TIMESTAMP | Transformação de data/hora | Quando um modelo de regressão linear ou logística encontra uma coluna TIMESTAMP, extrai um conjunto de componentes daTIMESTAMPe executa uma combinação de normalização e codificação one-hot nos componentes extraídos. Para o componente de tempo epoch Unix em segundos, o BigQuery ML usa a normalização. Para todos os outros componentes, usa a codificação one-hot.Para mais informações, consulte a seguinte tabela de transformação de caraterísticas de data/hora. | 
| STRUCT | Expansão de estruturas | Quando o BigQuery ML encontra uma coluna STRUCT, expande os campos no interior deSTRUCTpara criar uma única coluna. Requer que todos os campos deSTRUCTsejam denominados. Não são permitidosSTRUCTs aninhados. Os nomes das colunas após a expansão estão no formato{struct_name}_{field_name}. | 
| ARRAYdeSTRUCT | Sem transformação | |
| ARRAYdeNUMERIC | Sem transformação | 
TIMESTAMP transformação de funcionalidades
A tabela seguinte mostra os componentes extraídos das colunas TIMESTAMP e o método de transformação correspondente.
| TIMESTAMPcomponente | processed_inputresultados | Método de transformação | 
|---|---|---|
| Tempo de época Unix em segundos | [COLUMN_NAME] | Normalização | 
| Dia do mês | _TS_DOM_[COLUMN_NAME] | Codificação de disparo único | 
| Dia da semana | _TS_DOW_[COLUMN_NAME] | Codificação de disparo único | 
| Mês do ano | _TS_MOY_[COLUMN_NAME] | Codificação de disparo único | 
| Hora do dia | _TS_HOD_[COLUMN_NAME] | Codificação de disparo único | 
| Minuto da hora | _TS_MOH_[COLUMN_NAME] | Codificação de disparo único | 
| Semana do ano (as semanas começam ao domingo) | _TS_WOY_[COLUMN_NAME] | Codificação de disparo único | 
| Ano | _TS_YEAR_[COLUMN_NAME] | Codificação de disparo único | 
Codificação de caraterísticas de categorias
Para funcionalidades com codificação one-hot, pode especificar um método de codificação predefinido diferente através da opção do modelo CATEGORY_ENCODING_METHOD. Para os modelos lineares generalizados (GLM), pode definir CATEGORY_ENCODING_METHOD para um dos seguintes valores:
Codificação de disparo único
A codificação one-hot mapeia cada categoria que uma funcionalidade tem para a sua própria funcionalidade binária, em que 0 representa a ausência da funcionalidade e 1 representa a presença (conhecida como uma variável fictícia). Este mapeamento cria N colunas de novas funcionalidades, em que N é o número de categorias únicas para a funcionalidade na tabela de preparação.
Por exemplo, suponhamos que a sua tabela de preparação tem uma coluna de caraterísticas denominada fruit com as categorias Apple, Banana e Cranberry, como as seguintes:
| Linha | fruta | 
|---|---|
| 1 | Apple | 
| 2 | Banana | 
| 3 | Arando | 
Neste caso, a opção CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' transforma a tabela na 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 de disparo único é suportada por modelos de regressão linear e logística e árvore de reforço.
Codificação fictícia
A codificação fictícia é semelhante à codificação de disparo único, em que uma caraterística por categoria é transformada num conjunto de variáveis de marcadores de posição. A codificação fictícia usa variáveis de marcador de posição N-1 em vez de variáveis de marcador de posição N para representar categorias N de uma funcionalidade.
Por exemplo, se definir CATEGORY_ENCODING_METHOD como 'DUMMY_ENCODING' para a mesma coluna de caraterísticas fruit apresentada no exemplo de codificação one-hot anterior, a tabela é transformada na 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 preparação é ignorada. Quando várias categorias têm o maior número de ocorrências, é eliminada uma categoria aleatória desse conjunto.
O conjunto final de ponderações de
ML.WEIGHTS
continua a incluir a categoria excluída, mas a respetiva ponderação é sempre 0.0. Para
ML.ADVANCED_WEIGHTS,
o erro padrão e o valor p da variável eliminada são NaN.
Se warm_start for usado num modelo que foi inicialmente preparado com 'DUMMY_ENCODING', a mesma variável de marcador de posição é ignorada na primeira execução de preparação. Os modelos não podem alterar os métodos de codificação entre execuções de preparação.
A codificação fictícia é suportada por modelos de regressão linear e logística.
Codificação das etiquetas
A codificação de etiquetas transforma o valor de uma caraterística categórica num valor INT64 em [0, <number of categories>].
Por exemplo, se tivesse um conjunto de dados de livros como o seguinte:
| Título | Género | 
|---|---|
| Livro 1 | Fantasia | 
| Livro 2 | Cozinhar | 
| Livro 3 | Histórico | 
| Livro 4 | Cozinhar | 
Os valores codificados da etiqueta podem ter um aspeto semelhante ao seguinte:
| Título | Género (texto) | Género (numérico) | 
|---|---|---|
| Livro 1 | Fantasia | 1 | 
| Livro 2 | Cozinhar | 2 | 
| Livro 3 | Histórico | 3 | 
| Livro 4 | Cozinhar | 2 | 
O vocabulário de codificação é ordenado alfabeticamente. Os valores e as categorias NULL que não estão no vocabulário são codificados como 0.
A codificação de etiquetas é suportada por modelos de árvores melhoradas.
Codificação de destino
A codificação de destino substitui o valor da caraterística categórica pela probabilidade de o destino para modelos de classificação ou pelo valor esperado do destino para modelos de regressão.
As funcionalidades que foram codificadas por destino podem ter um aspeto semelhante ao seguinte exemplo:
# 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 é suportada por modelos de árvores melhoradas.
O que se segue?
Para mais informações acerca das funções e declarações SQL suportadas para modelos que suportam o pré-processamento automático de caraterísticas, consulte os seguintes documentos:
- Percursos do utilizador completos para modelos de ML
- Percursos do utilizador completos para modelos de previsão de séries cronológicas