Este tutorial ensina como usar o ajuste de hiperparâmetros no BigQuery ML para ajustar um modelo de machine learning e melhorar a performance.
Para realizar o ajuste de hiperparâmetros, especifique a
opção NUM_TRIALS
da instrução CREATE MODEL
em combinação com outras opções específicas do modelo. Quando você define essas opções, o BigQuery ML treina
várias versões ou testes do modelo, cada um com parâmetros ligeiramente diferentes, e retorna o teste com a melhor performance.
Este tutorial usa a tabela de amostra pública tlc_yellow_trips_2018
, que contém informações sobre viagens de táxi na cidade de Nova York em 2018.
Objetivos
Este tutorial vai orientar você nas seguintes tarefas:
- Usar a
instrução
CREATE MODEL
para criar um modelo de regressão linear de referência. - Avalie o modelo de referência usando a
função
ML.EVALUATE
. - Usar a instrução
CREATE MODEL
com opções de ajuste de hiperparâmetros para treinar 20 testes de um modelo de regressão linear. - Revisar os testes usando a
função
ML.TRIAL_INFO
. - Avalie os testes usando a função
ML.EVALUATE
. - Receba previsões sobre viagens de táxi do modelo ideal entre os testes 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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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.
-
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.
- O BigQuery é ativado automaticamente em novos projetos.
Para ativar o BigQuery em um projeto preexistente, acesse
Enable the BigQuery API.
Permissões necessárias
Para criar o conjunto de dados, é preciso ter a permissão de IAM
bigquery.datasets.create
.Para criar o modelo, você precisa das seguintes permissões:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
Para executar a inferência, você precisa das seguintes permissões:
bigquery.models.getData
bigquery.jobs.create
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Introdução ao IAM.
Criar 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 (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.
bq
Para criar um novo conjunto de dados, utilize o
comando bq mk
com a sinalização --location
. Para obter uma lista completa de parâmetros, consulte a
referência
comando bq mk --dataset
.
Crie um conjunto de dados chamado
bqml_tutorial
com o local de dados definido comoUS
e uma descrição deBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Em vez de usar a flag
--dataset
, o comando usa o atalho-d
. Se você omitir-d
e--dataset
, o comando vai criar um conjunto de dados por padrão.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 uma tabela de dados de treinamento
Crie uma tabela de dados de treinamento com base em um subconjunto dos dados da tabela tlc_yellow_trips_2018
.
Siga estas etapas para criar a tabela:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, cole a consulta a seguir e clique em Executar:
CREATE OR REPLACE TABLE `bqml_tutorial.taxi_tip_input` AS SELECT * EXCEPT (tip_amount), tip_amount AS label FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018` WHERE tip_amount IS NOT NULL LIMIT 100000;
Criar um modelo de regressão linear de referência
Crie um modelo de regressão linear sem ajuste de hiperparâmetro e treine-o com os dados da tabela taxi_tip_input
.
Siga estas etapas para criar o modelo:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, cole a consulta a seguir e clique em Executar:
CREATE OR REPLACE MODEL `bqml_tutorial.baseline_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG' ) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
A consulta leva cerca de dois minutos para ser concluída.
Avaliar o modelo de referência
Avalie o desempenho do modelo usando a função ML.EVALUATE
.
A função ML.EVALUATE
avalia as classificações de conteúdo previstas retornadas pelo
modelo em relação às métricas de avaliação calculadas durante o treinamento 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 a seguir e clique em Executar:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.baseline_taxi_tip_model`);
Os resultados são semelhantes aos seguintes:
+---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | 2.5853895559690323 | 23760.416358496139 | 0.017392406523370374 | 0.0044248227819481123 | -1934.5450533482465 | -1934.3513857946277 | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+
O valor de r2_score
para o modelo de referência é negativo, o que indica uma
má adaptação aos dados. Quanto mais próximo de 1
for a pontuação de R2, melhor será a adaptação do modelo.
Criar um modelo de regressão linear com ajuste de hiperparâmetros
Crie um modelo de regressão linear com ajuste de hiperparâmetro e treine-o com os dados da tabela taxi_tip_input
.
Use as seguintes opções de ajuste de hiperparâmetros na instrução CREATE MODEL
:
- A
opção
NUM_TRIALS
para definir o número de testes como 20. - A
opção
MAX_PARALLEL_TRIALS
para executar dois testes em cada job de treinamento, para um total de dez jobs e 20 testes. Isso reduz o tempo de treinamento necessário. No entanto, os dois testes simultâneos não se beneficiam dos resultados de treinamento um do outro. - A
opção
L1_REG
para testar diferentes valores de regularização L1 nos diferentes testes. A regularização L1 remove recursos irrelevantes do modelo, o que ajuda a evitar overfitting.
As outras opções de ajuste de hiperparâmetros compatíveis com o modelo usam os valores padrão, conforme mostrado abaixo:
L1_REG
:0
HPARAM_TUNING_ALGORITHM
:'VIZIER_DEFAULT'
HPARAM_TUNING_OBJECTIVES
:['R2_SCORE']
Siga estas etapas para criar o modelo:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, cole a consulta a seguir e clique em Executar:
CREATE OR REPLACE MODEL `bqml_tutorial.hp_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG', NUM_TRIALS = 20, MAX_PARALLEL_TRIALS = 2, L1_REG = HPARAM_RANGE(0, 5)) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
A consulta leva aproximadamente 20 minutos para ser concluída.
Receber informações sobre os testes de treinamento
Use a função ML.TRIAL_INFO
para conferir informações sobre todos os testes, incluindo os valores, objetivos e status dos hiperparâmetros. Essa função também retorna informações sobre qual teste tem a melhor performance com base nessas informações.
Siga estas etapas para receber informações sobre o teste:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, cole a consulta a seguir e clique em Executar:
SELECT * FROM ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY is_optimal DESC;
Os resultados são semelhantes aos seguintes:
+----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | trial_id | hyperparameters | hparam_tuning_evaluation_metrics | training_loss | eval_loss | status | error_message | is_optimal | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | 7 | {"l1_reg":"4.999999999999985"} | {"r2_score":"0.653653627638174"} | 4.4677841296238165 | 4.478469742512195 | SUCCEEDED | NULL | true | | 2 | {"l1_reg":"2.402163664510254E-11"} | {"r2_score":"0.6532493667964732"} | 4.457692508421795 | 4.483697081650438 | SUCCEEDED | NULL | false | | 3 | {"l1_reg":"1.2929452948742316E-7"} | {"r2_score":"0.653249366811995"} | 4.45769250849513 | 4.483697081449748 | SUCCEEDED | NULL | false | | 4 | {"l1_reg":"2.5787102060628228E-5"} | {"r2_score":"0.6532493698925899"} | 4.457692523040582 | 4.483697041615808 | SUCCEEDED | NULL | false | | ... | ... | ... | ... | ... | ... | ... | ... | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+
O valor da coluna
is_optimal
indica que o teste 7 é o modelo ideal retornado pelo ajuste.
Avaliar os testes do modelo ajustado
Avalie o desempenho dos testes usando a função ML.EVALUATE
.
A função ML.EVALUATE
avalia as classificações de conteúdo previstas retornadas pelo
modelo em relação às métricas de avaliação calculadas durante o treinamento para todos
os testes.
Siga estas etapas para avaliar os testes do modelo:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, cole a consulta a seguir e clique em Executar:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY r2_score DESC;
Os resultados são semelhantes aos seguintes:
+----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | trial_id | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | 7 | 1.151814398002232 | 4.109811493266523 | 0.4918733252641176 | 0.5736103414025084 | 0.6652110305659145 | 0.6652144696114834 | | 19 | 1.1518143358927102 | 4.109811921460791 | 0.4918672150119582 | 0.5736106106914161 | 0.6652109956848206 | 0.6652144346901685 | | 8 | 1.152747850702547 | 4.123625876152422 | 0.4897808307399327 | 0.5731702310239184 | 0.6640856984144734 | 0.664088410199906 | | 5 | 1.152895108945439 | 4.125775524878872 | 0.48939088205957937 | 0.5723300569616766 | 0.6639105860807425 | 0.6639132416838652 | | ... | ... | ... | ... | ... | ... | ... | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+
O valor
r2_score
do modelo ideal, que é o teste 7, é0.66521103056591446
, o que mostra uma melhoria significativa em relação ao modelo de referência.
É possível avaliar um teste específico especificando o argumento TRIAL_ID
na função ML.EVALUATE
.
Para mais informações sobre a diferença entre os objetivos ML.TRIAL_INFO
e as métricas de avaliação ML.EVALUATE
, consulte
Funções de disponibilização de modelos.
Usar o modelo ajustado para prever gorjetas de táxi
Use o modelo ideal retornado pelo ajuste para prever gorjetas para diferentes viagens de táxi. O modelo ideal é usado automaticamente pela função ML.PREDICT
,
a menos que você selecione um teste diferente especificando o argumento TRIAL_ID
. As
previsões são retornadas na coluna predicted_label
.
Siga estas etapas para receber previsões:
No Console do Google Cloud, acesse a página BigQuery.
No Editor de consultas, cole a consulta a seguir e clique em Executar:
SELECT * FROM ML.PREDICT( MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 5 ));
Os resultados são semelhantes aos seguintes:
+----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | trial_id | predicted_label | vendor_id | pickup_datetime | dropoff_datetime | passenger_count | trip_distance | rate_code | store_and_fwd_flag | payment_type | fare_amount | extra | mta_tax | tolls_amount | imp_surcharge | total_amount | pickup_location_id | dropoff_location_id | data_file_year | data_file_month | label | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | 7 | 1.343367839584448 | 2 | 2018-01-15 18:55:15 | 2018-01-15 18:56:18 | 1 | 0 | 1 | N | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 193 | 193 | 2018 | 1 | 0 | | 7 | -1.176072791783461 | 1 | 2018-01-08 10:26:24 | 2018-01-08 10:26:37 | 1 | 0 | 5 | N | 3 | 0.01 | 0 | 0 | 0 | 0.3 | 0.31 | 158 | 158 | 2018 | 1 | 0 | | 7 | 3.839580104168765 | 1 | 2018-01-22 10:58:02 | 2018-01-22 12:01:11 | 1 | 16.1 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 140 | 91 | 2018 | 1 | 0 | | 7 | 4.677393985230036 | 1 | 2018-01-16 10:14:35 | 2018-01-16 11:07:28 | 1 | 18 | 1 | N | 2 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 138 | 67 | 2018 | 1 | 0 | | 7 | 7.938988937253062 | 2 | 2018-01-16 07:05:15 | 2018-01-16 08:06:31 | 1 | 17.8 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 66.36 | 132 | 255 | 2018 | 1 | 11.06 | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+
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.
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
). Em seguida, 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 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.