Como fazer previsões com o Google BigQuery
A previsão é uma ferramenta essencial para as empresas, permitindo-lhes prever tendências futuras e tomar decisões informadas. Com o poder do Google BigQuery, você pode realizar previsões com eficiência em grandes conjuntos de dados e obter informações valiosas sobre o futuro de seus negócios.
Neste tutorial, mostraremos os fundamentos da previsão com o BigQuery, incluindo como configurar seus dados, escolher o modelo de previsão adequado e interpretar seus resultados.
Então vamos começar!
O caso de uso: previsão de vendas semanais da loja de comércio eletrônico The Look
O conjunto de dados Look E-commerce Shop coleta dados de vendas de uma loja online. Inclui informações sobre pedidos, produtos, clientes e muito mais. Este conjunto de dados é um excelente recurso para quem quer analisar e entender o comportamento dos clientes de comércio eletrônico e tomar decisões informadas sobre seus negócios.
Aqui está o esquema do banco de dados, para que você possa descobrir como construir suas consultas para análises posteriores:
Com o Google BigQuery, você pode acessá-lo sem esforço!
Por exemplo:
SELECT
user_id,
order_id,
created_at
FROM `bigquery-public-data.thelook_ecommerce.orders`
LIMIT 10
SELECT
DATE_TRUNC(o.created_at, WEEK) as week,
ROUND(SUM(oi.sale_price)) as sales
FROM `bigquery-public-data.thelook_ecommerce.orders` o
INNER JOIN `bigquery-public-data.thelook_ecommerce.order_items` oi
ON o.order_id = oi.order_id
GROUP BY week
ORDER BY week
Shop Weekly Sales
Como fazer previsões com Google BigQuery e ARIMA
ARIMA significa Autoregressive Integrated Moving Average . É um modelo de série temporal que combina três componentes diferentes:
- Termo autorregressivo (AR) : olhamos para os valores passados da série temporal e tentamos prever os valores futuros com base neles.
- Termo integrado (I) : calculamos a diferença entre o valor atual da série temporal e o valor anterior e tentamos prever valores futuros com base nessas diferenças.
- Termo de Média Móvel (MA) : Este termo analisa a média dos valores passados da série temporal e tenta prever valores futuros com base nessa média [1].
Como criar e treinar um modelo ARIMA com o Google BigQuery
Graças ao Google ML, podemos usar o ARIMA[2] com o Google BigQuery :
CREATE MODEL IF NOT EXISTS `your_project.your_dataset.arima`
OPTIONS(MODEL_TYPE='ARIMA_PLUS',
time_series_timestamp_col='week',
time_series_data_col='sales'
) AS
SELECT
DATE_TRUNC(o.created_at, WEEK) as week,
ROUND(SUM(oi.sale_price)) as sales
FROM `bigquery-public-data.thelook_ecommerce.orders` o
INNER JOIN `bigquery-public-data.thelook_ecommerce.order_items` oi
ON o.order_id = oi.order_id
GROUP BY week
ORDER BY week
- o modelo Machine Learning: aqui está como você seleciona ARIMA;
- a coluna a ser considerada para as informações de tempo (carimbo);
- e a coluna para configurar os dados;
Como saber se o modelo de aprendizado de máquina é bom
Depois de criar seu modelo [3], você pode usar a ML.ARIMA_EVALUATEfunção para ver as métricas de avaliação de todos os modelos candidatos avaliados durante o ajuste automático de hiperparâmetros:
SELECT
*
FROM
ML.ARIMA_EVALUATE(MODEL your_project.your_dataset.arima)
- 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,AICevariance) são relevantes para o processo de ajuste do modelo ARIMA.
O AIC ordena esses modelos candidatos em ordem crescente.
O melhor modelo é salvo como o modelo final e é usado quando você chama ML.EXPLAIN_FORECAST, ML.FORECASTconforme mostrado nas etapas a seguir.
O que é AIC (também conhecido como Akaike Information Criterion)
É um estimador de erro de previsão e, portanto, a qualidade relativa de modelos estatísticos para um determinado conjunto de dados.[4]
Ele é usado para comparar diferentes modelos e selecionar o mais econômico, ou seja, tem o menor número de parâmetros e ainda ajusta adequadamente os dados.
Ao avaliar um modelo ARIMA, o AIC é usado para comparar a qualidade de diferentes modelos que possuem diferentes combinações de termos autorregressivos (AR), diferenciais (I) e média móvel (MA).
O modelo com menor AIC é considerado o melhor.
Como usar o melhor modelo para prever a série temporal
Agora é a hora de fazer previsões!
Para isso, você utilizará a função ML.FORECAST, que vem com muitos argumentos, mas apenas dois são necessários:
- A seleção do MODELO: você selecionará aquele que treinou;
- E uma estrutura do BigQuery com 2 parâmetros:
horizoneconfidence_level
Se você deseja prever as próximas 52 semanas de vendas (um ano) com um bom nível de confiança, aqui está a consulta correta:
SELECT
*
FROM
ML.FORECAST(
MODEL your_project.your_dataset.arima,
STRUCT(52 AS horizon, 0.8 AS confidence_level)
)
A exibição inclui pelo menos as seguintes colunas:
forecast_timestampforecast_valuestandard_errorconfidence_levelprediction_interval_lower_boundprediction_interval_upper_bound
Na previsão de séries temporais, o intervalo de previsão, que é capturado pelos limites inferior e superior, é tão importante quanto o forecast_value.
Em outro artigo, explicarei como você pode visualizar suas previsões ao lado de seus dados atuais. Ainda assim, por enquanto, você pode usar a integração do Looker Studio para “traçar” suas previsões:
De acordo com essas projeções, já podemos dizer que a tendência e a sazonalidade são mais críticas para o modelo ARIMA do que os últimos valores: os modelos reproduziram a “forma” de nossas vendas anteriores em vez de favorecer a “exponencialidade” das últimas vendas.
Se você tiver alguma dúvida, sinta-se à vontade para comentar e, se gostou do artigo, siga-me e receberá uma notificação quando eu publicar a próxima.
Referências
[1] Como calcular uma média móvel com SQL , Learning SQL Publication
[2] A instrução CREATE MODEL , documentação oficial do BigQuery ML
[3] Previsão de série temporal única , documentação oficial do BigQuery ML
[4] Critério de informação de Akaike , Wikipedia





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)