Um Início Rápido da Previsão de Séries Temporais com um Exemplo Prático usando o FB Prophet

Yang Lyla Blocked Desbloquear Seguir Seguindo 2 de janeiro

Índice

  1. Introdução
  • Análise de Séries Temporais
  • Por que o Facebook Prophet?

2. O Modelo de Previsão do Profeta

  • Crescimento saturado
  • Tendência Alterar pontos
  • Sazonalidade, Efeitos de Férias e Regressores

3. Estudo de caso: previsão de gastos com propaganda com o Profeta

4. Resumo de Fechamento

1.1 Análise de Séries Temporais

A análise de séries temporais é uma abordagem para analisar dados de séries temporais para extrair características significativas de dados e gerar outras informações úteis aplicadas na situação comercial. Geralmente, os dados de séries temporais são uma sequência de observações armazenadas em ordem de tempo. Os dados da série temporal geralmente se destacam ao acompanhar métricas de negócios, monitorar processos industriais e etc.

A análise de séries temporais ajuda a entender os padrões baseados em tempo de um conjunto de pontos de dados métricos que é crítico para qualquer negócio. Técnicas de previsão de séries temporais poderiam responder a questões comerciais como quantidade de estoque para manter, quanto tráfego do website você espera em sua loja virtual para quantos produtos serão vendidos no próximo mês – todos esses são problemas importantes de séries temporais a serem resolvidos . O objetivo básico da análise de séries temporais geralmente é determinar um modelo que descreva o padrão da série temporal e que possa ser usado para previsão.

As técnicas de previsão de séries temporais clássicas são construídas com base em modelos de estatísticas que exigem muito esforço para ajustar modelos e esperar em dados e setor. A pessoa precisa ajustar os parâmetros do método em relação ao problema específico quando um modelo de previsão não funciona como esperado. Ajustar esses métodos requer um entendimento completo de como os modelos de séries temporais subjacentes funcionam. É difícil para algumas organizações lidar com essas previsões sem equipes científicas de dados. E pode parecer que não é lucrativo para uma organização ter um monte de expectativas a bordo, se não houver necessidade de construir uma plataforma de previsão complexa ou outros serviços.

1.2 Por que o Facebook Prophet?

O Facebook desenvolveu um Profhet de fonte aberta, uma ferramenta de previsão disponível em Python e R. Ele fornece parâmetros intuitivos que são fáceis de sintonizar. Mesmo alguém que não possui conhecimentos profundos em modelos de previsão de séries temporais pode usar isso para gerar previsões significativas para uma variedade de problemas em cenários de negócios.

Do site do Facebook Prophet :

“Produzir previsões de alta qualidade não é um problema fácil para as máquinas ou para a maioria dos analistas. Observamos dois temas principais na prática de criar uma variedade de previsões de negócios:

  • Técnicas de previsão completamente automáticas podem ser frágeis e muitas vezes são inflexíveis demais para incorporar suposições ou heurísticas úteis.
  • Os analistas que podem produzir previsões de alta qualidade são muito raros, pois a previsão é uma habilidade especializada em ciência de dados que requer experiência substancial. "

1.3 Destaques do Profeta do Facebook

  • Muito rápido, já que é construído em Stan , uma linguagem de programação para inferência estatística escrita em C ++.
  • Um modelo de regressão aditiva onde as tendências não lineares se ajustam à sazonalidade anual, semanal e diária, além dos efeitos de feriado: 1. Uma tendência de curva de crescimento linear ou logística por partes. O Profeta detecta automaticamente as mudanças nas tendências selecionando pontos de mudança a partir dos dados 2. Um componente sazonal anual modelado usando a série de Fourier 3. Um componente sazonal semanal usando variáveis dummy 4. Uma lista de feriados importantes fornecida pelo usuário.
  • Robusto para perder dados e mudanças na tendência, e normalmente lida com outliers.
  • Procedimento fácil para ajustar e ajustar a previsão ao adicionar conhecimento de domínio ou insights de negócios.

2.1 O Modelo de Previsão do Profeta

O Profeta usa um modelo de séries temporais decomponíveis com três componentes principais do modelo: tendência, sazonalidade e feriados. Eles são combinados na seguinte equação:

