Este tutorial ensina analistas de dados a usar o BigQuery ML. Com o BigQuery ML, usuários podem criar e executar modelos de machine learning no BigQuery usando consultas SQL. O objetivo é democratizar o machine learning, de modo que os especialistas em SQL criem modelos usando as respectivas ferramentas e aumentem a velocidade de desenvolvimento ao eliminar a necessidade de movimentar os dados.
Neste tutorial, você usará a tabela penguin
para criar um modelo que prevê o peso de um pinguim com base na espécie, a ilha de residência, comprimento e profundidade do cúlmen, comprimento da nadadeira e sexo.
Objetivos
Neste tutorial, você usará:
- o BigQuery ML para criar um modelo de regressão linear usando a instrução
CREATE MODEL
; - a função
ML.EVALUATE
para avaliar o modelo de ML; - a função
ML.PREDICT
para fazer previsões usando o modelo de ML.
Custos
Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:
- BigQuery
- BigQuery ML
Para mais informações sobre os custos do BigQuery, consulte a página de preços do BigQuery.
Para saber mais sobre os custos do BigQuery ML, veja a página de preços do BigQuery ML.
Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
- O BigQuery é ativado automaticamente em novos projetos.
Para ativar o BigQuery em um projeto preexistente, acesse
Ative a API BigQuery.
Etapa 1: criar conjunto de dados
A primeira etapa é criar um conjunto de dados do BigQuery para armazenar seu modelo de ML. Para criar o conjunto de dados, faça o seguinte:
No Console do Google Cloud, acesse a página do BigQuery.
Na seção Recursos do painel de navegação, clique no nome do projeto.
No painel de detalhes, à direita, clique em Criar conjunto de dados.
Na página Criar conjunto de dados, faça o seguinte:
- Para o código do conjunto de dados, insira
bqml_tutorial
. Em Local dos dados, selecione Estados Unidos (EUA). Atualmente, os conjuntos de dados públicos são armazenados no local multirregional
US
. Para simplificar, coloque seu conjunto de dados no mesmo local.
- Para o código do conjunto de dados, insira
Mantenha todas as outras configurações padrão e clique em Criar conjunto de dados.
Etapa 2: criar modelo
Em seguida, crie um modelo de regressão linear usando a tabela de pinguins do BigQuery. Com a consulta SQL padrão abaixo, você cria o modelo usado para prever o peso de um pinguim.
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS (model_type='linear_reg', input_label_cols=['body_mass_g']) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL
Ao executar o comando CREATE MODEL
, o modelo será criado e treinado.
Detalhes da consulta
A cláusula CREATE MODEL
é usada para criar e treinar o modelo chamado bqml_tutorial.penguins_model
.
A cláusula OPTIONS(model_type='linear_reg', input_label_cols=['body_mass_g'])
indica que você está criando um modelo de regressão linear. Regressão linear é um tipo de modelo de regressão que gera um valor contínuo a partir de uma combinação linear de recursos de entrada. A coluna body_mass_g
é a coluna do rótulo de entrada. Para modelos de regressão linear, é preciso que a coluna de rótulo tenha valor real, isto é, os valores da coluna precisam ser números reais.
A instrução SELECT
dessa consulta usa todas as colunas na tabela bigquery-public-data.ml_datasets.penguins
.
Esta tabela contém as seguintes colunas que serão todas usadas para prever o peso de um pinguim:
species
: espécie de pinguim (STRING).island
: ilha onde o pinguim reside (STRING).culmen_length_mm
: comprimento do culmen em milímetros (FLOAT64).culmen_depth_mm
: profundidade do culmen em milímetros (FLOAT64).flipper_length_mm
: comprimento da nadadeira em milímetros (FLOAT64);sex
: o sexo do pinguim (STRING).
A cláusula FROM
(bigquery-public-data.ml_datasets.penguins
) indica que a consulta é feita na tabela de pinguins conjunto de dados ml_datasets
.
Esse conjunto de dados está no projeto bigquery-public-data
.
A cláusula WHERE
(WHERE body_mass_g IS NOT NULL
) exclui linhas em que body_mass_g é NULL.
Executar a consulta CREATE MODEL
Para executar a consulta CREATE MODEL
para criar e treinar seu modelo:
No console do Google Cloud, clique no botão Escrever nova consulta.
Digite a consulta SQL padrão abaixo na área de texto do Editor de consultas.
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS (model_type='linear_reg', input_label_cols=['body_mass_g']) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL
Clique em Run.
A consulta leva por volta de 30 segundos para ser concluída. Depois disso, o modelo (
penguins_model
) aparece no painel de navegação. Como a consulta usa uma instruçãoCREATE MODEL
para criar uma tabela, não é possível ver os resultados da consulta.
Etapa 3 (opcional): receber estatísticas de treinamento
Para ver os resultados do treinamento de modelo, use a função
ML.TRAINING_INFO
ou visualize as estatísticas no console do Google Cloud. Neste
tutorial, você usa o console do Google Cloud.
Para criar um modelo, um algoritmo de machine learning examina vários exemplos e tenta encontrar um modelo que minimize a perda. Esse processo é chamado de "minimização de riscos empíricos".
Perda é a penalidade para uma previsão ruim, ou seja, um número que indica como a previsão do modelo foi ruim em um único exemplo. Para uma previsão de modelo perfeita, a perda é zero. Caso contrário, a perda é maior. O treinamento de um modelo visa encontrar um conjunto de ponderações e tendências com uma média de perda menor em todos os exemplos.
Para ver as estatísticas de treinamento do modelo que foram geradas quando você executou a consulta CREATE MODEL
:
Na seção Recursos do painel de navegação do console do Google Cloud, expanda [PROJECT_ID] > bqml_tutorial e clique em penguins_model.
Clique na guia Treinamento e depois em Tabela. Os resultados terão o seguinte formato:
A coluna Perda de dados de treinamento representa métrica da perda, calculada depois de o modelo ser treinado no conjunto de dados de treinamento. Como você executou uma regressão linear, essa coluna é o erro quadrático médio. Uma estratégia de otimização normal_equation é usada automaticamente neste treinamento. Portanto, apenas uma iteração é necessária para convergir para o modelo final. Para mais detalhes sobre a opção
optimize_strategy
, consulte a instrução CREATE MODEL para modelos lineares generalizados.Para mais detalhes sobre a função
ML.TRAINING_INFO
e a opção de treinamento "optimize_strategy", consulte a referência de sintaxe do BigQuery ML.
Etapa 4: avaliar o modelo
Depois de criar o modelo, utilize ML.EVALUATE
para avaliar o desempenho dele. A função ML.EVALUATE
avalia os valores previstos em relação aos dados reais.
A consulta usada para avaliar o modelo é a seguinte:
#standardSQL SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL))
Detalhes da consulta
A principal instrução SELECT
recupera as colunas do modelo.
A cláusula FROM
usa a função ML.EVALUATE
no modelo: bqml_tutorial.penguins_model
.
A instrução SELECT
aninhada dessa consulta e a cláusula FROM
são as mesmas da consulta CREATE MODEL
.
A cláusula WHERE
(WHERE body_mass_g IS NOT NULL
) exclui linhas em que body_mass_g é NULL.
Uma avaliação adequada seria feita em um subconjunto da tabela de pinguins, separada dos dados usados para treinar o modelo. Também é possível chamar ML.EVALUATE
sem fornecer os dados de entrada. ML.EVALUATE
vai recuperar as métricas de avaliação calculadas
durante o treinamento, que usa o conjunto de dados de avaliação reservado automaticamente:
#standardSQL SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`)
Também é possível usar o console do Google Cloud para visualizar as métricas de avaliação calculadas durante o treinamento. Os resultados vão ter a aparência abaixo:
Executar a consulta ML.EVALUATE
Para executar a consulta ML.EVALUATE
que avalia o modelo:
No console do Google Cloud, clique no botão Escrever nova consulta.
Digite a consulta SQL padrão abaixo na área de texto do Editor de consultas.
#standardSQL SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL))
(Opcional) Para definir o local de processamento, clique em Mais > Configurações de consulta. Para Local de processamento, escolha
US
. Essa etapa é opcional, já que o local de processamento é detectado automaticamente de acordo com o local do conjunto de dados.Clique em Executar.
Após concluir a consulta, clique na guia Resultados abaixo da área de texto da consulta. Os resultados terão o seguinte formato:
Como você executou uma regressão linear, os resultados incluem as seguintes colunas:
mean_absolute_error
mean_squared_error
mean_squared_log_error
median_absolute_error
r2_score
explained_variance
Uma métrica importante nos resultados da avaliação é a pontuação R2. A pontuação R2 é uma medida estatística que determina se as previsões de regressão linear se aproximam dos dados reais. 0 indica que o modelo não explica a variabilidade dos dados de resposta em torno da média. 1 indica que o modelo explica toda a variabilidade dos dados de resposta em torno da média.
Etapa 5: usar o modelo para prever resultados
Agora seu modelo foi avaliado, a próxima etapa é usá-lo para prever um resultado. Use seu modelo para prever a massa corporal em gramas de todos os pinguins que residem em Biscoe.
A consulta usada para prever o resultado é a seguinte:
#standardSQL SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL AND island = "Biscoe"))
Detalhes da consulta
A instrução SELECT
superior recupera a coluna predicted_body_mass_g
junto com as colunas em bigquery-public-data.ml_datasets.penguins
.
Essa coluna é gerada pela função ML.PREDICT
. Ao usar a função ML.PREDICT
, o nome da coluna de saída para o modelo é predicted_<label_column_name>
. Para modelos de regressão linear, predicted_label
é o valor estimado de label
. Para modelos de regressão logística, predicted_label
é um dos dois rótulos de entrada, dependendo de qual rótulo tem a maior probabilidade prevista.
A função ML.PREDICT
é usada para prever resultados usando o modelo: bqml_tutorial.penguins_model
.
A instrução SELECT
aninhada dessa consulta e a cláusula FROM
são as mesmas da consulta CREATE MODEL
.
A cláusula WHERE
(WHERE island = "Biscoe"
) indica que você está limitando a previsão à ilha de Biscoe.
Executar a consulta ML.PREDICT
Veja como executar a consulta que usa o modelo para prever um resultado:
No console do Google Cloud, clique no botão Escrever nova consulta.
Digite a consulta SQL padrão abaixo na área de texto do Editor de consultas.
#standardSQL SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL AND island = "Biscoe"))
(Opcional) Para definir o local de processamento, clique em Mais > Configurações de consulta. Para Local de processamento, escolha
US
. Essa etapa é opcional, já que o local de processamento é detectado automaticamente de acordo com o local do conjunto de dados.Clique em Executar.
Após concluir a consulta, clique na guia Resultados abaixo da área de texto da consulta. Os resultados terão o seguinte formato:
Etapa 6: explicar os resultados da previsão com métodos de IA explicáveis
Para entender por que seu modelo está gerando esses resultados de previsão, use a função ML.EXPLAIN_PREDICT
.
ML.EXPLAIN_PREDICT
é uma versão estendida de ML.PREDICT
. ML.EXPLAIN_PREDICT
retorna resultados da previsão com colunas adicionais que explicam esses resultados. Execute ML.EXPLAIN_PREDICT
sem ML.PREDICT
. Para uma explicação detalhada dos valores de Shapley e da IA explicável no BigQuery ML, consulte Visão geral da IA explicável do BigQuery ML.
A consulta usada para gerar as Explicações é a seguinte:
#standardSQL SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL AND island = "Biscoe"), STRUCT(3 as top_k_features))
Detalhes da consulta
Executar a consulta ML.EXPLAIN_PREDICT
Para executar a consulta ML.EXPLAIN_PREDICT
que explica o modelo:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a consulta SQL padrão a seguir no Editor de consultas.
#standardSQL SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL AND island = "Biscoe"), STRUCT(3 as top_k_features))
Clique em Executar.
Após concluir a consulta, clique na guia Resultados abaixo do editor de consultas. Os resultados terão a aparência abaixo:
Para modelos de regressão linear, os valores de Shapley são usados para gerar valores de atribuição de recursos por recurso no modelo. ML.EXPLAIN_PREDICT
gera as três principais atribuições de recursos por linha da tabela fornecida porque top_k_features
foi definido como 3 na consulta. Essas atribuições são classificadas pelo valor absoluto da atribuição em ordem decrescente. Em todos os exemplos, o recurso sex
contribuiu mais com a previsão geral. Para ver explicações detalhadas das colunas de saída da consulta ML.EXPLAIN_PREDICT
, consulte a
documentação de sintaxe de ML.EXPLAIN_PREDICT
.
(Opcional) Etapa 7: explicar globalmente o modelo
Para saber quais recursos são os mais importantes para determinar os pesos do pinguim, em geral, use a função
ML.GLOBAL_EXPLAIN
. Para usar ML.GLOBAL_EXPLAIN
, o modelo precisa ser treinado novamente com a opção ENABLE_GLOBAL_EXPLAIN=TRUE
. Execute novamente a consulta de treinamento com esta opção usando a seguinte consulta:
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS (model_type='linear_reg', input_label_cols=['body_mass_g'], enable_global_explain=TRUE) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL
Acesse explicações globais por meio de ML.GLOBAL_EXPLAIN
A consulta usada para gerar as Explicações globais é a seguinte:
#standardSQL SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
Detalhes da consulta
Executar a consulta ML.GLOBAL_EXPLAIN
Para executar a consulta ML.GLOBAL_EXPLAIN
:
No console do Google Cloud, clique no botão Escrever nova consulta.
Digite a consulta SQL padrão abaixo na área de texto do Editor de consultas.
#standardSQL SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
(Opcional) Para definir o local de processamento, clique em Mais > Configurações de consulta. Para Local de processamento, escolha
US
. Essa etapa é opcional, já que o local de processamento é detectado automaticamente de acordo com o local do conjunto de dados.Clique em Executar.
Após concluir a consulta, clique na guia Resultados abaixo da área de texto da consulta. Os resultados terão a aparência abaixo:
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
- exclua o projeto que você criou; ou
- Mantenha o projeto e exclua o conjunto de dados.
Como excluir seu conjunto de dados
A exclusão do seu projeto removerá todos os conjuntos de dados e tabelas no projeto. Caso prefira reutilizá-lo, exclua o conjunto de dados criado neste tutorial:
Se necessário, abra a página do BigQuery no console do Google Cloud.
Na navegação, clique no conjunto de dados bqml_tutorial criado.
Clique em Excluir conjunto de dados no lado direito da janela. Essa ação exclui o conjunto, a tabela e todos os dados.
Na caixa de diálogo Excluir conjunto de dados, confirme o comando de exclusão digitando o nome do seu conjunto de dados (
bqml_tutorial
) e clique em Excluir.
Como excluir o projeto
Para excluir o projeto, faça o seguinte:
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
A seguir
- Para saber mais sobre machine learning, consulte o Curso intensivo de machine learning.
- Para uma visão geral do BigQuery ML, consulte Introdução ao BigQuery ML.
- Para saber mais, consulte Como usar o console do Google Cloud.