Neste tutorial, ensinamos a usar a cláusula TRANSFORM da instrução CREATE MODEL para realizar a engenharia de atributos ao mesmo tempo em que você cria e treina um modelo. Com a cláusula TRANSFORM, é possível especificar uma ou mais funções de pré-processamento para transformar os dados de entrada usados no treinamento do modelo. O pré-processamento aplicado ao modelo é feito automaticamente quando você usa o modelo com as funções ML.EVALUATE e ML.PREDICT.
Neste tutorial, usamos o conjunto de dados público bigquery-public-data.ml_datasets.penguin.
Objetivos
Este tutorial vai orientar você nas tarefas a seguir:
- Criar um modelo de regressão linear para prever o tipo de chamada de serviço usando a instrução
CREATE MODEL. Na instruçãoCREATE MODEL, use as funçõesML.QUANTILE_BUCKETIZEeML.FEATURE_CROSSpara pré-processar dados. - Avalie o modelo usando a função
ML.EVALUATE. - Receber previsões do modelo usando a
função
ML.PREDICT.
Custos
Neste tutorial, usamos componentes faturáveis do Google Cloud, incluindo:
- BigQuery
- BigQuery ML
Para mais informações sobre os custos do BigQuery, consulte a página de preços.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- O BigQuery é ativado automaticamente em novos projetos.
Para ativar o BigQuery em um projeto preexistente, acesse
Ative a API BigQuery.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
No console do Google Cloud , acesse a página 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.
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
bq
Para criar um conjunto de dados, use o
comando bq mk --dataset.
Crie um conjunto de dados chamado
bqml_tutorialcom o local dos dados definido comoUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Confirme se o conjunto de dados foi criado:
bq ls
API
Chame o método datasets.insert com um recurso de conjunto de dados definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Criar o modelo
Crie um modelo de regressão linear para prever o peso dos pinguins e treine-o na tabela de amostra penguins.
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. Um modelo de regressão linear 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 cláusula TRANSFORM desta consulta usa as seguintes colunas da instrução SELECT:
body_mass_g: usado no treinamento sem nenhuma mudança.culmen_depth_mm: usado no treinamento sem nenhuma mudança.flipper_length_mm: usado no treinamento sem nenhuma mudança.bucketized_culmen_length: gerado a partir deculmen_length_mm, dividindoculmen_length_mmcom base em quantis com a função analíticaML.QUANTILE_BUCKETIZE();culmen_length_mm: o valorculmen_length_mmoriginal, convertido em um valorSTRINGe usado no treinamento.species_sex: gerado a partir do cruzamento despeciesesexusando a funçãoML.FEATURE_CROSS.
Não é necessário usar todas as colunas da tabela de treinamento na cláusula TRANSFORM.
A cláusula WHERE — WHERE body_mass_g IS NOT NULL AND RAND() < 0.2 — exclui linhas em que o peso dos pinguins é NULL e usa a função RAND para extrair uma amostra aleatória dos dados.
Siga estas etapas para criar o modelo:
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo e clique em Executar:
CREATE OR REPLACE MODEL `bqml_tutorial.penguin_transform` TRANSFORM( body_mass_g, culmen_depth_mm, flipper_length_mm, ML.QUANTILE_BUCKETIZE(culmen_length_mm, 10) OVER () AS bucketized_culmen_length, CAST(culmen_length_mm AS string) AS culmen_length_mm, ML.FEATURE_CROSS(STRUCT(species, sex)) AS species_sex) 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 AND RAND() < 0.2;
A consulta leva cerca de 15 minutos para ser concluída. Depois disso, o modelo
penguin_transformaparece no painel Explorer. Como a consulta usa uma instruçãoCREATE MODELpara criar um modelo, não é possível ver os resultados dela.
Avaliar o modelo
Avalie o desempenho do modelo usando a função ML.EVALUATE.
A função ML.EVALUATE avalia os pesos previstos dos pinguins retornados pelo modelo em relação aos pesos reais dos pinguins nos dados de treinamento.
A cláusula FROM e a instrução SELECT aninhada desta consulta são as mesmas da consulta CREATE MODEL. Como você usou a cláusula TRANSFORM ao
criar o modelo, não é necessário especificar as colunas e transformações
novamente na função ML.EVALUATE. A função os recupera automaticamente do modelo.
Siga estas etapas para avaliar o modelo:
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo e clique em Executar:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.penguin_transform`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL ));
A resposta deve ficar assim:
+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | 64.21134350607677 | 13016.433317859564 | 7.140935762696211E-4 | 15.31788461553515 | 0.9813042531507734 | 0.9813186268757634 | +---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+
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 de
0indica que o modelo não explica a variabilidade dos dados de resposta em torno da média. Um valor1indica que o modelo explica toda a variabilidade dos dados de resposta em torno da média.Para mais informações sobre a saída da função
ML.EVALUATE, consulte Saída.Também é possível chamar
ML.EVALUATEsem fornecer os dados de entrada. Ela usará as métricas de avaliação calculadas durante o treinamento.
Usar o modelo para prever o peso de pinguins
Use o modelo com a função ML.PREDICT para prever o peso dos pinguins machos.
A função ML.PREDICT gera o valor previsto na coluna predicted_label_column_name, neste caso, predicted_body_mass_g.
Ao usar a função ML.PREDICT, não é preciso transmitir todas as colunas usadas no treinamento de modelo. Apenas as colunas usadas na cláusula TRANSFORM são obrigatórias. Assim como a ML.EVALUATE, a função ML.PREDICT
recupera automaticamente as colunas e transformações TRANSFORM
do modelo.
Siga estas etapas para receber previsões do modelo:
No console do Google Cloud , acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo e clique em Executar:
SELECT predicted_body_mass_g FROM ML.PREDICT( MODEL `bqml_tutorial.penguin_transform`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE sex = 'MALE' ));
A resposta deve ficar assim:
+-----------------------+ | predicted_body_mass_g | +-----------------------+ | 2810.2868541725757 | +-----------------------+ | 3813.6574220842676 | +-----------------------+ | 4098.844698262214 | +-----------------------+ | 4256.587135004173 | +-----------------------+ | 3008.393497302691 | +-----------------------+ | ... | +-----------------------+
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 doGoogle Cloud .
No painel de navegação, clique no conjunto de dados bqml_tutorial que você criou.
No lado direito da janela, clique em Excluir conjunto de dados. 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:
- No console 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 sobre o console do Google Cloud , consulte Como usar o console do Google Cloud .