y (t) = g (t) + s (t) + h (t) + ?t

  • g (t): curva de crescimento linear ou logística por partes para modelar mudanças não periódicas em séries temporais
  • s (t): mudanças periódicas (por exemplo, sazonalidade semanal / anual)
  • h (t): efeitos de feriados (usuário fornecido) com horários irregulares
  • ?t: contas de termo de erro para quaisquer alterações incomuns não acomodadas pelo modelo
  • Usando o tempo como um regressor, o Profeta está tentando encaixar várias funções lineares e não-lineares do tempo como componentes. A sazonalidade da modelagem como um componente aditivo é a mesma abordagem adotada pela suavização exponencial na técnica de Holt-Winters . O Profeta está enquadrando o problema de previsão como um exercício de ajuste de curva em vez de olhar explicitamente para a dependência baseada no tempo de cada observação dentro de uma série temporal.

2.2 Crescimento saturado

  • Defina um cap capacidade de transporte para especificar o ponto máximo atingível devido aos cenários ou restrições comerciais: tamanho do mercado, tamanho total da população, orçamento máximo etc.
  • Um mínimo de saturação, que é especificado com um floor coluna da mesma maneira que a coluna de cap especifica o máximo.

2.3 Pontos de mudança de tendência

O modelo pode estar sendo overfitting ou underfitting ao trabalhar com o componente de tendência. A entrada de pontos de mudança incorporados no Profeta permitido é aumentada, o ajuste torna-se mais flexível.

Aqui, você pode aplicar bem suas percepções de negócios: grande salto de vendas durante feriados, custo decrescente no futuro por objetivo e etc. Um usuário também pode alimentar manualmente os pontos de mudança com essas percepções de negócios, se necessário. Na plotagem abaixo, as linhas pontilhadas representam os pontos de mudança para a série temporal fornecida.

2.4 Sazonalidade, Efeitos de Férias e Regressores

Os efeitos sazonais s (t) são aproximados pela seguinte função:

O profeta tem um recurso interno de férias que permite entradas de eventos recorrentes personalizados.

Finalmente, o tempo de ação!

3. Estudo de caso: previsão de gastos com publicidade com o Prophet em Python

Eu peguei os dados de exemplo de gastos com publicidade de uma plataforma de marketing digital. Eu também fiz algumas alterações de propósito para torná-lo uma fonte de dados 'falsa' para usar neste estudo de caso.

Aqui, tentamos usar os dados dos últimos 17 meses para prever os próximos 30 dias de gastos com anúncios.

Etapa 1: importar bibliotecas e conjunto de dados:

[Código]:

importar pandas como pd
pd.set_option ('display.max_columns', None)

import numpy como np
de fbprophet import Profeta

% matplotlib inline
import matplotlib.pyplot como plt

exemplo = pd.read_csv ('/… / ad_spend.csv')

Etapa 2: verificar informações de dados

[Código]:

Do exposto acima, o conjunto de dados contém gastos com publicidade diária de um e meio ano de 2017-06-01 a 2018-12-20. Existem 577 linhas e duas colunas (data e gasto) no quadro de dados.

Vamos verificar o valor ausente:

não há nenhum valor faltante (do capaz abaixo) que é ótimo! ?

[Código]:

Etapa 3: Plotar dados da série temporal

Eixo Y: gastos com anúncios; Eixo X: data

Pode ser visto a partir do gráfico que existe um nível aproximadamente constante (a média de gasto diário: 200K USD). A flutuação sazonal e as flutuações aleatórias são aproximadamente constantes em tamanho ao longo do tempo. Isto sugere que é provavelmente apropriado descrever os dados usando um modelo aditivo no qual o Profeta é construído.

Etapa 4: modelagem

Dividir o conjunto de dados em conjunto de treinamento e teste. O conjunto de treinamento contém gastos com anúncios diários de 2017 a 06-01 a 2018 a 11 a 30, enquanto o conjunto de testes contém gastos com anúncios diários de 2018-12-01 a 2018-12-20. Aqui, gostaríamos de usar o conjunto de dados de treinamento para prever os próximos 30 dias de gastos com anúncios.

Vamos tentar primeiro modelo por si só, sem dar nenhum parâmetro.

[Código]:

model1 = Profeta (interval_width = 0.95) # por padrão é 80%

'interval_width = 0.95' , isso define o intervalo de incerteza para produzir um intervalo de confiança em torno da previsão.

Gere o gráfico de previsão abaixo:

Eixo Y: gastos com anúncios; Eixo X: data.

É sempre bom verificar como o modelo funciona nos dados históricos. (Linha azul profunda está prevendo números de gastos, pontos pretos na verdade gastam números. O tom azul claro é 95% de confiança em torno da previsão.) A partir do gráfico, o modelo tenta ajustar todos os pontos de dados sem problemas, mas sazonalidade. O primeiro modelo não está fazendo um bom trabalho ao ajustar os dados apenas aplicando o próprio Prophet.

