Instrução CREATE MODEL
Para criar um modelo no BigQuery, use a instrução CREATE
MODEL
do BigQuery ML. Essa instrução é semelhante à instrução DDL CREATE TABLE
. Quando você executa uma consulta SQL padrão que contém uma instrução CREATE MODEL
, é gerado um job de consulta que processa a consulta.
Sintaxe CREATE MODEL
{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL} model_name [TRANSFORM (select_list)] [OPTIONS(model_option_list)] [AS query_statement] model_option_list: MODEL_TYPE = { 'LINEAR_REG' | 'LOGISTIC_REG' | 'KMEANS' | 'TENSORFLOW' | 'MATRIX_FACTORIZATION' | 'AUTOML_CLASSIFIER' | 'AUTOML_REGRESSOR' | 'BOOSTED_TREE_CLASSIFIER' | 'BOOSTED_TREE_REGRESSOR' | 'DNN_CLASSIFIER' | 'DNN_REGRESSOR' } [, INPUT_LABEL_COLS = string_array ] [, OPTIMIZE_STRATEGY = { 'AUTO_STRATEGY' | 'BATCH_GRADIENT_DESCENT' | 'NORMAL_EQUATION' } ] [, L1_REG = float64_value ] [, L2_REG = float64_value ] [, MAX_ITERATIONS = int64_value ] [, LEARN_RATE_STRATEGY = { 'LINE_SEARCH' | 'CONSTANT' } ] [, LEARN_RATE = float64_value ] [, EARLY_STOP = { TRUE | FALSE } ] [, MIN_REL_PROGRESS = float64_value ] [, DATA_SPLIT_METHOD = { 'AUTO_SPLIT' | 'RANDOM' | 'CUSTOM' | 'SEQ' | 'NO_SPLIT' } ] [, DATA_SPLIT_EVAL_FRACTION = float64_value ] [, DATA_SPLIT_COL = string_value ] [, LS_INIT_LEARN_RATE = float64_value ] [, WARM_START = { TRUE | FALSE } ] [, AUTO_CLASS_WEIGHTS = { TRUE | FALSE } ] [, CLASS_WEIGHTS = struct_array ] [, NUM_CLUSTERS = int64_value ] [, KMEANS_INIT_METHOD = { 'RANDOM' | 'KMEANS++' | 'CUSTOM' } ] [, KMEANS_INIT_COL = string_value ] [, DISTANCE_TYPE = { 'EUCLIDEAN' | 'COSINE' } ] [, STANDARDIZE_FEATURES = { TRUE | FALSE } ] [, MODEL_PATH = string_value ] [, BUDGET_HOURS = float64_value ] [, FEEDBACK_TYPE = {'EXPLICIT' | 'IMPLICIT'} ] [, NUM_FACTORS = int64_value ] [, USER_COL = string_value ] [, ITEM_COL = string_value ] [, RATING_COL = string_value ] [, WALS_ALPHA = float64_value ] [, BOOSTER_TYPE = { 'gbtree' | 'dart'} ] [, NUM_PARALLEL_TREE = int64_value ] [, DART_NORMALIZE_TYPE = { 'tree' | 'forest'} ] [, TREE_METHOD = { 'auto' | 'exact' | 'approx' | 'hist'} ] [, MIN_TREE_CHILD_WEIGHT = float64_value ] [, COLSAMPLE_BYTREE = float64_value ] [, COLSAMPLE_BYLEVEL = float64_value ] [, COLSAMPLE_BYNODE = float64_value ] [, MIN_SPLIT_LOSS = float64_value ] [, MAX_TREE_DEPTH = int64_value ] [, SUBSAMPLE = float64_value ]) [, ACTIVATION_FN = { 'RELU' | 'RELU6' | 'CRELU' | 'ELU' | 'SELU' | 'SIGMOID' | 'TANH' } ] [, BATCH_SIZE = int64_value ] [, DROPOUT = float64_value ] [, HIDDEN_UNITS = int_array ] [, OPTIMIZER = { 'ADAGRAD' | 'ADAM' | 'FTRL' | 'RMSPROP' | 'SGD' } ] [, TIME_SERIES_TIMESTAMP_COL = string_value ] [, TIME_SERIES_DATA_COL = string_value ] [, TIME_SERIES_ID_COL = string_value ] [, HORIZON = int64_value ] [, AUTO_ARIMA = { TRUE | FALSE } ] [, AUTO_ARIMA_MAX_ORDER = int64_value ] [, NON_SEASONAL_ORDER = (int64_value, int64_value, int64_value) ] [, DATA_FREQUENCY = { 'AUTO_FREQUENCY' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' } ] [, INCLUDE_DRIFT = { TRUE | FALSE } ] [, HOLIDAY_REGION = { 'GLOBAL' | 'NA' | 'JAPAC' | 'EMEA' | 'LAC' | 'AE' | ... } ]
Nem todas as opções são aplicáveis a todos os tipos de modelo. Para modelos do TensorFlow, consulte a instrução CREATE MODEL para modelos do TensorFlow. Para modelos do AutoML Tables, consulte a instrução CREATE MODEL para modelos do AutoML Tables.
CREATE MODEL
Cria e treina um modelo novo no conjunto de dados especificado. Se o nome do modelo existir, CREATE MODEL
retornará um erro.
CREATE MODEL IF NOT EXISTS
Cria e treina um modelo novo somente se o modelo não existir no conjunto de dados especificado.
CREATE OR REPLACE MODEL
Cria e treina um modelo e substitui um modelo atual com o mesmo nome no conjunto de dados especificado.
model_name
model_name
é o nome do modelo que você está criando ou substituindo. O nome do modelo precisa ser exclusivo por conjunto de dados: nenhum outro modelo ou tabela pode ter o mesmo nome.
O nome do modelo precisa seguir as mesmas regras de nomenclatura de uma tabela do BigQuery. Um nome de modelo pode:
- conter até 1.024 caracteres;
- conter letras (maiúsculas e minúsculas), números e sublinhados;
model_name
não diferencia maiúsculas de minúsculas.
Se você não tiver um projeto padrão configurado, preceda o nome do modelo com o ID do projeto no seguinte formato, incluindo os acentos graves: `[PROJECT_ID].[DATASET].[MODEL]`. Por exemplo, `myproject.mydataset.mymodel`.
TRANSFORM
TRANSFORM permite especificar todo o pré-processamento durante a criação do modelo e aplicá-lo automaticamente durante a previsão e a avaliação.
Por exemplo, é possível criar o seguinte modelo:
CREATE OR REPLACE MODEL m
TRANSFORM(ML.FEATURE_CROSS(STRUCT(f1, f2)) as cross_f,
ML.QUANTILE_BUCKETIZE(f3) OVER() as buckets,
label_col)
OPTIONS(model_type=’linear_reg’, input_label_cols=['label_col'])
AS SELECT * FROM t
Durante a previsão, não é necessário pré-processar a entrada novamente, e as mesmas transformações são restauradas automaticamente:
SELECT * FROM ML.PREDICT(MODEL m, (SELECT f1, f2, f3 FROM table))
Quando a cláusula TRANSFORM
está presente, apenas colunas de saída da cláusula TRANSFORM
são usadas no treinamento. Todos os resultados de query_statement
que não aparecem na cláusula TRANSFORM
são ignorados.
As colunas de entrada da cláusula TRANSFORM
são o resultado de query_statement
.
Assim, a entrada final usada no treinamento é o conjunto de colunas geradas pela seguinte consulta:
SELECT (select_list) FROM (query_statement);
As colunas de entrada da cláusula TRANSFORM
podem ser do tipo SIMPLE ou ARRAY do tipo SIMPLE. Os tipos SIMPLE são tipos de dados não STRUCT e não ARRAY.
Na previsão (ML.PREDICT
), os usuários só precisam passar as colunas originais de query_statement
que são usadas dentro da cláusula TRANSFORM
.
As colunas descartadas em TRANSFORM
não precisam ser fornecidas durante a previsão.
TRANSFORM
é aplicado automaticamente aos dados de entrada durante a previsão, inclusive as estatísticas usadas em funções analíticas de ML (por exemplo, ML.QUANTILE_BUCKETIZE
).
select_list
É possível passar colunas de query_statement
pelo treinamento de modelo sem transformação usando *
, * EXCEPT()
, ou listando os nomes das colunas diretamente.
Nem todas as colunas de query_statement
precisam aparecer na cláusula TRANSFORM
, então é possível descartar colunas que aparecem em query_statement
omitindo-as da cláusula TRANSFORM
.
É possível transformar entradas de query_statement
usando expressões em select_list
. select_list
é semelhante a uma instrução SELECT
normal.
select_list
suporta a seguinte sintaxe:
*
* EXCEPT()
* REPLACE()
<var>expression</var>
<var>expression</var>.*
Em select_list
, não pode constar o seguinte:
- Funções de agregação.
- Funções analíticas sem ML. É possível encontrar todas as funções de análise de ML em funções de pré-processamento
- UDFs.
- Subconsultas.
- Colunas anônimas. Por exemplo, “a + b como c” é permitido, enquanto “a + b” não é.
As colunas de saída de select_list
podem ser de qualquer tipo de dados compatível com o BigQuery ML.
Se presentes, as seguintes colunas precisam aparecer em select_list
sem transformação:
- label
- data_split_col
- kmeans_init_col
Se essas colunas forem retornadas por query_statement
, será necessário referenciá-las em select_list
pelo nome da coluna fora de qualquer expressão ou usando *
. Não é permitido usar um alias com essas colunas.
model_option_list
Em model_option_list
, a opção model_type
é obrigatória. Todas as outras são opcionais.
CREATE MODEL
é compatível com as seguintes opções:
MODEL_TYPE
Sintaxe
MODEL_TYPE = { 'LINEAR_REG' | 'LOGISTIC_REG' | 'KMEANS' | 'TENSORFLOW' |
'MATRIX_FACTORIZATION' | 'AUTOML_REGRESSOR' | 'AUTOML_CLASSIFIER' |
'BOOSTED_TREE_CLASSIFIER' | 'BOOSTED_TREE_REGRESSOR' | 'DNN_CLASSIFIER' |
'DNN_REGRESSOR' | 'ARIMA' }
Descrição
Especifique o tipo de modelo. Esta opção é obrigatória.
Argumentos
'LINEAR_REG'
Regressão linear para previsão. Por exemplo, as vendas de um item em determinado dia. Os rótulos têm valores reais, não podem ser +/-, infinito ou NaN
.
'LOGISTIC_REG'
Regressão logística binária para classificação. Por exemplo, determinar se um cliente fará uma compra. Este modelo pode ser de dois tipos:
- Regressão logística binária para classificação. Por exemplo, determinar se um cliente fará uma compra. Os rótulos têm apenas dois valores possíveis.
- Regressão logística multiclasse para classificação. Esses modelos podem ser usados para prever diversos valores possíveis. Por exemplo, se uma entrada tem um valor "baixo", "médio" ou "alto". Os rótulos podem ter até 50 valores exclusivos. No BigQuery ML, o treinamento de regressão logística multiclasse usa um classificador multinomial (em inglês) com uma função de perda de entropia cruzada (em inglês).
'KMEANS'
Cluster k-means para segmentação de dados. Por exemplo, identificar segmentos de clientes. K-means é uma técnica de aprendizado não supervisionada, logo, o treinamento do modelo não requer rótulos ou dados divididos para treinamento ou avaliação.
'TENSORFLOW'
Cria um modelo importando um modelo do TensorFlow para o BigQuery ML. Para mais informações, consulte Instrução CREATE MODEL para modelos do TensorFlow.
'MATRIX_FACTORIZATION'
fatorização de matrizes para sistemas de recomendação.
Por exemplo, com base em um determinado conjunto de usuários, itens e algumas preferências ou classificações para
um subconjunto dos itens, é criado um modelo para prever a preferência de usuários por itens
que eles não classificaram ou interagiram anteriormente. Para mais informações, consulte Instrução CREATE MODEL para modelos de fatoração de matrizes.
'AUTOML_REGRESSOR'
(Beta) Crie um modelo de regressão com o AutoML Tables. Consulte
a instrução CREATE MODEL para modelos do AutoML Tables
para mais informações.
'AUTOML_CLASSIFIER'
(Beta) Crie um modelo de classificação com o AutoML Tables. Consulte
a instrução CREATE MODEL para modelos do AutoML Tables
para mais informações.
'BOOSTED_TREE_CLASSIFIER'
(Beta) Crie um modelo de classificador de árvore otimizada com a biblioteca XGBoost. Consulte
a instrução CREATE MODEL para modelos de árvore otimizada
para mais informações.
'BOOSTED_TREE_REGRESSOR'
(Beta) Crie um modelo de regressor de árvore otimizada com a biblioteca XGBoost. Consulte
a instrução CREATE MODEL para modelos de árvore otimizada
para mais informações.
'DNN_CLASSIFIER'
(Beta) Crie um modelo de classificador de rede neural profunda. Consulte
a instrução CREATE MODEL para modelos DNN
para mais informações.
'DNN_REGRESSOR'
(Beta) Crie um modelo de regressor de rede neural profunda. Consulte
a instrução CREATE MODEL para modelos DNN
para mais informações.
'ARIMA'
Crie modelos univariados de série temporal com base em ARIMA para previsão de série
temporal.
Por exemplo, com uma ou várias séries temporais, cria-se um modelo ou um conjunto de modelos de série temporal de uma só vez para prever pontos de dados. Para mais informações, consulte a instrução CREATE MODEL para modelos de série temporal.
INPUT_LABEL_COLS
Sintaxe
INPUT_LABEL_COLS = string_array
Descrição
Nome(s) de coluna de rótulo nos dados de treinamento.
Argumentos
string_array
é um ARRAY
de STRING
s. Os tipos de modelo de regressão linear e de regressão logística são compatíveis somente com valores string_array que contêm um elemento.
OPTIMIZE_STRATEGY
Sintaxe
OPTIMIZE_STRATEGY = { 'AUTO_STRATEGY' | 'BATCH_GRADIENT_DESCENT' | 'NORMAL_EQUATION' }
Descrição
Estratégia para treinar modelos de regressão linear.
Argumentos
Aceita os seguintes valores:
'AUTO_STRATEGY'
Determina a estratégia de treinamento da seguinte forma:
- Se
l1_reg
ouwarm_start
estiver especificado, a estratégiabatch_gradient_descent
será usada. - Se o total de cardinalidades dos recursos de treinamento for superior a 10.000, a estratégia
batch_gradient_descent
será usada. - Se houver um problema de overfitting, ou seja, o número de exemplos de treinamento for menor que 10x, em que x é a cardinalidade total, a estratégia
batch_gradient_descent
será usada. - A estratégia
NORMAL_EQUATION
será usada para todos os outros casos.
'BATCH_GRADIENT_DESCENT'
Treina o modelo usando o método do gradiente descendente em lote, que otimiza a função de perda usando a função gradiente.
'NORMAL_EQUATION'
Calcula diretamente a solução menos quadrada (em inglês) do problema de regressão linear com a fórmula analítica. A equação normal não pode ser usada quando:
l1_reg
é especificado.warm_start
é especificado.- a cardinalidade total dos recursos de treinamento é maior que 10.000.
O valor padrão é 'AUTO_STRATEGY'
.
L1_REG
Sintaxe
L1_REG = float64_value
Descrição
Quantidade de regularização L1 (em inglês) aplicada.
Argumentos
float64_value
é um FLOAT64
. O valor padrão é 0.
L2_REG
Sintaxe
L2_REG = float64_value
Descrição
Quantidade de regularização L2 (em inglês) aplicada.
Argumentos
float64_value
é um FLOAT64
. O valor padrão é 0.
MAX_ITERATIONS
Sintaxe
MAX_ITERATIONS = int64_value
Descrição
Número máximo de iterações de treinamento (ou etapas).
Argumentos
int64_value
é um INT64
. O valor padrão é 20.
LEARN_RATE_STRATEGY
Sintaxe
LEARN_RATE_STRATEGY = { 'LINE_SEARCH' | 'CONSTANT' }
Descrição
Estratégia para especificar a taxa de aprendizado (em inglês) durante o treinamento.
Argumentos
'LINE_SEARCH'
Usa o método pesquisa linear para calcular a taxa de aprendizado. A taxa de aprendizado inicial da pesquisa linear é o valor especificado para LS_INIT_LEARN_RATE.
A pesquisa linear desacelera o treinamento e aumenta o número de bytes processados, mas geralmente converge mesmo que a taxa de aprendizado inicial especificada seja maior.
'CONSTANT'
Define a taxa de aprendizado com o valor especificado para LEARN_RATE.
O valor padrão é 'LINE_SEARCH'
.
LEARN_RATE
Sintaxe
LEARN_RATE = float64_value
Descrição
A taxa de aprendizado do gradiente descendente quando LEARN_RATE_STRATEGY
é definido como CONSTANT
. Se LEARN_RATE_STRATEGY
for definido como 'LINE_SEARCH'
, será retornado um erro.
Argumentos
float64_value
é um FLOAT64
. O valor padrão é 0,1.
EARLY_STOP
Sintaxe
EARLY_STOP = { TRUE | FALSE }
Descrição
Indica se o treinamento precisa parar após a primeira iteração em que a melhoria da perda relativa é menor que o valor especificado para MIN_REL_PROGRESS
.
Argumentos
O valor é um BOOL
. O valor padrão é TRUE
.
MIN_REL_PROGRESS
Sintaxe
MIN_REL_PROGRESS = float64_value
Descrição
Melhoria mínima de perda relativa, necessária para continuar o treinamento quando EARLY_STOP
for definido como verdadeiro. Por exemplo, o valor 0,01, especifica que cada iteração precisa reduzir a perda em 1% para que o treinamento continue.
Argumentos
float64_value
é um FLOAT64
. O valor padrão é 0,01.
DATA_SPLIT_METHOD
Sintaxe
DATA_SPLIT_METHOD = { 'AUTO_SPLIT' | 'RANDOM' | 'CUSTOM' | 'SEQ' | 'NO_SPLIT' }
Descrição
Método para dividir dados de entrada em conjuntos de treinamento e avaliação. Dados de treinamento são usados para treinar o modelo. Os dados de avaliação são usados para evitar o overfitting (em inglês) por meio de parada antecipada.
Argumentos
Aceita os seguintes valores:
'AUTO_SPLIT'
A estratégia de divisão automática é a seguinte:
- Quando há menos de 500 linhas nos dados de entrada, todas as linhas são usadas como dados de treinamento.
- Quando há entre 500 e 50.000 linhas nos dados de entrada, 20% dos dados são usados como dados de avaliação em uma divisão
RANDOM
. - Quando há mais de 50.000 linhas nos dados de entrada, somente 10.000 delas são usadas como dados de avaliação em uma divisão
RANDOM
.
'RANDOM'
Divide dados aleatoriamente. Uma divisão aleatória é determinística: diferentes execuções de treinamento produzirão os mesmos resultados de divisão se os dados de treinamento subjacentes permanecerem os mesmos.
'CUSTOM'
Divide os dados sequencialmente usando uma coluna fornecida pelo cliente do tipo BOOL
. As linhas com o valor TRUE
são usadas como dados de avaliação. As linhas com o valor FALSE
são usadas como dados de treinamento.
'SEQ'
Divide os dados sequencialmente usando uma coluna fornecida pelo cliente. A coluna pode
ter qualquer tipo de dados solicitáveis: NUMERIC
, BIGNUMERIC
, STRING
ou
TIMESTAMP
Todas as linhas com valores divididos menores que o limite serão usadas como
dados de treinamento. As linhas restantes, inclusive NULLs
, serão usadas como dados de avaliação.
'NO_SPLIT'
usa todos os dados como dados de treinamento.
O valor padrão é 'AUTO_SPLIT'
para modelos de regressão linear e de regressão logística.
O valor padrão é 'NO_SPLIT'
para modelos de fatoração de matrizes. Se você decidir usar um método de divisão diferente, verifique se todos os usuários e itens têm linhas suficientes no conjunto de treinamento para criar um bom modelo.
Essa opção não é compatível com modelos do TensorFlow ou k-means.
DATA_SPLIT_EVAL_FRACTION
Sintaxe
DATA_SPLIT_EVAL_FRACTION = float64_value
Descrição
Essa opção é usada com divisões 'RANDOM'
e 'SEQ'
. Ela especifica a fração dos dados usados para avaliação, com precisão de duas casas decimais.
Argumentos
float64_value
é um FLOAT64
. O valor padrão é 0,2.
DATA_SPLIT_COL
Sintaxe
DATA_SPLIT_COL = string_value
Descrição
Identifica a coluna usada para dividir os dados. Ela não pode ser usada como um recurso ou rótulo e será excluída dos recursos automaticamente.
Quando o valor de
DATA_SPLIT_METHOD
for'CUSTOM'
, a coluna correspondente deverá ser do tipoBOOL
. As linhas com valoresTRUE
ouNULL
são usadas como dados de avaliação. Linhas com valoresFALSE
são usadas como dados de treinamento.Quando o valor de
DATA_SPLIT_METHOD
for'SEQ'
, as últimas n linhas, da menor para a maior, na coluna correspondente serão usadas como dados de avaliação, em que n será o valor especificado paraDATA_SPLIT_EVAL_FRACTION
. As primeiras linhas são usadas como dados de treinamento.
Para informações sobre os tipos de entrada compatíveis, consulte Tipos de
entrada compatíveis para DATA_SPLIT_COL
.
Para mais informações sobre como usar DATA_SPLIT_COL
com tipos de modelo do AutoML, consulte
a instrução CREATE MODEL para modelos do AutoML Tables.
Argumentos
string_value
é uma STRING
.
LS_INIT_LEARN_RATE
Sintaxe
LS_INIT_LEARN_RATE = float64_value
Descrição
Define a taxa de aprendizado inicial que LEARN_RATE_STRATEGY='LINE_SEARCH'
usa.
Esta opção só pode ser usada quando LINE_SEARCH
é especificado.
Se o modelo LEARN_RATE
parecer estar dobrando a cada iteração, conforme indicado por ML.TRAINING_INFO
, tente definir LS_INIT_LEARN_RATE
como a última taxa de aprendizado duplicada. A taxa de aprendizado inicial ideal é diferente para cada modelo. Uma taxa de aprendizado inicial pode ser boa para um modelo e não para outro.
Argumentos
float64_value
é um FLOAT64
.
WARM_START
Sintaxe
WARM_START = { TRUE | FALSE }
Descrição
Treine novamente um modelo com novos dados de treinamento, novas opções de modelo ou ambos. A menos que explicitamente modificadas, as opções iniciais usadas para treinar o modelo são usadas na execução a quente.
Em uma execução a quente, os números da iteração são redefinidos para iniciar do zero. O número TRAINING_RUN
ou as colunas TIMESTAMP
podem ser usados para distinguir a execução a quente da execução original.
O valor das opções MODEL_TYPE
e LABELS
e o esquema de dados de treinamento
precisam permanecer constantes em uma inicialização a quente. A opção warm_start
é compatível somente
com as redefinições de modelo
LINEAR_REG
, LOGISTIC_REG
, KMEANS
, DNN_REGRESSOR
e DNN_CLASSIFIER
.
Argumentos
Aceita um BOOL
. O valor padrão é FALSE
.
AUTO_CLASS_WEIGHTS
Sintaxe
AUTO_CLASS_WEIGHTS = { TRUE | FALSE }
Descrição
Define se os rótulos de classe serão balanceados usando pesos para cada classe em proporção inversa à frequência dessa classe.
Use com regressões logísticas, multiclasse, boosted_tree_classifier e DNN_CLASSIFIER.
Por padrão, não são ponderados os dados de treinamento usados para criar um modelo de regressão logística multiclasse, de classificador de árvore otimizada e de classificador dnn. Se os rótulos nos dados de treinamento estiverem desequilibrados, o modelo poderá aprender a prever a classe mais comum de rótulos com mais intensidade, o que talvez não seja o ideal.
Para equilibrar todas as classes, defina AUTO_CLASS_WEIGHTS
como TRUE
. Para alcançar o equilíbrio
é preciso usar a seguinte forma:
total_input_rows / (input_rows_for_class_n * number_of_unique_classes)
Argumentos
Aceita um BOOL
. O valor padrão é FALSE
.
CLASS_WEIGHTS
Sintaxe
CLASS_WEIGHTS = struct_array
Descrição
Os pesos a serem usados para cada rótulo de classe. Esta opção não pode ser especificada quando AUTO_CLASS_WEIGHTS
é especificado.
Argumentos
struct_array
é um ARRAY
de códigos STRUCT
. Desse modo, cada STRUCT
contém um STRING
que contém o rótulo de classe e um FLOAT64
que contém o peso desse rótulo de classe. É preciso que haja um peso para cada rótulo de classe. Não é necessário que os pesos somem um. Exemplo:
CLASS_WEIGHTS = [STRUCT('example_label', .2)]
NUM_CLUSTERS
Sintaxe
NUM_CLUSTERS = int64_value
Descrição
Para um modelo k-means, o número de clusters a serem identificados nos dados de entrada.
Argumentos
int64_value
é um INT64
. Os valores permitidos são de 2 a 100. O valor padrão é log10(n)
, em que n
é o número de exemplos de treinamento.
KMEANS_INIT_METHOD
Sintaxe
KMEANS_INIT_METHOD = { 'RANDOM' | 'KMEANS++' | 'CUSTOM' }
Descrição
Para um modelo k-means, o método de inicialização dos clusters.
Para usar os mesmos centroides em consultas CREATE MODEL
repetidas, especifique a opção 'CUSTOM'
.
Argumentos
'RANDOM'
: inicializa os centroides selecionando aleatoriamente pontos de dados de NUM_CLUSTERS
dos dados de entrada.
'KMEANS++'
: inicializa os centroides NUM_CLUSTERS
usando o algoritmo KMEANS++
. 'KMEANS++'
treina um modelo melhor que a inicialização de cluster 'RANDOM'
.
'CUSTOM'
: inicializa os centroides usando uma coluna fornecida do tipo BOOL
.
Essa coluna é especificada pela opção 'KMEANS_INIT_COL'
.
O BigQuery ML usa as linhas com um valor de TRUE
como os centroides iniciais.
Quando esta opção está presente e os valores em 'KMEANS_INIT_COL'
são constantes, as consultas CREATE MODEL
repetidas usam os mesmos centroides.
O valor padrão é 'RANDOM'
KMEANS_INIT_COL
Sintaxe
KMEANS_INIT_COL = string_value
Descrição
Para um modelo k-means, identifica a coluna usada para inicializar os centroides.
Se essa coluna contiver um valor de TRUE
para uma determinada linha, o BigQuery ML usará essa linha como um centroide inicial.
Essa opção só pode ser especificada quando 'KMEANS_INIT_METHOD'
tem o valor 'CUSTOM'
. A coluna correspondente precisa ser do tipo BOOL
. A opção de modelo NUM_CLUSTERS
precisa estar presente na consulta, e seu valor precisa ser igual ao número total de linhas TRUE
nessa coluna. O BigQuery ML não pode usar essa coluna como um recurso e a exclui dos recursos automaticamente.
Argumentos
string_value
é uma STRING
.
DISTANCE_TYPE
Sintaxe
DISTANCE_TYPE = { 'EUCLIDEAN' | 'COSINE' }
Descrição
Para um modelo k-means, o tipo de métrica para calcular a distância entre dois pontos.
Argumentos
Aceita os seguintes valores:
'EUCLIDEAN'
Usa a seguinte equação para calcular a distância entre os pontos x
e y
:
'COSINE'
usa a seguinte equação para calcular a distância:
em que \( \lVert x\rVert_{2} \) representa a norma L2 para x
.
O valor padrão é 'EUCLIDEAN'
.
STANDARDIZE_FEATURES
Sintaxe
STANDARDIZE_FEATURES = { TRUE | FALSE }
Descrição
Para um modelo kmeans
, indica se é para padronizar recursos numéricos (em inglês).
Argumentos
Aceita um BOOL
. O valor padrão é TRUE
.
MODEL_PATH
Sintaxe
MODEL_PATH = string_value
Descrição
Para tipos de modelo do TensorFlow, especifica o local do modelo do TensorFlow a ser importado.
string_value
é o local de um bucket do Google Cloud Storage que contém o modelo a ser importado.
Consulte a instrução CREATE MODEL para modelos do TensorFlow para mais informações.
Exemplo
MODEL_PATH = 'gs:////bucket/path/to/saved_model/*'
FEEDBACK_TYPE
Sintaxe
FEEDBACK_TYPE = { 'EXPLICIT' | 'IMPLICIT' }
Descrição
Especifica o tipo de feedback para modelos de fatoração de matrizes, o que altera o algoritmo usado durante o treinamento.
Para saber mais, consulte as informações sobre modelos de fatoração de matrizes.
Argumentos
O valor padrão é 'EXPLICIT'
.
NUM_FACTORS
Sintaxe
NUM_FACTORS = int64_value
Descrição
Especifica o número de fatores latentes a serem usados para modelos de fatoração de matrizes.
Argumentos
int64_value
é um 'INT64'
. Os valores permitidos são de 2 a 200.
O valor padrão é log2(n)
, em que n
é o número de exemplos de treinamento.
USER_COL
Sintaxe
USER_COL = string_value
Descrição
O nome da coluna de usuários para modelos de fatoração de matrizes.
Argumentos
string_value
é uma 'STRING'
. O valor padrão é 'user'
.
ITEM_COL
Sintaxe
ITEM_COL = string_value
Descrição
O nome da coluna de itens para modelos de fatoração de matrizes.
Argumentos
string_value
é uma 'STRING'
. O valor padrão é 'item'
.
RATING_COL
Sintaxe
RATING_COL = string_value
Descrição
O nome da coluna de classificações para modelos de fatoração de matrizes.
Argumentos
string_value
é uma 'STRING'
. O valor padrão é 'rating'
.
WALS_ALPHA
Sintaxe
WALS_ALPHA = float64_value
Descrição
Um hiperparâmetro para o modelo de fatoração de matrizes 'IMPLICIT'
. Para saber mais, consulte as informações sobre modelos de fatoração de matrizes.
Argumentos
float64_value
é um 'FLOAT64'
. O valor padrão é 40.
BUDGET_HOURS
Sintaxe
BUDGET_HOURS = float64_value
Descrição
Define o orçamento de treinamento do AutoML Tables, especificado em horas.
O padrão é 1,0 e precisa estar entre 1,0 e 72,0. Essa opção só pode ser usada se
MODEL_TYPE
for AUTOML_REGRESSOR
ou
AUTOML_CLASSIFIER
.
Depois de treinar modelos do AutoML Tables, o BigQuery ML compacta o modelo para garantir que ele seja pequeno o suficiente para ser importado, o que pode levar até 50% do tempo de treinamento. O tempo para compactar o modelo não está incluído no tempo de orçamento do treinamento.
Para mais informações, consulte a instrução CREATE MODEL para modelos do AutoML Tables.
Argumentos
float64_value é um FLOAT64
.
BOOSTER_TYPE
Sintaxe
BOOSTER_TYPE = { 'GBTREE' | 'DART'}
Descrição
Em modelos de árvore otimizada, especifique o tipo de otimizador a ser usado, com valor padrão GBTREE
.
Argumentos
As seguintes opções estão disponíveis:
'GBTREE'
: otimizador de árvore'DART'
: otimizador de dart
NUM_PARALLEL_TREE
Sintaxe
NUM_PARALLEL_TREE = int64_value
Descrição
Número de árvores paralelas construídas em cada iteração. O valor padrão é 1. Para treinar uma floresta aleatória otimizada, defina esse valor como maior que 1.
DART_NORMALIZE_TYPE
Sintaxe
DART_NORMALIZE_TYPE = { 'TREE' | 'FOREST'}
Descrição
Tipo de algoritmo de normalização para otimizador do DART. O valor padrão é TREE
.
TREE_METHOD
Sintaxe
TREE_METHOD = { 'AUTO' | 'EXACT' | 'APPROX' | 'HIST'}
Descrição
Tipo de algoritmo de construção em árvore. O valor padrão é AUTO
.
HIST
é recomendado para conjuntos de dados grandes para garantir uma velocidade
de treinamento mais rápida e menor consumo de recursos. Para mais informações, consulte o
aumento de árvore.
MIN_TREE_CHILD_WEIGHT
Sintaxe
MIN_TREE_CHILD_WEIGHT = float64_value
Descrição
Peso mínimo da instância necessário em uma árvore filha para particionamento adicional.
Se a etapa da partição da árvore resultar em um nó de folha com a soma do peso
da instância menor que min_tree_child_weight
, o processo de compilação abrirá mão
do particionamento adicional. Quanto maior o valor de min_tree_child_weight
, mais
conservador será o algoritmo. O valor deve ser maior ou igual a 0, com valor padrão 1.
COLSAMPLE_BYTREE
Sintaxe
COLSAMPLE_BYTREE = float64_value
Descrição
Proporção de subamostra de colunas ao construir cada árvore. A subamostragem ocorre uma vez para cada árvore construída. O valor deve estar entre 0 e 1, com valor padrão de 1.
COLSAMPLE_BYLEVEL
Sintaxe
COLSAMPLE_BYLEVEL = float64_value
Descrição
Proporção de subamostra de colunas para cada nível. A subamostragem ocorre uma vez para cada novo nível de profundidade alcançado em uma árvore. O conjunto de colunas escolhido para a árvore atual gera a subamostragem das colunas. O valor deve estar entre 0 e 1, com valor padrão 1.
COLSAMPLE_BYNODE
Sintaxe
COLSAMPLE_BYNODE = float64_value
Descrição
Proporção de subamostra de colunas para cada nó (divisão). A subamostragem ocorre toda vez que uma nova divisão é avaliada. O conjunto de colunas escolhido para o nível atual gera a subamostragem das colunas. O valor deve estar entre 0 e 1, com valor padrão 1.
MIN_SPLIT_LOSS
Sintaxe
MIN_SPLIT_LOSS = float64_value
Descrição
Redução mínima de perda necessária para criar uma partição adicional em um nó de folha da árvore. Quanto maior o valor de min_split_loss
, mais conservador
será o algoritmo. O valor padrão é 0.
MAX_TREE_DEPTH
Sintaxe
MAX_TREE_DEPTH = int64_value
Descrição
Profundidade máxima de uma árvore. O valor padrão é 6.
SUBSAMPLE
Sintaxe
SUBSAMPLE = float64_value
Descrição
Proporção de subamostra das instâncias de treinamento. Definir esse valor como 0,5 significa treinar metade dos dados de treinamento com amostras em ordem aleatória. Isso acontece antes de se expandir as árvores, o que previne overfitting. A subamostragem ocorrerá uma vez a cada iteração de otimização. Isso não depende da divisão de dados de teste do treinamento nas opções de treinamento (aleatoriedade de 80/20 por padrão). Os dados de teste não são usados em iterações que possam não estar relacionadas à subamostra porque ela só é aplicada aos dados de treinamento. O valor deve estar entre 0 e 1, com valor padrão 1,0 (usar todos os dados de treinamento em cada iteração).
ACTIVATION_FN
Sintaxe
ACTIVATION_FN = { 'RELU' | 'RELU6' | 'CRELU' | 'ELU' | 'SELU' | 'SIGMOID' | 'TANH' }
Descrição
Em tipos de modelo DNN, especifica a função de ativação da rede neural.
Argumentos
As seguintes opções estão disponíveis:
'RELU'
— Linearidade retificada'RELU6'
— Linearidade retificada 6'CRELU'
— ReLU concatenada'ELU'
— Linearidade exponencial'SELU'
: Linearidade exponencial em escala'SIGMOID'
- Ativação sigmoid'TANH'
- Ativação Tanh
BATCH_SIZE
Sintaxe
BATCH_SIZE = int64_value
Descrição
Em tipos de modelo DNN, especifica o tamanho do mini-lote de amostras que são importadas à rede neural.
Argumentos
O valor padrão é 1.024 ou o número de amostras, o que for menor.
O valor máximo é 8.192.
DROPOUT
Sintaxe
DROPOUT = float64_value
Descrição
Em tipos de modelo DNN, especifica a taxa de dropout de unidades na rede neural.
Argumentos
O valor padrão é 0. Uma entrada válida precisa estar entre 0,0 e 1,0.
HIDDEN_UNITS
Sintaxe
HIDDEN_UNITS = int_array
Descrição
Em tipos de modelo DNN, especifica as camadas escondidas da rede neural.
Argumentos
Matriz de números inteiros que representa a arquitetura das camadas escondidas. Se não for especificada, o BigQuery ML aplicará uma única camada escondida que não contenha mais de 128 unidades.
Exemplo
HIDDEN_UNITS = [256, 128, 64]
Este exemplo representa uma arquitetura de três camadas escondidas com 256, 128 e 64 nós, respectivamente.
OPTIMIZER
Sintaxe
OPTIMIZER = { 'ADAGRAD' | 'ADAM' | 'FTRL' | 'RMSPROP' | 'SGD' }
Descrição
Em tipos de modelo DNN, especifica o otimizador para treinar o modelo.
Argumentos
As seguintes opções estão disponíveis:
'ADAGRAD'
- Implementa o algoritmo Adagrad'ADAM'
- Implementa o algoritmo Adam'FTRL'
- Implementa o algoritmo FTRL'RMSPROP'
- Implementa o algoritmo RMSProp'SGD'
- Implementa o algoritmo de gradiente descendente
TIME_SERIES_TIMESTAMP_COL
Sintaxe
TIME_SERIES_TIMESTAMP_COL = string_value
Descrição
O nome da coluna de marcação de tempo para modelos de série temporal.
Argumentos
string_value
é uma 'STRING'
.
TIME_SERIES_DATA_COL
Sintaxe
TIME_SERIES_DATA_COL = string_value
Descrição
O nome da coluna de dados para modelos de série temporal.
Argumentos
string_value
é uma 'STRING'
.
TIME_SERIES_ID_COL
Sintaxe
TIME_SERIES_ID_COL = string_value
Descrição
O nome da coluna "ID" para modelos de série temporal. Essa coluna é usada quando o usuário quer ajustar e prever várias séries temporais com uma única consulta. IDs diferentes indicam séries temporais diferentes.
Argumentos
string_value
é uma 'STRING'
.
HORIZON
Sintaxe
HORIZON = int64_value
Descrição
O número de pontos no tempo a serem previstos. Ao prever várias séries temporais de uma só vez, esse parâmetro se aplicará a cada série temporal.
Argumentos
O valor é um INT64
. O valor padrão é 1.000. O valor máximo é 10.000.
AUTO_ARIMA
Sintaxe
AUTO_ARIMA = { TRUE | FALSE }
Descrição
Determina se o processo de treinamento deverá ou não usar auto.ARIMA. Se for verdadeiro, o treinamento encontrará automaticamente a melhor ordem não sazonal (por exemplo, a tupla p, d, q
) e decidirá se quer incluir um termo de deslocamento linear quando d
for 1.
Se for falso, o usuário precisará especificar non_seasonal_order na consulta. Quando se faz a previsão de várias séries temporais ao mesmo tempo, o algoritmo auto.ARIMA precisa ser usado em cada série temporal. Portanto, essa opção não pode ser definida como falsa.
Argumentos
O valor é um BOOL
. O valor padrão é TRUE
.
AUTO_ARIMA_MAX_ORDER
Sintaxe
AUTO_ARIMA_MAX_ORDER = <var>int64_value</var>
Descrição
O valor máximo para a soma de p e q não sazonais. Ele controla o espaço
de pesquisa de parâmetros no algoritmo auto.ARIMA. Atualmente, os valores permitidos são
2, 3, 4 e 5. Como referência, para cada valor existem 6, 10, 15 e 21 modelos
candidatos para avaliar se o d não sazonal estiver definido como 0 ou 2. Se for determinado
que o d não sazonal será 1, o número de modelos candidatos a serem avaliados será dobrado,
já que existe um termo de deslocamento extra a ser considerado para todos os modelos
existentes. Essa opção é desativada quando AUTO_ARIMA
é definido como falsa.
Argumentos
O valor é um INT64
. O valor padrão é cinco. O valor mínimo é 2, e o
máximo é 5.
NON_SEASONAL_ORDER
Sintaxe
NON_SEASONAL_ORDER = (int64_value, int64_value, int64_value)
Descrição
Tupla não sazonal de p, d, q no modelo ARIMA. Não há valores padrão, e você precisa especificar todos eles. Você precisa especificar explicitamente auto_arima como falso para usar essa opção. Atualmente, p e q estão restritos a [0, 1, 2, 3, 4, 5] e d está restrito a [0, 1, 2]. Quando se faz a previsão de várias séries temporais de uma só vez, é muito improvável que uma ordem não sazonal específica se ajuste a todas as séries temporais. O algoritmo auto.ARIMA é usado para encontrar a melhor ordem não sazonal para cada série temporal. Portanto, essa opção está desativada nesse caso.
Argumentos
(int64_value, int64_value, int64_value)
é uma tupla de três 'INT64'
.
DATA_FREQUENCY
Sintaxe
DATA_FREQUENCY = { 'AUTO_FREQUENCY' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' }
Descrição
A frequência de dados da série temporal de entrada. A granularidade mais compatível é
'HOURLY'
. Quando se faz a previsão de várias séries temporais de uma só vez, esse argumento não pode
ser alterado a partir do valor padrão 'AUTO_FREQUENCY'
.
Argumentos
Aceita os seguintes valores:
'AUTO_FREQUENCY'
: o processo de treinamento infere automaticamente a frequência de dados, que pode ser um dos valores listados abaixo.
'HOURLY'
: série temporal por hora
'DAILY'
: série temporal diária
'WEEKLY'
: série temporal semanal
'MONTHLY'
: série temporal mensal
'QUARTERLY'
: série temporal trimestral
'YEARLY'
: série temporal anual
O valor padrão é 'AUTO_FREQUENCY'
.
INCLUDE_DRIFT
Sintaxe
INCLUDE_DRIFT = { TRUE | FALSE }
Descrição
Define se o modelo ARIMA deve incluir um termo de deslocamento linear. O termo de deslocamento é aplicável quando d não sazonal é 1.
Quando a definição auto_arima é definida como falsa, esse argumento é definido como falso. Ele poderá ser definido como verdadeiro somente quando d não sazonal for 1. Caso contrário, retornará um erro de consulta inválida.
Quando auto_arima é definido como verdadeiro, ele decide automaticamente se um termo de deslocamento linear deve ou não ser incluído. Portanto, essa opção está desativada para auto_ARIMA.
Argumentos
O valor é um BOOL
. O valor padrão é FALSE
quando auto_arima está desativado.
HOLIDAY_REGION
Sintaxe
HOLIDAY_REGION = { 'GLOBAL' | 'NA' | 'JAPAC' | 'EMEA' | 'LAC' | 'AE' | ... }
Descrição
A região geográfica com base na qual os efeitos de feriados são aplicados na modelagem. Por padrão, a modelagem de efeitos de feriados está desativada. Para ativá-la, especifique a região de feriados usando essa opção.
Argumentos
Aceita os seguintes valores:
Nível superior: global
'GLOBAL'
Segundo nível: regiões continentais
'NA'
: América do Norte'JAPAC'
: Japão e Ásia-Pacífico'EMEA'
: Europa, Oriente Médio e África'LAC'
: América Latina e Caribe
Terceiro nível: países/regiões
'AE'
: Emirados Árabes Unidos'AR'
: Argentina'AT'
: Áustria'AU'
: Austrália'BE'
: Bélgica'BR'
: Brasil'CA'
: Canadá'CH'
: Suíça'CL'
: Chile'CN'
: China'CO'
: Colômbia'CZ'
: República Tcheca'DE'
: Alemanha'DK'
: Dinamarca'DZ'
: Argélia'EC'
: Equador'EE'
: Estônia'EG'
: Egito'ES'
: Espanha'FI'
: Finlândia'FR'
: França'GB'
: Reino Unido'GR'
: Grécia'HK'
: Hong Kong'HU'
: Hungria'ID'
: Indonésia'IE'
: Irlanda'IL'
: Israel'IN'
: Índia'IR'
: Irã'IT'
: Itália'JP'
: Japão'KR'
: Coreia do Sul'LV'
: Letônia'MA'
: Marrocos'MX'
: México'MY'
: Malásia'NG'
: Nigéria'NL'
: Países Baixos'NO'
: Noruega'NZ'
: Nova Zelândia'PE'
: Peru'PH'
: Filipinas'PK'
: Paquistão'PL'
: Polônia'PT'
: Portugal'RO'
: Romênia'RS'
: Sérvia'RU'
: Rússia'SA'
: Arábia Saudita'SE'
: Suécia'SG'
: Singapura'SI'
: Eslovênia'SK'
: Eslováquia'TH'
: Tailândia'TR'
: Turquia'TW'
: Taiwan'UA'
: Ucrânia'US'
: Estados Unidos'VE'
: Venezuela'VN'
: Vietnã'ZA'
: África do Sul
query_statement
A cláusula AS query_statement
especifica a consulta SQL padrão usada para gerar os dados de treinamento. Para saber qual a sintaxe SQL compatível com a cláusula query_statement
, consulte a página Sintaxe de consulta do SQL padrão.
Todas as colunas referenciadas por query_statement
são usadas como entradas para o modelo, exceto as colunas incluídas em input_label_cols
e data_split_col
.
Entradas compatíveis
A instrução CREATE MODEL
é compatível com os seguintes tipos de dados para colunas de entrada de rótulo e de divisão de dados.
Tipos de dados aceitos para colunas de rótulo de entrada
O BigQuery ML é compatível com diferentes tipos de dados SQL padrão, dependendo do tipo de modelo. Os tipos de dados compatíveis com input_label_cols
incluem:
Model type |
Supported label types |
---|---|
linear_reg |
INT64 NUMERIC BIGNUMERIC FLOAT64 |
logistic_reg |
Qualquer tipo de dados agrupável |
kmeans |
Qualquer tipo de dados agrupável |
Tipos de dados aceitos para colunas de divisão de dados
O BigQuery ML é compatível com diferentes tipos de dados SQL padrão, dependendo do método de divisão de dados. Os tipos de dados compatíveis com data_split_col
incluem:
Data split method |
Supported column types |
---|---|
custom |
BOOL |
seq |
INT64 NUMERIC BIGNUMERIC FLOAT64 TIMESTAMP |
Limitações
Nas instruções CREATE MODEL
, siga estas regras:
- Apenas uma instrução
CREATE
é permitida. - Quando você usa uma instrução
CREATE MODEL
, o tamanho do modelo precisa ser 90 MB ou menos, senão a consulta falha. Geralmente, se todas as variáveis categóricas forem strings curtas, uma cardinalidade de recurso total (dimensão do modelo) de 5-10 milhões será aceita. A dimensionalidade é dependente da cardinalidade e do comprimento das variáveis de string. - A coluna de rótulo não pode conter valores
NULL
. Se a coluna de rótulos contiver valoresNULL
, a consulta falhará. - Atualmente, a cláusula
CREATE MODEL IF NOT EXISTS
sempre atualiza o último carimbo de data/hora modificado de um modelo. - Para modelos de regressão linear, a coluna
label
precisa ter valores reais (os valores de coluna não podem ser +/-, infinito ou NaN). - Para modelos de regressão logística, as colunas de rótulo podem conter até 50 valores exclusivos, ou seja, o número de classes é menor ou igual a 50.
Transformações de variáveis de entrada
O BigQuery ML transforma variáveis de entrada ou recursos da seguinte maneira:
Tipo de dados de entrada | Método de transformação | Detalhes |
---|---|---|
INT64 NUMERIC BIGNUMERIC FLOAT64 |
Padronização (em inglês) | Para todas as colunas numéricas, o BigQuery ML padroniza e centraliza a coluna em zero antes de passá-la para o treinamento, exceto nos modelos de árvore otimizada. Ao criar um modelo k-means, a opção STANDARDIZE_FEATURES especifica se os recursos numéricos devem ser padronizados. |
BOOL STRING BYTES DATE DATETIME TIME |
Codificação one-hot (em inglês) | Em todas as colunas não numéricas que não sejam de matriz, exceto TIMESTAMP , o BigQuery ML executa uma transformação de codificação one-hot, exceto nos modelos de árvore otimizada. 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 otimizada a fim de 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 | Ao encontrar uma coluna TIMESTAMP , o BigQuery ML extrai um conjunto de componentes do TIMESTAMP e executa uma combinação de padronização e codificação one-hot nos componentes extraídos. Para o componente de tempo em segundos do Unix, o BigQuery ML usa padronização. Para todos os outros componentes, ele usa codificação one-hot.É possível usar a função ML.WEIGHTS para ver a transformação de uma coluna TIMESTAMP em várias colunas de atributo. |
STRUCT |
Expansão de struct | Quando o BigQuery ML encontra uma coluna STRUCT , ele expande os campos dentro de STRUCT para colunas únicas. Exige que todos os campos sejam nomeados. STRUCT aninhado não é permitido. Os nomes das colunas após a expansão estão no formato de {struct_name}_{field_name}. |
Imputação
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 manipula dados ausentes com base no tipo da coluna: numérica, codificação one-hot ou carimbo de data/hora.
Colunas numéricas
No treinamento e na predição, os valores NULL
em colunas numéricas são substituídos pelo valor médio, conforme calculado pela coluna de recurso nos dados de entrada originais.
Colunas de 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.
Colunas de carimbo de data/hora
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.
Colunas STRUCT
Tanto no treinamento quanto na previsão, cada campo de STRUCT é imputado de acordo com seu tipo.
Exemplos de CREATE MODEL
A instrução CREATE MODEL
cria um modelo com as opções especificadas. Se o nome da tabela constar no conjunto de dados, será retornado o seguinte erro:
Already Exists: [PROJECT_ID]:[DATASET].[MODEL]
Para substituir um modelo existente, use a instrução CREATE OR REPLACE MODEL
.
Os exemplos a seguir criam modelos denominados mymodel
em mydataset
em seu projeto padrão.
Como treinar um modelo de regressão linear
O exemplo a seguir cria e treina um modelo de regressão linear. A taxa de aprendizado é definida como 0,15, a regularização de L1 é definida como 1, e o número máximo de iterações de treinamento é definido como 5.
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE='LINEAR_REG', LS_INIT_LEARN_RATE=.15, L1_REG=1, MAX_ITERATIONS=5 ) AS SELECT column1, column2, column3, label FROM `mydataset.mytable` WHERE column4 < 10
Como treinar um modelo de regressão linear com uma divisão de dados sequencial
Neste exemplo, você cria um modelo de regressão linear com uma divisão de dados sequencial. A fração de divisão é .3, e a divisão usa a coluna timestamp
como base para a divisão.
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE='LINEAR_REG', LS_INIT_LEARN_RATE=.15, L1_REG=1, MAX_ITERATIONS=5, DATA_SPLIT_METHOD='SEQ', DATA_SPLIT_EVAL_FRACTION=0.3, DATA_SPLIT_COL='timestamp' ) AS SELECT column1, column2, column3, timestamp, label FROM `mydataset.mytable` WHERE column4 < 10
Como treinar um modelo de regressão linear com uma divisão de dados personalizada
Neste exemplo, você dividiu seus dados manualmente em uma tabela de treinamento e em uma tabela de avaliação. A tabela de treinamento é denominada training_table
. A tabela de avaliação é denominada evaluation_table
.
Usando esse comando, você cria um modelo de regressão linear usando um método de divisão personalizada e treina o modelo unindo os dados das tabelas de avaliação e treinamento.
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE='LINEAR_REG', DATA_SPLIT_METHOD='CUSTOM', DATA_SPLIT_COL='SPLIT_COL' ) AS SELECT *, false AS split_col FROM `mydataset.training_table` UNION ALL SELECT *, true AS split_col FROM `mydataset.evaluation_table`
Neste exemplo, todas as colunas na tabela de treinamento e na tabela de avaliação são recursos ou o rótulo. A consulta usa SELECT *
e UNION ALL
para anexar todos os dados na coluna split_col
aos dados existentes.
Como treinar um modelo de regressão logística multiclasse com pesos calculados automaticamente
Neste exemplo, você cria um modelo de regressão logística multiclasse usando a opção auto_class_weights
.
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE='LOGISTIC_REG', AUTO_CLASS_WEIGHTS=TRUE ) AS SELECT * FROM `mydataset.mytable`
Como treinar um modelo de regressão logística multiclasse com pesos especificados
Neste exemplo, você cria um modelo de regressão logística multiclasse usando a opção class_weights
. As colunas de rótulo são label1
, label2
e label3
.
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE='LOGISTIC_REG', CLASS_WEIGHTS=[('label1', 0.5), ('label2', 0.3), ('label3', 0.2)]) AS SELECT * FROM `mydataset.mytable`
Como treinar um modelo de regressão logística com pesos especificados
Neste exemplo, você cria um modelo de regressão logística usando a opção class_weights
.
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE='LOGISTIC_REG', CLASS_WEIGHTS=[('0', 0.9), ('1', 0.1)]) AS SELECT * FROM `mydataset.mytable`
Como treinar um modelo k-means
Neste exemplo, criamos um modelo k-means com quatro clusters usando o valor
distance_type
padrão de euclidean_distance
.
CREATE MODEL `mydataset.mymodel` OPTIONS ( MODEL_TYPE='KMEANS', NUM_CLUSTERS=4 ) AS SELECT * FROM `mydataset.mytable`
Como treinar um modelo k-means com clusters aleatórios
Neste exemplo, criamos um modelo k-means com três clusters usando o método de inicialização de cluster aleatório.
CREATE MODEL
`mydataset.mymodel`
OPTIONS
( MODEL_TYPE='KMEANS',
NUM_CLUSTERS=3,
KMEANS_INIT_METHOD='RANDOM') AS
SELECT
*
FROM
`mydataset.mytable`
Como treinar um modelo k-means com clusters personalizados
Neste exemplo, criamos um modelo k-means com quatro clusters usando o método de inicialização de cluster personalizado. init_col
identifica a coluna do tipo BOOL
que contém os valores que especificam se uma determinada linha é um centroide inicial.
Essa coluna deve conter apenas três linhas com o valor TRUE
.
CREATE MODEL
`mydataset.mymodel`
OPTIONS
( MODEL_TYPE='KMEANS',
NUM_CLUSTERS=3,
KMEANS_INIT_METHOD='CUSTOM',
KMEANS_INIT_COL='init_col') AS
SELECT
init_col,
features
FROM
`mydataset.mytable`
Criação de modelo com TRANSFORM, excluindo colunas originais
A consulta a seguir treina um modelo após adicionar as colunas f1
e f2
da instrução SELECT
para formar uma nova coluna c
. As colunas f1
e f2
são omitidas dos dados de treinamento. O treinamento de modelo usa colunas f3
e label_col
como elas aparecem na origem de dados t
.
CREATE MODEL m
TRANSFORM(f1 + f2 as c, * EXCEPT(f1, f2))
OPTIONS(model_type=’linear_reg’, input_label_cols=['label_col'])
AS SELECT f1, f2, f3, label_col FROM t;