Este tutorial ensina como usar o ajuste de hiperparâmetros no BigQuery ML para ajustar um modelo de machine learning e melhorar a performance dele.
Para fazer o ajuste de hiperparâmetros, especifique a
NUM_TRIALS opção
da instrução CREATE MODEL em combinação com outras opções específicas do modelo. Ao definir essas opções, o BigQuery ML treina várias versões ou testes do modelo, cada uma com parâmetros ligeiramente diferentes, e retorna o teste com melhor desempenho.
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 orienta você na conclusão das seguintes tarefas:
- Usar a
CREATE MODELinstrução para criar um modelo de regressão linear de referência. - Avaliar o modelo de referência usando a
ML.EVALUATEfunção. - Usar a instrução
CREATE MODELcom opções de ajuste de hiperparâmetros para treinar 20 testes de um modelo de regressão linear. - Analisar os testes usando a
ML.TRIAL_INFOfunção. - Avaliar os testes usando a função
ML.EVALUATE. - Receber previsões sobre viagens de táxi do modelo ideal entre os testes por
usando a
ML.PREDICTfunção.
Custos
Este tutorial usa 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 Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar a performance dos nossos produtos em cenários 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 pré-existente, acesse
Ativar 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.
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.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Para executar a inferência, você precisa das seguintes permissões:
bigquery.models.getDatabigquery.jobs.create
Para mais informações sobre os papéis e as permissões do IAM em BigQuery, consulte Introdução ao IAM.
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
No Google Cloud console, acesse a página BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em Ver 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 selecione EUA.
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
bq
Para criar um novo conjunto de dados, use o
bq mk --dataset comando.
Crie um conjunto de dados chamado
bqml_tutorialcom o local de 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 datasets.insert
método 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 Google Cloud console, acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo 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âmetros e treine-o nos dados da tabela taxi_tip_input.
Siga estas etapas para criar o modelo:
No Google Cloud console, acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo 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 2 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 de modelo.
Siga estas etapas para avaliar o modelo:
No Google Cloud console, acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo 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 r2_score do modelo de referência é negativo, o que indica um
ajuste ruim para os dados. Quanto mais próximo de 1 for a
R2 pontuação, melhor será o ajuste 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âmetros e treine-o nos 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_TRIALSpara definir o número de testes como 20. - A opção
MAX_PARALLEL_TRIALSpara executar dois testes em cada job de treinamento, totalizando dez jobs e vinte testes. Isso reduz o tempo de treinamento necessário. No entanto, os dois testes simultâneos não se beneficiam dos resultados de treinamento uns dos outros. - A opção
L1_REGpara testar diferentes valores de regularização L1 nos diferentes testes. A regularização L1 remove recursos irrelevantes do modelo, o que ajuda a evitar o overfitting.
As outras opções de ajuste de hiperparâmetros com suporte do modelo usam os valores padrão, conforme mostrado abaixo:
L1_REG:0HPARAM_TUNING_ALGORITHM:'VIZIER_DEFAULT'HPARAM_TUNING_OBJECTIVES:['R2_SCORE']
Siga estas etapas para criar o modelo:
No Google Cloud console, acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo 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
Receba informações sobre todos os testes, incluindo valores de hiperparâmetros, objetivos e status, usando a função ML.TRIAL_INFO. Essa função também retorna informações sobre qual teste tem o melhor desempenho, com base nessas informações.
Siga estas etapas para receber informações sobre o teste:
No Google Cloud console, acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo 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_optimalindica que o teste 7 é o modelo ideal retornado pelo ajuste.
Avaliar os testes de modelo ajustado
Avalie a performance 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 de todos os testes.
Siga estas etapas para avaliar os testes de modelo:
No Google Cloud console, acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo 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_scoredo 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 ML.TRIAL_INFO objetivos e as ML.EVALUATE métricas de avaliação, 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 de 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 Google Cloud console, acesse a página BigQuery.
No editor de consultas, cole a consulta abaixo 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 Google Cloud console.
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:
- No Google Cloud console, 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 Desligar para excluir o projeto.
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 Google Cloud console, consulte Usar o Google Cloud console.