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
- 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.
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
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.
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.
SQL
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.
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
O resultado será semelhante ao seguinte:
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, quee 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
residual
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.
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.
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:
- 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
- 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.