Neste tutorial, você vai aprender a fazer previsões univariadas em uma ou várias série temporal usando a função AI.FORECAST com o modelo univariado TimesFM integrado ao BigQuery.
Neste tutorial, usamos dados da tabela pública bigquery-public-data.san_francisco_bikeshare.bikeshare_trips.
Objetivos
- Faça uma previsão univariada e visualize os resultados de uma única série temporal.
- Realizar previsões univariadas e visualizar resultados para várias série temporal.
Custos
Neste tutorial, usamos componentes faturáveis do Google Cloud, incluindo:
- BigQuery
- BigQuery ML
Para mais informações, consulte Preços do BigQuery e Preços do BigQuery ML.
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.
-
Ative a API BigQuery, se ainda não tiver feito isso.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.Para novos projetos, a API BigQuery é ativada automaticamente.
Funções exigidas
Para conseguir as permissões necessárias a fim de concluir as tarefas neste tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Crie o conjunto de dados:
Editor de dados do BigQuery (
roles/bigquery.dataEditor) -
Crie o modelo:
- Editor de dados do BigQuery (
roles/bigquery.dataEditor) - Usuário de jobs do BigQuery (
roles/bigquery.jobUser)
- Editor de dados do BigQuery (
-
Execute a inferência:
- Editor de dados do BigQuery (
roles/bigquery.dataEditor) - Usuário de jobs do BigQuery (
roles/bigquery.jobUser)
- Editor de dados do BigQuery (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para concluir as tarefas neste tutorial. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para concluir as tarefas deste tutorial:
-
Crie o conjunto de dados:
bigquery.datasets.create -
Crie o modelo:
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData
-
-
Execute a inferência:
-
bigquery.models.getData -
bigquery.jobs.create
-
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Introdução ao IAM.Prever uma única série temporal de viagens de aluguel de bicicletas
Preveja valores futuros de série temporal usando a função AI.FORECAST.
A consulta a seguir prevê o número de viagens de aluguel de bicicletas por hora para o próximo mês (aproximadamente 720 horas), com base nos quatro meses anteriores de dados históricos. O argumento confidence_level indica que a
consulta gera um intervalo de previsão com um nível de confiança de 95%.
Siga estas etapas para prever dados com o modelo TimesFM:
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 AI.FORECAST( ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01') GROUP BY TIMESTAMP_TRUNC(start_date, HOUR) ), horizon => 720, confidence_level => 0.95, timestamp_col => 'trip_hour', data_col => 'num_trips');
Os resultados são semelhantes aos seguintes:
+-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | forecast_timestamp | forecast_value | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | 2018-05-01 00:00:00 UTC | 26.3045959... | 0.95 | 21.7088378... | 30.9003540... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | 2018-05-01 01:00:00 UTC | 34.0890502... | 0.95 | 2.47682913... | 65.7012714... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | 2018-05-01 02:00:00 UTC | 24.2154693... | 0.95 | 2.87621605... | 45.5547226... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | ... | ... | ... | ... | ... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
Comparar os dados previstos com os dados de entrada
Crie um gráfico com a saída da função AI.FORECAST e um subconjunto dos dados de entrada da função para comparar.
Siga estas etapas para criar um gráfico da saída da função:
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 AI.FORECAST( ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01') GROUP BY TIMESTAMP_TRUNC(start_date, HOUR) ), horizon => 720, confidence_level => 0.95, timestamp_col => 'trip_hour', data_col => 'num_trips', output_historical_time_series => true);
Quando a consulta terminar, clique na guia Visualização no painel Resultados da consulta. Em Tipo de visualização, selecione Linha. Em Dimensão, selecione
time_series_timestamp. Em Medidas, selecionetime_series_data,prediction_interval_lower_boundeprediction_interval_upper_bound. O gráfico resultante será semelhante a este:
É possível notar que os dados de entrada e os previstos mostram um uso semelhante de aluguel de bicicletas. Também é possível notar que os limites inferior e superior do intervalo de previsão aumentam à medida que os pontos de tempo previstos avançam no futuro.
Prever várias série temporal de viagens de aluguel de bicicletas
A consulta a seguir prevê o número de viagens de aluguel de bicicletas por tipo de assinante e por hora para o próximo mês (aproximadamente 720 horas), com base nos quatro meses anteriores de dados históricos. O argumento confidence_level indica que a
consulta gera um intervalo de previsão com um nível de confiança de 95%.
Siga estas etapas para prever dados com o modelo TimesFM:
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 AI.FORECAST( ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, subscriber_type, COUNT(*) as num_trips FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` WHERE start_date >= TIMESTAMP('2018-01-01') GROUP BY TIMESTAMP_TRUNC(start_date, HOUR), subscriber_type ), horizon => 720, confidence_level => 0.95, timestamp_col => 'trip_hour', data_col => 'num_trips', id_cols => ['subscriber_type']);
Os resultados são semelhantes aos seguintes:
+---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | subscriber_type | forecast_timestamp | forecast_value | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | Subscriber | 2018-05-01 00:00:00 UTC | 26.3045959... | 0.95 | 21.7088378... | 30.9003540... | | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | Subscriber | 2018-05-01 01:00:00 UTC | 34.0890502... | 0.95 | 2.47682913... | 65.7012714... | | +---------------------+-------------------+------------------+-------------------------+---------------------------------+---------------------------------+--------------------+ | Subscriber | 2018-05-01 02:00:00 UTC | 24.2154693... | 0.95 | 2.87621605... | 45.5547226... | | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | ... | ... | ... | ... | ... | ... | | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
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.
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 uma visão geral do BigQuery ML, consulte Introdução à IA e ao ML no BigQuery.
- Saiba como prever série temporal únicas com um modelo multivariável TimesFM.
- Saiba como prever várias série temporal com um modelo multivariável TimesFM.