Instruções e requisitos de configuração do laboratório
Proteja sua conta e seu progresso. Sempre use uma janela anônima do navegador e suas credenciais para realizar este laboratório.

Estimar tarifas de táxi com um modelo de previsão do BigQuery ML v1.5

Laboratório 1 hora universal_currency_alt 5 créditos show_chart Avançado
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Este conteúdo ainda não foi otimizado para dispositivos móveis.
Para aproveitar a melhor experiência, acesse nosso site em um computador desktop usando o link enviado a você por e-mail.

Visão geral

O BigQuery é um banco de dados NoOps totalmente gerenciado, de baixo custo, desenvolvido pelo Google e utilizado para análises. Com o BigQuery, você consulta terabytes e terabytes de dados sem gerenciar infraestrutura alguma e sem precisar de um administrador de banco de dados. O BigQuery usa SQL e oferece o modelo de pagamento por utilização. Assim, você pode se concentrar na análise dos dados para encontrar insights relevantes.

O BigQuery Machine Learning (BQML, produto na versão Beta) é um novo recurso do BigQuery. Nele, os analistas de dados podem criar, treinar, avaliar e fazer previsões com modelos de machine learning que exigem o mínimo de programação.

Neste laboratório, você analisará milhões de corridas dos táxis amarelos de Nova York, disponibilizadas em um conjunto de dados público do BigQuery. Em seguida, você criará um modelo de machine learning dentro do BigQuery para prever as tarifas cobradas, tendo como base as entradas do seu modelo. Por fim, você avaliará o desempenho do seu modelo ao fazer as previsões.

Objetivos

Neste laboratório, você aprenderá a realizar estas tarefas:

  • Usar o BigQuery para encontrar conjuntos de dados públicos

  • Consultar e analisar o conjunto de dados público sobre os táxis

  • Criar um conjunto de dados de treinamento e avaliação e usá-lo para fazer previsões em lote

  • Criar um modelo de previsão (regressão linear) no BQML

  • Avaliar o desempenho do seu modelo de machine learning

Você precisará do seguinte:

  • Um projeto do Google Cloud Platform

  • Um navegador (como o Google Chrome ou o Mozilla Firefox)

Configure o ambiente

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
    Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
    Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.

  7. Aceite os termos e pule a página de recursos de recuperação.

Abra o BigQuery no Console do Cloud

  1. No Console do Google Cloud, selecione o menu de navegação > BigQuery:

Você vai ver a caixa de mensagem Olá! Este é o BigQuery no Console do Cloud. Ela tem um link para o guia de início rápido e lista as atualizações da interface.

  1. Clique em Concluído.

Analise os dados sobre corridas de táxi em Nova York

Pergunta: Quantas corridas os táxis amarelos fizeram por mês em 2015?

Adicione a seguinte consulta no Editor de consultas:

#standardSQL
SELECT
  TIMESTAMP_TRUNC(pickup_datetime,
    MONTH) month,
  COUNT(*) trips
FROM
  `bigquery-public-data.new_york.tlc_yellow_trips_2015`
GROUP BY
  1
ORDER BY
  1

Depois, clique em Executar.

Resultado:

BQML_taxi_mo_trips.png

Pergunta: Qual foi a velocidade média das corridas dos táxis amarelos em 2015?

Substitua a consulta anterior pelas informações abaixo e clique em Executar:

#standardSQL
SELECT
  EXTRACT(HOUR
  FROM
    pickup_datetime) hour,
  ROUND(AVG(trip_distance / TIMESTAMP_DIFF(dropoff_datetime,
        pickup_datetime,
        SECOND))*3600, 1) speed
FROM
  `bigquery-public-data.new_york.tlc_yellow_trips_2015`
WHERE
  trip_distance > 0
  AND fare_amount/trip_distance BETWEEN 2
  AND 10
  AND dropoff_datetime > pickup_datetime
GROUP BY
  1
ORDER BY
  1

Resultado:

BQML_taxi_hr_speed.png

Durante o dia, a velocidade média é de aproximadamente 18 a 19 km/h, mas ela quase dobra para 34 km/h às 5h da manhã. Isso faz sentido, já que provavelmente há menos tráfego nesse horário.

Identifique um objetivo

Agora você criará um modelo de machine learning no BigQuery para prever o preço de uma corrida de táxi em Nova York com base no conjunto de dados históricos das corridas e dados sobre as corridas. Prever a tarifa antes da corrida pode ser muito útil no planejamento da viagem, tanto para o passageiro quanto para a empresa de táxi.

Selecione atributos e crie seu conjunto de dados de treinamento

O conjunto de dados público sobre os táxis amarelos de Nova York é fornecido pela cidade e foi carregado no BigQuery para você analisar. Veja a lista completa dos campos aqui e depois visualize o conjunto de dados para encontrar atributos úteis que podem ajudar um modelo de machine learning a entender a relação entre os dados históricos das corridas de táxi e as tarifas cobradas.

Sua equipe decide testar se os campos abaixo serão úteis para o modelo de previsão de tarifas:

  • Valor dos pedágios
  • Valor da tarifa
  • Hora do dia
  • Endereço de partida
  • Endereço de destino
  • Número de passageiros

Substitua a consulta pelo seguinte:

#standardSQL
WITH params AS (
    SELECT
    1 AS TRAIN,
    2 AS EVAL
    ),

  daynames AS
    (SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),

  taxitrips AS (
  SELECT
    (tolls_amount + fare_amount) AS total_fare,
    daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
    EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
    pickup_longitude AS pickuplon,
    pickup_latitude AS pickuplat,
    dropoff_longitude AS dropofflon,
    dropoff_latitude AS dropofflat,
    passenger_count AS passengers
  FROM
    `nyc-tlc.yellow.trips`, daynames, params
  WHERE
    trip_distance > 0 AND fare_amount > 0
    AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.TRAIN
  )

  SELECT *
  FROM taxitrips

Observe estas características da consulta:

  1. A parte principal da consulta está no final: (SELECT * from taxitrips)
  2. taxitrips faz a maior parte da extração para o conjunto de dados de Nova York, e SELECT contém o rótulo e os atributos do treinamento.
  3. WHERE remove os dados que você não quer adicionar ao treinamento.
  4. WHERE também inclui uma cláusula de amostra para coletar apenas 1/1.000 dos dados.
  5. Definimos uma variável chamada TRAIN para você criar um conjunto EVAL independente com rapidez.

Depois, clique em Executar.

Resultados da amostra:

3784193f53252195.png

Qual é o rótulo (resposta correta)?

total_fare é o rótulo (o que será previsto). Como você criou esse campo com base em tolls_amount e fare_amount, pode desconsiderar a inclusão das gorjetas dos clientes no modelo, porque elas são opcionais.

Crie um conjunto de dados do BigQuery para armazenar modelos

Em seguida, crie um novo conjunto de dados do BigQuery que também armazenará seus modelos de ML.

  1. No painel esquerdo, clique no nome do projeto e em Criar conjunto de dados.

Create_dataset1.png

  1. Na caixa de diálogo Criar conjunto de dados, siga estas instruções:

  • Em ID do conjunto de dados, insira taxi.

  • Mantenha os outros valores padrão.

  1. Clique em Criar conjunto de dados.

Selecione um tipo de modelo do BQML e especifique as opções

Agora que você selecionou os atributos iniciais, já pode criar o primeiro modelo de ML no BigQuery.

Há dois tipos de modelos para escolher:

Modelo Tipo de modelo Tipo de dados de rótulo Exemplo
Previsão linear_reg Valor numérico (normalmente um número inteiro ou ponto flutuante) Prever os valores de vendas para o próximo ano com base nos dados históricos das vendas.
Classificação logistic_reg 0 ou 1 para classificação binária Classificar um e-mail como spam ou não spam, de acordo com o contexto.
Classificação multiclasse logistic_reg Esses modelos podem ser usados para prever diversos valores possíveis. Por exemplo, se uma entrada tem um valor "baixo", "médio" ou "alto". Os rótulos podem ter até 50 valores exclusivos. Classificar um e-mail como spam, prioridade normal ou alta importância.