Para o segundo modelo, vamos aplicar alguns insights de negócios para ajustar o primeiro modelo. Basta fazer algumas perguntas de negócios, como tendências de sazonalidade e eventos de feriados, é fácil inserir essas informações no Profeta.

Nós aplicamos: annual_seasonality, weekly_seasonality, holidays (eventos de feriados criados manualmente aqui, mas você também pode aplicar Country Holidays embutidos pelo Prophet ) e changepoint_prior_scale para tornar o modelo mais flexível para ajustar os pontos de dados. Em seguida, adicionamos sazonalidade mensal.

[Código]:
model2 = Profeta (interval_width = 0.95, yearly_seasonality = True, weekly_seasonality = True, feriados = us_public_holidays, changepoint_prior_scale = 2)
model2.add_seasonality (name = 'mensal', período = 30.5, ordem de fourier = 5, escala_priorida = 0.02).

Gere o gráfico de previsão abaixo:

Eixo Y: gastos com anúncios; Eixo X: data.

A partir do enredo, parece que o segundo modelo é capaz de capturar a sazonalidade e encaixar dados históricos muito bem. (A linha azul escuro está prevendo números de gastos, os pontos pretos na verdade gastam números. A sombra azul clara é um intervalo de confiança de 95% em torno da previsão.)

Verifique os componentes de tendências e sazonalidade:

A partir da tendência anual, os gastos subiram no início do ano e caíram profundamente durante os meses de junho, agosto e dezembro. A tendência semanal mostra que os dias de semana tiveram um grande papel aqui. Além disso, os eventos de fim de ano afetam negativamente o gasto com anúncios, o que significa que diminuiu o gasto com anúncios e assim por diante. Você provavelmente poderia verificar essas informações com o conhecimento do domínio de negócios.

Etapa 5: validação

Primeiro, vamos verificar o ajuste visualizando a linha de previsão e a linha observada:

Eixo Y: gastos com anúncios; Eixo X: data.

A partir do enredo, parece que o modelo é capaz de encaixar os pontos de dados muito bem pensado que não pega o padrão no final de dezembro. No entanto, lembre-se que leva cerca de 15 minutos para inserir todas as informações comerciais para obter tais um resultado justo. Não requer experiência em modelagem de séries temporais ou conhecimento de Aprendizado de Máquina para construir. Quase todo analista é capaz de fazer isso (no entanto, o conjunto de habilidades de Python ou R é obrigatório).

Geralmente, alguns termos de erro populares, como Erro Médio Quadrático da Raiz (RMSE) e Erro Absoluto Médio (MAE), são usados durante a avaliação de modelagem. Mas eu não gostaria de discutir esses termos de erros aqui, pois há apenas um modelo. (Vou discutir esses termos de erro no meu próximo post ao comparar os modelos de séries temporais Profeta e Clássico)

Vamos ver o desempenho do modelo comparando o valor previsto e o valor observado:

[Código]:

Embora o valor previsto seja cerca de 13% maior que o valor real, mas o intervalo entre o valor previsto e o limite inferior é capaz de capturar o valor real. Até agora, o modelo está indo muito bem e leva cerca de 15 minutos.

5. Resumo de Fechamento

Existem muitas análises de séries temporais que podemos explorar a partir de agora, como detecção de anomalias, previsão de séries temporais com fonte de dados externa. Nós apenas começamos.

A partir do exemplo prático, parece que o Profeta fornece previsões completamente automatizadas, assim como o documento oficial afirma. É rápido e produtivo, o que seria muito útil se a sua organização não tivesse uma equipe de dados sólida e sólida, entregando análises preditivas. Ele economiza seu tempo para responder às perguntas de previsão do cliente interno ou do cliente sem gastar muito esforço para criar um modelo incrível baseado em técnicas clássicas de modelagem de séries temporais.

No próximo post, vou comparar as técnicas de previsão de séries temporais Prophet e Classic, como o modelo ARMIA, com foco em eficiência e desempenho.

Referência e fontes úteis:

Facebook Documento oficial do Profeta , deve ler se você gostaria de jogar com o Profeta.

Um Intro para o Facebook Prophet , geralmente explica o que é análise de séries temporais e dá uma visão geral do Facebook Prophet.

Gere Previsões de Séries Temporais Rápidas e Precisas usando o Profeta do Facebook (com códigos Python & R) , ele cobre uma breve introdução do Profeta do Facebook em R e Python. Pode ser útil para você, se você for um usuário R.