Neste tutorial, você usa um modelo de regressão linear no BigQuery ML para prever o peso de um pinguim com base nas informações demográficas dele. A 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.
Neste tutorial, usamos o conjunto de dados bigquery-public-data.ml_datasets.penguins
.
Objetivos
Neste tutorial, você realizará as seguintes tarefas:
- Criar um modelo de regressão linear.
- Avaliar o modelo.
- Fazer previsões usando o modelo.
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 mais informações sobre os custos do BigQuery ML, consulte os preços do BigQuery ML.
Antes de começar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
Permissões necessárias
Para criar o modelo usando o BigQuery ML, você precisa das seguintes permissões do IAM:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Para executar a inferência, você precisa das seguintes permissões:
bigquery.models.getData
no modelobigquery.jobs.create
Criar um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar o modelo de ML:
No console do Google Cloud, acesse a página do BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em
Conferir ações > 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 Tipo de local, selecione Multirregião e EUA (várias regiões nos Estados Unidos).
Os conjuntos de dados públicos são armazenados na multirregião
US
. Para simplificar, armazene seus conjuntos de dados no mesmo local.Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
Criar o modelo
Crie um modelo de regressão linear usando a instrução CREATE MODEL
e especificando LINEAR_REG
para o tipo de modelo. A criação do modelo inclui treiná-lo.
Confira abaixo informações úteis sobre a instrução CREATE MODEL
:
- A opção
input_label_cols
especifica qual coluna na instruçãoSELECT
deve ser usada como a coluna de rótulo. Aqui, a coluna de rótulos ébody_mass_g
. Para modelos de regressão linear, é preciso que a coluna de rótulo tenha valor real. Ou seja, os valores da coluna precisam ser números reais. A instrução
SELECT
dessa consulta usa as seguintes colunas na tabelabigquery-public-data.ml_datasets.penguins
para prever o peso de um pinguim:species
: a espécie do pinguim.island
: a ilha que o pinguim habita.culmen_length_mm
: o comprimento do cúlmen do pinguim em milímetros.culmen_depth_mm
: a profundidade do cúlmen do pinguim em milímetros.flipper_length_mm
: o comprimento das nadadeiras do pinguim em milímetros.sex
: o sexo do pinguim.
A cláusula
WHERE
na instruçãoSELECT
dessa consulta,WHERE body_mass_g IS NOT NULL
, exclui as linhas em que a colunabody_mass_g
éNULL
.
Execute a consulta que cria seu modelo de regressão linear:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, execute esta consulta:
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;
A criação do modelo
penguins_model
leva cerca de 30 segundos. Para acessar o modelo, acesse o painel Explorer, expanda o conjunto de dadosbqml_tutorial
e, em seguida, expanda a pasta Modelos.
Ver 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. É um número que indica a qualidade da previsão do modelo 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.
Veja as estatísticas do treinamento de modelo que foram geradas ao executar a consulta CREATE MODEL
:
No painel Explorer, expanda o conjunto de dados
bqml_tutorial
e, em seguida, a pasta Modelos. Clique em penguins_model para abrir o painel de informações do modelo.Clique na guia Treinamento e depois em Tabela. Os resultados devem ficar assim:
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 mostra o valor do erro quadrático médio. Uma estratégia de otimização normal_equation é usada automaticamente neste treinamento. Portanto, apenas uma iteração precisa convergir para o modelo final. Para mais informações sobre como definir a estratégia de otimização do modelo, consulte
optimize_strategy
.
Avaliar o modelo
Depois de criar o modelo, avalie o desempenho dele usando a função ML.EVALUATE
.
A função ML.EVALUATE
avalia os valores previstos gerados pelo modelo em relação aos dados reais.
Para entrada, a função ML.EVALUATE
usa o modelo treinado e um conjunto de dados que corresponde ao esquema dos dados usados para treinar o modelo. Em um ambiente de produção, avalie o modelo com dados diferentes daqueles usados para treiná-lo.
Quando você executa ML.EVALUATE
sem fornecer dados de entrada, a função recupera as métricas de avaliação calculadas durante o treinamento. Essas métricas são calculadas usando o conjunto de dados de avaliação reservado automaticamente:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`);
Execute a consulta ML.EVALUATE
:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, execute esta consulta:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL));
A resposta deve ficar assim:
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. Um valor 0
indica que o modelo não explica qualquer variabilidade dos dados de resposta em torno da média. Um valor 1
indica que o modelo explica toda a variabilidade dos dados de resposta em torno da média.
Também é possível visualizar as métricas de avaliação no painel de informações do modelo no console do Google Cloud:
Usar o modelo para prever resultados
Agora seu modelo foi avaliado, a próxima etapa é usá-lo para prever um resultado. Execute a função ML.PREDICT
no modelo para prever a massa corporal em gramas de todos os pinguins que habitam as Ilhas Biscoe.
Para entrada, a função ML.PREDICT
usa o modelo treinado e um conjunto de dados que corresponde ao esquema dos dados que você usou para treinar o modelo, excluindo a coluna de rótulos.
Execute a consulta ML.PREDICT
:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, execute esta consulta:
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'));
A resposta deve ficar assim:
Explicar os resultados da previsão
Para entender por que o modelo está gerando esses resultados de previsão, use a função ML.EXPLAIN_PREDICT
.
ML.EXPLAIN_PREDICT
é uma versão estendida da função ML.PREDICT
.
ML.EXPLAIN_PREDICT
não apenas gera resultados de previsão, mas também gera colunas extras para explicar os resultados da previsão. Na prática, é possível executar ML.EXPLAIN_PREDICT
no lugar de ML.PREDICT
. Para mais informações, consulte Visão geral da Explainable AI no BigQuery ML.
Execute a consulta ML.EXPLAIN_PREDICT
:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, execute esta consulta:
SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'), STRUCT(3 as top_k_features));
A resposta deve ficar assim:
Para modelos de regressão linear, os valores de Shapley são usados para gerar valores de atribuição de recursos para cada recurso no modelo. ML.EXPLAIN_PREDICT
gera as três principais atribuições de recursos por linha da tabela penguins
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.
Explicar o modelo globalmente
Para saber quais recursos geralmente são os mais importantes para determinar o peso do pinguim, use a função ML.GLOBAL_EXPLAIN
.
Para usar ML.GLOBAL_EXPLAIN
, treine novamente o modelo com a opção ENABLE_GLOBAL_EXPLAIN
definida como TRUE
.
Treine novamente e receba explicações globais para o modelo:
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, execute a seguinte consulta para treinar novamente o modelo:
#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;
No editor de consultas, execute a seguinte consulta para receber explicações globais:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
A resposta deve ficar assim:
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.
Excluir o 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.
Excluir o projeto
Para excluir o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
A seguir
- Para uma visão geral sobre ML do BigQuery, consulte Introdução ao ML do BigQuery.
- Para mais informações sobre como criar modelos, consulte a página de sintaxe
CREATE MODEL
.