Observação: vários outros tipos de modelo usados em machine learning, como redes neurais e árvores de decisão, estão disponíveis em bibliotecas como o TensorFlow. Por enquanto, o BQML aceita os dois tipos indicados acima.

Qual tipo de modelo você deve escolher? Como você está prevendo um valor numérico (tarifa de táxi), use a regressão linear.

Insira a seguinte consulta para criar um modelo e especificar opções de modelo, substituindo -- paste the previous training dataset query here pela consulta de conjunto de dados de treinamento criada anteriormente (sem a linha #standardSQL):

CREATE or REPLACE MODEL taxi.taxifare_model
OPTIONS
  (model_type='linear_reg', labels=['total_fare']) AS
-- paste the previous training dataset query here

Depois, clique em Executar para treinar o modelo.

Aguarde o modelo ser treinado (5 a 10 minutos).

Após o treinamento do modelo, você verá o resultado This statement created a new model named <Project-ID>:taxi.taxifare_. Isso indica que seu modelo foi treinado corretamente.

Abra seu conjunto de dados sobre os táxis e confirme se taxifare_model aparece desta vez.

Em seguida, você avaliará o desempenho do modelo com novos dados de avaliação.

Avalie o desempenho do modelo de classificação

Selecione os critérios de desempenho

Para modelos de regressão linear, convém usar uma métrica de perda, como a Raiz do erro médio quadrado. Continue treinando e melhorando o modelo até ele atingir a menor RMSE.

No BQML, mean_squared_error é apenas um campo que pode ser consultado durante a avaliação do seu modelo de ML treinado. Basta adicionar SQRT () para gerar a RMSE.

Agora que o treinamento foi concluído, você pode avaliar o desempenho do modelo com essa consulta usando ML.EVALUATE:

#standardSQL
SELECT
  SQRT(mean_squared_error) AS rmse
FROM
  ML.EVALUATE(MODEL taxi.taxifare_model,
  (

  WITH params AS (
    SELECT
    1 AS TRAIN,
    2 AS EVAL
    ),

  daynames AS
    (SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),

  taxitrips AS (
  SELECT
    (tolls_amount + fare_amount) AS total_fare,
    daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
    EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
    pickup_longitude AS pickuplon,
    pickup_latitude AS pickuplat,
    dropoff_longitude AS dropofflon,
    dropoff_latitude AS dropofflat,
    passenger_count AS passengers
  FROM
    `nyc-tlc.yellow.trips`, daynames, params
  WHERE
    trip_distance > 0 AND fare_amount > 0
    AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.EVAL
  )

  SELECT *
  FROM taxitrips

  ))

Agora você está avaliando o modelo com outro conjunto de viagens de táxi usando seu filtro params.EVAL.

Depois que o modelo for executado, revise os resultados (o valor da RMSE do modelo apresentará pequenas variações).

Linha RMSE
1 9.477056435999074

Após avaliar o modelo, você receberá uma RMSE de US$ 9,47. Saber se essa métrica de perda é aceitável ou não para a produção do seu modelo depende totalmente dos critérios de referência definidos antes do treinamento. A referência define um nível mínimo aceitável de desempenho e precisão para o modelo.

Compare as perdas de treinamento e avaliação

Você quer ter certeza de que não está causando o superajustamento, ou overfitting, do seu modelo com os dados. Causar overfitting no seu modelo reduzirá o desempenho dele com dados novos e ainda não acessados. Você pode comparar a perda de treinamento com a perda de avaliação usando ML.TRAINING_INFO.

SELECT * FROM ML.TRAINING_INFO(model `taxi.taxifare_model`);

Isso selecionará todas as informações de cada iteração do treinamento do modelo. O comando incluirá o número da iteração de treinamento, a perda de treinamento e a perda de avaliação.

Para comparar as perdas de treinamento e avaliação, analisaremos visualmente a diferença nas curvas de perda. Clique em EXPLORAR DADOS > Explorar com o Data Studio no Console do Cloud do BigQuery. Isso abrirá o Data Studio com os dados da sua consulta conectados como uma origem de entrada.

Quando solicitado, selecione o botão PRIMEIROS PASSOS.

Selecione AUTORIZAR para permitir que o Google Data Studio acesse seus dados.

Observação: se a mensagem Oops… Not able to connect to your data aparecer, clique em Voltar. Clique em Salvar no Data Studio Explorer.

Clique em PRIMEIROS PASSOS e aceite os Termos de Serviço. Clique em Aceitar.

Selecione Não, obrigado para todas as preferências e clique em Concluído.

Atualize a guia para carregar os dados.

No Data Studio, clique no ícone do Gráfico de combinação.

Gráficos do Data Studio

Em Dimensão, arraste até iteration. Em Métrica, arraste até loss e eval_loss. Isso deve exibir um gráfico de linhas sobre um gráfico de barras.

Perdas no BQML

A perda de treinamento corresponde à perda de avaliação de forma praticamente idêntica, o que indica que não estamos causando overfitting no modelo. Muito bem! É hora de fazer a previsão.

Estime o valor da tarifa de táxi

Agora você escreverá uma consulta para fazer previsões com seu novo modelo:

#standardSQL
SELECT
*
FROM
  ml.PREDICT(MODEL `taxi.taxifare_model`,
   (

 WITH params AS (
    SELECT
    1 AS TRAIN,
    2 AS EVAL
    ),

  daynames AS
    (SELECT ['Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat'] AS daysofweek),

  taxitrips AS (
  SELECT
    (tolls_amount + fare_amount) AS total_fare,
    daysofweek[ORDINAL(EXTRACT(DAYOFWEEK FROM pickup_datetime))] AS dayofweek,
    EXTRACT(HOUR FROM pickup_datetime) AS hourofday,
    pickup_longitude AS pickuplon,
    pickup_latitude AS pickuplat,
    dropoff_longitude AS dropofflon,
    dropoff_latitude AS dropofflat,
    passenger_count AS passengers
  FROM
    `nyc-tlc.yellow.trips`, daynames, params
  WHERE
    trip_distance > 0 AND fare_amount > 0
    AND MOD(ABS(FARM_FINGERPRINT(CAST(pickup_datetime AS STRING))),1000) = params.EVAL
  )

  SELECT *
  FROM taxitrips

));

Agora você verá as previsões do modelo para tarifas de táxi, além das tarifas reais e outras informações sobre as corridas.

Predições de táxi

Mais informações

Dica: ao treinar seu modelo com novos dados, adicione warm_start = true às opções para acelerar o treinamento. Não é possível alterar as colunas de atributos (isso exigiria um novo modelo).

Outros conjuntos de dados para analisar

Use o link abaixo para acessar o projeto bigquery-public-data e criar modelos com outros conjuntos de dados. Você pode estimar as tarifas das corridas de táxi em Chicago:

Parabéns!

Você criou um modelo de ML no BigQuery para estimar as tarifas das corridas de táxi da cidade de Nova York.

Finalize o laboratório

Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.

Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.

O número de estrelas indica o seguinte:

  • 1 estrela = muito insatisfeito
  • 2 estrelas = insatisfeito
  • 3 estrelas = neutro
  • 4 estrelas = satisfeito
  • 5 estrelas = muito satisfeito

Feche a caixa de diálogo se não quiser enviar feedback.

Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.

Copyright 2026 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de empresas e produtos podem ser marcas registradas das empresas a que estão associados.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

A melhor maneira de executar este laboratório é usando uma janela de navegação anônima ou privada. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.