Neste tutorial, você aprenderá a criar um modelo de série temporal para realizar previsões únicas de série temporal com a tabela de amostragoogle_analytics_sample.ga_sessions
.
A tabela ga_sessions
contém informações sobre uma fração dos dados de sessão coletados pelo Google Analytics 360 e enviados ao BigQuery.
Objetivos
Neste tutorial, você usará:
- A instrução
CREATE MODEL
: para criar um modelo de série temporal. - A função
ML.ARIMA_EVALUATE
: para avaliar o modelo. - A função
ML.ARIMA_COEFFICIENTS
: para inspecionar os coeficientes do modelo. - A função
ML.FORECAST
: para prever o total de visitas diárias. - A função
ML.EXPLAIN_FORECAST
: para recuperar vários componentes da série temporal (como periodicidade e tendência) que podem ser usados para explicar os resultados da previsão. - Looker Studio: para visualizar os resultados da previsão.
Custos
Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:
- BigQuery
- BigQuery ML
Para mais informações sobre os custos do BigQuery, consulte a página de preços.
Para mais informações sobre os custos do BigQuery ML, consulte os 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 agora, 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.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como verificar se o faturamento está ativado em um projeto.
- O BigQuery é ativado automaticamente em novos projetos.
Para ativar o BigQuery em um projeto preexistente, acesse
Ative a API BigQuery.
Etapa 1: criar conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar o modelo de ML:
No console do Google Cloud, acesse a página do 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 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.
Etapa 2 (opcional): visualizar a série temporal que você quer prever
Antes de criar o modelo, é interessante ver como fica a série temporal de entrada. Faça isso usando o Looker Studio.
Na consulta do GoogleSQL a seguir, a
cláusula FROM bigquery-public-data.google_analytics_sample.ga_sessions_*
indica que você está consultando as tabelas ga_sessions_*
no
conjunto de dados google_analytics_sample
. Essas tabelas são tabelas particionadas.
Na instrução SELECT
, a consulta analisa a coluna date
da tabela de entrada para o tipo TIMESTAMP
e a renomeia como parsed_date
. A consulta usa a cláusula SUM(...)
e a cláusula GROUP BY date
para acumular totals.visits
diariamente.
#standardSQL SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date
Para executar a consulta, siga estas etapas:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a seguinte consulta do GoogleSQL na área de texto do Editor de consultas.
#standardSQL SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date
Clique em Executar.
A consulta leva cerca de sete segundos para ser concluída. Depois que essa consulta for executada, a saída será semelhante à captura de tela a seguir. Na captura de tela, é possível ver que essa série temporal tem 366 pontos de dados. Clique no botão Explorar dados e, em seguida, em Explorar com o Looker Studio. O Looker Studio é aberto em uma nova guia. Conclua as etapas a seguir na nova guia.
No painel Gráfico, escolha Gráfico de série temporal:
No painel Dados, abaixo do painel Gráfico, entre na seção Métrica. Adicione o campo total_visits e remova a métrica padrão Contagem de registros. Isso é mostrado na figura a seguir.
Depois que você concluir essas etapas, o gráfico a seguir será exibido. O gráfico mostra que a série temporal de entrada tem um padrão sazonal semanal.
Etapa 3: criar seu modelo de série temporal
Em seguida, crie um modelo de série temporal usando os dados do Google Analytics 360.
A consulta do GoogleSQL a seguir cria um modelo usado para
prever totals.visits
.
A cláusula CREATE MODEL
cria e treina um modelo chamado bqml_tutorial.ga_arima_model
.
#standardSQL CREATE OR REPLACE MODEL bqml_tutorial.ga_arima_model OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'parsed_date', time_series_data_col = 'total_visits', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date
A cláusula OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)
indica que você está criando um
modelo de série temporal com base em
ARIMA. Por padrão,
auto_arima=TRUE
,
para que o algoritmo auto.ARIMA
ajuste automaticamente os hiperparâmetros nos modelos
ARIMA_PLUS
. O algoritmo se encaixa em dezenas de modelos candidatos e escolhe
o melhor com o menor
índice de informações do Akaike (AIC, na sigla em inglês).
Além disso, como o padrão é
data_frequency='AUTO_FREQUENCY'
, o processo de treinamento infere automaticamente
a frequência de dados da série temporal de entrada. Por fim, a instrução CREATE MODEL
usa
decompose_time_series=TRUE
por padrão, e os usuários podem entender melhor como a série temporal é prevista
buscando o método componentes de séries temporais, como períodos sazonais e
efeito de fim de ano.
Execute a consulta CREATE MODEL
para criar e treinar seu modelo:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a seguinte consulta do GoogleSQL na área de texto do Editor de consultas.
#standardSQL CREATE OR REPLACE MODEL bqml_tutorial.ga_arima_model OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'parsed_date', time_series_data_col = 'total_visits', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS parsed_date, SUM(totals.visits) AS total_visits FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date
Clique em Executar.
A consulta leva por volta de 43 segundos para ser concluída. Depois disso, o modelo (
ga_arima_model
) aparece no painel de navegação. Como a consulta usa uma instruçãoCREATE MODEL
para criar um modelo, não é possível ver os resultados da consulta.
Etapa 4: inspecionar as métricas de avaliação de todos os modelos avaliados
Depois de criar seu modelo, use a função
ML.ARIMA_EVALUATE
para ver as métricas de avaliação de todos os modelos candidatos avaliados
durante o processo de ajuste automático de hiperparâmetros.
Na consulta do GoogleSQL a seguir, a cláusula FROM
usa a
função ML.ARIMA_EVALUATE
no seu modelo, bqml_tutorial.ga_arima_model
. Por padrão, essa
consulta retorna as métricas de avaliação de todos os modelos candidatos.
Para executar a consulta ML.ARIMA_EVALUATE
,
siga estas etapas:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a seguinte consulta do GoogleSQL na área de texto do Editor de consultas.
#standardSQL SELECT * FROM ML.ARIMA_EVALUATE(MODEL bqml_tutorial.ga_arima_model)
Clique em Executar.
A consulta leva menos de um segundo para ser concluída. Após concluir a consulta, clique na guia Resultados abaixo da área de texto da consulta. Os resultados serão semelhantes à seguinte captura de tela:
Os resultados incluem as seguintes colunas:
non_seasonal_p
non_seasonal_d
non_seasonal_q
has_drift
log_likelihood
AIC
variance
seasonal_periods
has_holiday_effect
has_spikes_and_dips
has_step_changes
error_message
As quatro colunas a seguir (
non_seasonal_{p,d,q}
ehas_drift
) definem um modelo ARIMA no pipeline de treinamento. As três métricas seguintes (log_likelihood
,AIC
evariance
) são relevantes para o processo de ajuste do modelo ARIMA.O algoritmo
auto.ARIMA
usa primeiro o teste KPSS para decidir que o melhor valor paranon_seasonal_d
é 1. Quandonon_seasonal_d
for 1, o auto.ARIMA treinará 42 modelos ARIMA candidatos em paralelo. Quandonon_seasonal_d
não for 1, o auto.ARIMA treinará 21 modelos candidatos diferentes. Neste exemplo, todos os 42 modelos candidatos são válidos. Portanto, a saída contém 42 linhas, em que cada linha está associada a um modelo ARIMA candidato. Para algumas séries temporais, alguns modelos candidatos são inválidos porque não são estáticos ou não podem ser invertidos. Esses modelos inválidos são excluídos da saída, o que faz com que ela tenha menos de 42 linhas. Esses modelos candidatos são ordenados pelo AIC na ordem crescente. O modelo na primeira linha tem o AIC mais baixo e é considerado o melhor modelo. Esse melhor modelo é salvo como o modelo final. Ele é usado quando você chamaML.EXPLAIN_FORECAST
,ML.FORECAST
eML.ARIMA_COEFFICIENTS
, conforme mostrado nas etapas a seguir.A coluna
seasonal_periods
é sobre o padrão sazonal dentro da série temporal de entrada. Ele não tem nada a ver com a modelagem ARIMA. Portanto, ele tem o mesmo valor em todas as linhas de saída. Ele informa um padrão semanal, que está dentro das nossas expectativas, conforme descrito anteriormente na etapa dois.As colunas
has_holiday_effect
,has_spikes_and_dips
ehas_step_changes
são preenchidas somente quandodecompose_time_series=TRUE
. Eles são relacionados ao efeito de fim de ano, picos e quedas e mudanças na etapa dentro da série temporal de entrada, que não estão relacionados à modelagem ARIMA. Portanto, elas são todas iguais em todas as linhas de saída, exceto nos modelos com falha.A coluna
error_message
mostra que o possível erro incorrido durante o processo de ajuste deauto.ARIMA
. Um possível motivo é que as colunas selecionadasnon_seasonal_p
,non_seasonal_d
,non_seasonal_q
ehas_drift
não podem estabilizar a série temporal. Para recuperar a mensagem de erro possível de todos os modelos candidatos, definashow_all_candidate_models=true
.
Etapa 5: inspecionar os coeficientes do seu modelo
A função ML.ARIMA_COEFFICIENTS
recupera os coeficientes do modelo ARIMA_PLUS,
bqml_tutorial.ga_arima_model
. ML.ARIMA_COEFFICIENTS
usa o modelo como a única entrada.
Execute a consulta ML.ARIMA_COEFFICIENTS
:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a seguinte consulta do GoogleSQL na área de texto do Editor de consultas.
#standardSQL SELECT * FROM ML.ARIMA_COEFFICIENTS(MODEL bqml_tutorial.ga_arima_model)
Clique em Executar.
A consulta leva menos de um segundo para ser concluída. Os resultados terão o seguinte formato:
Os resultados incluem as seguintes colunas:
ar_coefficients
ma_coefficients
intercept_or_drift
ar_coefficients
mostra os coeficientes do modelo da parte autoregressiva (AR) do modelo ARIMA. Da mesma forma,ma_coefficients
mostra os coeficientes do modelo da parte de média móvel (MA, na sigla em inglês). Ambos são matrizes, com comprimentos iguais anon_seasonal_p
enon_seasonal_q
, respectivamente. Na saída deML.ARIMA_EVALUATE
, assim como na linha superior, o melhor modelo tem umnon_seasonal_p
de 2 e umnon_seasonal_q
de 3. Portanto,ar_coefficients
é uma matriz de comprimento 2 ema_coefficients
é uma matriz de comprimento 3. Ointercept_or_drift
é o termo constante no modelo ARIMA.
Etapa 6: usar seu modelo para prever a série temporal
A função ML.FORECAST
prevê valores futuros da série temporal com um intervalo de previsão usando
o modelo: bqml_tutorial.ga_arima_model
.
Na consulta GoogleSQL padrão a seguir, a
cláusula STRUCT(30 AS horizon, 0.8 AS confidence_level)
indica que a consulta
prevê 30 períodos futuros e gera um intervalo de previsão
com um nível de confiança de 80%. ML.FORECAST
adota o modelo, além de alguns argumentos opcionais.
Para executar a consulta ML.FORECAST
, use as seguintes etapas:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a seguinte consulta do GoogleSQL na área de texto do Editor de consultas.
#standardSQL SELECT * FROM ML.FORECAST(MODEL bqml_tutorial.ga_arima_model, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Clique em Executar.
A consulta leva menos de um segundo para ser concluída. Os resultados terão o seguinte formato:
Os resultados incluem as seguintes colunas:
forecast_timestamp
forecast_value
standard_error
confidence_level
prediction_interval_lower_bound
prediction_interval_upper_bound
confidence_interval_lower_bound
(suspensa em breve)confidence_interval_upper_bound
(suspensa em breve)
As linhas de saída são ordenadas na ordem cronológica de
forecast_timestamp
. Na previsão de série temporal, o intervalo de previsão, capturado pelos limites mínimo e máximo, é tão importante quanto oforecast_value
. Oforecast_value
é o ponto central do intervalo de previsão. O intervalo de previsão depende destandard_error
econfidence_level
.
Etapa 7: explicar e visualizar os resultados da previsão
Para entender como a série temporal é prevista e visualizar as
séries temporais previstas com a série temporal do histórico e todos os componentes
separados, a função ML.EXPLAIN_FORECAST
prevê valores futuros de séries temporais com um intervalo de previsão usando
seu modelo, bqml_tutorial.ga_arima_model
e, ao mesmo tempo, retorna todos os
componentes separados da série temporal.
Como a função ML.FORECAST
, a
cláusula STRUCT(30 AS horizon, 0.8 AS confidence_level)
indica que a
consulta prevê 30 pontos no tempo futuro e gera um intervalo de previsão
com 80% de confiança. A função ML.EXPLAIN_FORECAST
usa o modelo e alguns
argumentos opcionais.
Para executar a consulta ML.EXPLAIN_FORECAST
, use as seguintes etapas:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a seguinte consulta do GoogleSQL na área de texto do Editor de consultas.
#standardSQL SELECT * FROM ML.EXPLAIN_FORECAST(MODEL bqml_tutorial.ga_arima_model, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Clique em Executar.
A consulta leva menos de um segundo para ser concluída. Os resultados terão o seguinte formato:
Os resultados incluem as seguintes colunas:
time_series_timestamp
time_series_type
time_series_data
time_series_adjusted_data
standard_error
confidence_level
prediction_interval_lower_bound
prediction_interval_lower_bound
trend
seasonal_period_yearly
seasonal_period_quarterly
seasonal_period_monthly
seasonal_period_weekly
seasonal_period_daily
holiday_effect
spikes_and_dips
step_changes
As linhas de saída são ordenadas na ordem cronológica de
time_series_timestamp
. Componentes diferentes são listados como colunas da saída. Para mais informações, consulte a definição deML.EXPLAIN_FORECAST
.Após a conclusão da consulta, clique no botão Explorar dados e, depois, em Explorar com o Looker Studio. O Looker Studio é aberto em uma nova guia.
No painel Gráfico, escolha Gráfico de série temporal:
No painel Dados, faça o seguinte:
- Na seção Dimensão do período, selecione
time_series_timestamp (Date)
. - Na seção Dimensão, selecione
time_series_timestamp (Date)
. - Na seção Métrica, remova a métrica padrão
Record Count
e adicione o seguinte:time_series_data
prediction_interval_lower_bound
prediction_interval_upper_bound
trend
seasonal_period_weekly
step_changes
- Na seção Dimensão do período, selecione
No painel Estilo, role a tela para baixo até a opção Dados ausentes e use Quebras de linha em vez de Linha até zero.
O gráfico a seguir é exibido:
Etapa 8 (opcional): visualizar os resultados da previsão sem ativar a decompose_time_series
Se decompose_time_series
for definido como falso no treinamento ARIMA_PLUS
,
será possível concatenar a série temporal do histórico e a série temporal prevista usando
a cláusula UNION ALL
e a função ML.FORECAST
.
Na consulta a seguir, o SQL antes da cláusula UNION ALL
forma a série temporal
da história. O SQL após a cláusula UNION ALL
usa ML.FORECAST
para gerar a série temporal prevista e o intervalo de
previsão. A consulta usa campos diferentes para history_value
e
forecasted_value
a fim de traçá-los em cores diferentes.
Para executar a consulta, siga estas etapas:
No console do Google Cloud, clique no botão Escrever nova consulta.
Insira a seguinte consulta do GoogleSQL na área de texto do Editor de consultas.
#standardSQL SELECT history_timestamp AS timestamp, history_value, NULL AS forecast_value, NULL AS prediction_interval_lower_bound, NULL AS prediction_interval_upper_bound FROM ( SELECT PARSE_TIMESTAMP("%Y%m%d", date) AS history_timestamp, SUM(totals.visits) AS history_value FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` GROUP BY date ORDER BY date ASC ) UNION ALL SELECT forecast_timestamp AS timestamp, NULL AS history_value, forecast_value, prediction_interval_lower_bound, prediction_interval_upper_bound FROM ML.FORECAST(MODEL bqml_tutorial.ga_arima_model, STRUCT(30 AS horizon, 0.8 AS confidence_level))
Clique em Executar.
Após a conclusão da consulta, clique no botão Explorar dados e, depois, em Explorar com o Looker Studio. O Looker Studio é aberto em uma nova guia. Conclua as etapas a seguir na nova guia.
No painel Gráfico, escolha Gráfico de série temporal:
No painel Dados, abaixo do painel Gráfico, entre na seção Métrica. Adicione as seguintes métricas:
history_value
,forecast_value
,prediction_interval_lower_bound
eprediction_interval_upper_bound
. Em seguida, remova a métrica padrãoRecord Count
.No painel Estilo, role a tela para baixo até a opção Dados ausentes e use Quebras de linha em vez de Linha até zero.
Depois de concluir essas etapas, o gráfico a seguir será exibido no painel esquerdo. A série temporal do histórico de entrada está em azul, enquanto a série prevista está em verde. O intervalo de previsão é a região entre a série limite inferior e a série limite superior.
Limpeza
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.
Na navegação, clique no conjunto de dados bqml_tutorial criado.
Clique em Excluir conjunto de dados no lado direito da janela. 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 do 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
- Saiba como realizar múltiplas previsões de séries temporais com uma única consulta de dados de viagens do Citi Bike de Nova York.
- Saiba como acelerar o ARIMA_PLUS para ativar a previsão de um milhão de séries temporais em algumas horas.
- 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.