Photo by Arthur Ogleznev on Unsplash

Time Series Forecasting: Prophet é mesmo um Profeta?

Valquíria Alencar

--

Olá, pessoal! Recentemente eu e o Allan Spadini escrevemos o livro Séries temporais com Prophet: Análise e previsão de dados com Python. O livro foi publicado pela editora Casa do Código e está disponível nas versões impressa e E-book em: https://www.casadocodigo.com.br/products/livro-series-temporais-prophet.

Capa do livro 🥰

Na capa do livro temos uma bola de cristal e um gráfico de linhas dentro dela indicando algum valor que está caindo e subindo. Por que essa bolinha de cristal? Bom, nesse livro nós discutimos sobre uma biblioteca utilizada na área de Dados, chamada Prophet (que quer dizer Profeta em português). Essa biblioteca pode ser implementada nas linguagens R ou Python e permite a previsão séries temporais.

O que são séries temporais e por que são importantes?

Mas antes de tudo vamos entender o que são séries temporais! Pensei em vários exemplos:

  • Medições diárias da temperatura média de cidade;
  • O número de vendas mensais de uma loja;
  • O número de casos diários de COVID-19;
  • O número de pessoas vacinadas a cada dia em determinada cidade;
  • O preço diário da gasolina;
  • Preço diário de fechamento de uma ação da bolsa de valores;
  • Lucro líquido mensal de uma empresa;
  • Um exame de eletrocardiograma.

Sim! Até um exame que avalia a atividade elétrica do coração por meio de eletrodos fixados na pele (onde temos dados coletados em milisegundos)

Com esses exemplos podemos concluir que quando nós temos dados coletados sequencialmente ao longo do tempo em uma determinada frequência, nós temos o que chamamos de Série temporal!

Essa frequência pode ser:

  • em segundos, minutos, horas (Ex: o valor das ações na bolsa de valores)
  • mensal, trimestral, anual (Ex: faturamento de uma empresa)
  • diário, semanal (Ex: número de acessos em um site)

Quando nós estudamos uma série temporal, podemos estar interessados em descrever o comportamento das séries, identificando a tendência e sazonalidade (Mais adiante vou falar sobre isso!!!) e em fazer previsões dos valores…

Mas qual a importância de prever valores? As previsões podem ser extremamente importantes na tomada de decisões estratégicas em uma empresa e em outras áreas.

A previsão é uma tarefa comum de ciência de dados que auxilia no planejamento, estabelecimento de metas e até mesmo na detecção de anomalias.

detecção de anomalias: identificação de um valor atípico raro ou de um ponto de dados fora das tendências de um conjunto de dados.

No caso da saúde, por exemplo, ter uma ideia do número de casos de COVID-19 pode impulsionar estratégias de contenção e possíveis intervenções para controlar a propagação da doença.

Mesmo que as previsões não sejam uma certeza, saber quais resultados são mais prováveis de acontecerem é bastante útil.

Do que são feitas as séries temporais?

Quando nós analisamos uma série temporal podemos quebrá-la em partes, conhecidas como componentes:

  • Tendência: É a variação da série temporal ao longo do tempo, sendo o padrão de crescimento/descrecimento da variável em um certo período de tempo.
  • Sazonalidade: É a variação que ocorre em períodos de tempo específicos. Por exemplo, no caso de uma série temporal que tenha as temperaturas de uma cidade ao longo do ano: nós sabemos que temos as estações do ano e que isso vai interferir nas temperaturas. Com isso, temos um “padrão” com temperaturas mais altas em uma época do ano e mais baixas em outro período. Se pensarmos no setor de vendas, vamos nos lembrar que em alguns períodos do ano temos mais vendas. Isso envolve datas especiais, como dia dos namorados, dia das mães, dia dos pais, dias das crianças, black friday, natal…Portanto, nestes períodos temos picos de vendas maiores.
  • Ciclo: São períodos cíclicos ou sazonais, não necessariamente associados a um período de tempo, que acontecem de vez em quando. Inclusive, estamos “em pleno 2022, ano da tecnologia, ano da copa do mundo, ano da eleição…” Temos esses dois ciclos marcantes neste ano, que só vão se repetir daqui alguns anos. Em um ano de copa do mundo o pessoal está atrás de camiseta da seleção, álbum de figurinha, corneta, vuvuzela…Até nas eleições a gente vê isso: se você for no comércio vai ter toalha de candidato x, y…O que impulsiona o comércio.
  • Resíduo: o que sobra da série ao remover a tendência e a sazonalidade.

Quais são os maiores problemas na hora de trabalhar com séries temporais?

As etapas necessárias para realizar previsões, com os modelos comumente utilizados, podem dar bastante trabalho. Ainda mais se você não dominar tanto estatística (Bora estudar hein pessoal?! )

Além disso, alguns dados podem ser difíceis de trabalhar, pois nós não podemos controlar os fatores externos e tudo isso influencia na tendência e sazonalidade. Lembro de um projeto que fiz com dados de COVID-19 aqui do Brasil, onde a série temporal possuía alguns picos, devido às ondas com alto número de casos e óbitos e isso dificultou muito as análises.

Nesse sentido, o Prophet pode ser muito útil por possuir uma curva de aprendizagem simples e por ter a possibilidade de alterar diversos hiperparâmetros, permitindo um melhor ajuste dos dados ao modelo de previsão.

Que tipos de modelos são utilizados pelo Prophet?

Essencialmente, o Prophet é um modelo de regressão aditiva. Isso significa que o modelo é simplesmente a soma de vários componentes (opcionais), como os seguintes:

  • Uma curva de tendência de crescimento linear ou logístico;
  • Uma curva de sazonalidade anual;
  • Uma curva de sazonalidade semanal;
  • Uma curva de sazonalidade diária;
  • Feriados e outros eventos especiais;
  • Curvas de sazonalidade adicionais especificadas pelo usuário.

Então, a série usa o termo g para modelar a tendência, o s para as mudanças periódicas e o h para efeitos específicos, como: feriados. O termo de erro e representa informações que não foram refletidas no modelo e, geralmente, é modelado como ruído distribuído normalmente.

Equação do modelo

O modelo aditivo tem maior aderência a séries temporais com tendência linear, ao passo que o modelo multiplicativo se ajusta melhor quando a tendência tem um comportamento exponencial.

Como o Prophet se compara com outras ferramentas de previsão de dados?

O Prophet é mais simples de utilizar. Em poucas linhas de código você consegue obter as previsões, realizar validação cruzada e obter métricas de performance.

Acredito que uma das principais vantagens do Prophet sobre outros modelos é sua interpretabilidade e a possibilidade de alterar parâmetros. Isso permite ajuste de flexibilidade, especificação de pontos de quebra, adição dos feriados e eventos especiais de maneira simples. A proposta do Prophet é justamente gerar um modelo com parâmetros interpretáveis que podem ser ajustados intuitivamente por quem está analisando os dados.

Além disso, uma grande vantagem em relação aos modelos autorregressivos (por exemplo, ARIMA) é que o Prophet não requer séries temporais estacionárias: um componente de tendência é gerado nativamente.

Sim, existem séries temporais que são estacionárias! Uma série é estacionária quando suas características estatísticas permanecem inalteradas ao longo do tempo. Uma série estacionária avança no tempo de forma aleatória, em torno de uma média/variância constante.

Enquanto isso, séries que apresentam tendência (de crescimento ou decrescimento) ou sazonalidade não são estacionárias, pois a média não permanece constante em diferentes janelas de tempo.

Para avaliar a estacionariedade de uma série temporal podemos usar o olhometro 👀 , mas em alguns casos em que não é tão evidente é importante utilizar o teste de Dickey-Fuller.

Mas e como é a performance do Prophet comparada a outros modelos?Já li vários artigos que comparam o Prophet com os modelos. Um artigo publicado em 2022, sobre previsão de lesões no trânsito no nordeste da China, o modelo LSTM (baseado em rede neural) teve a maior precisão de previsão, seguido pelo modelo Prophet, e o modelo SARIMA teve a menor precisão de previsão.

The comparative analysis of SARIMA, Facebook Prophet, and LSTM for road traffic injury prediction in Northeast China

Falando em redes neurais, em 2021 também foi lançado o NeuralProphet. O NeuralProphet preenche a lacuna entre os modelos tradicionais de séries temporais e os métodos de aprendizado profundo, baseado em PyTorch! Não cheguei a testar, mas se você tiver curiosidade: NeuralProphet: The neural evolution of Meta’s Prophet. Acredito que ele seja mais útil quando seus dados não são distribuídos normalmente e/ou quando seus dados são mais complexos.

E o Prophet é usado mesmo por aí? Andei pesquisando esses dias do ResearchGate e tem bastante coisa! Desde preço das ações e bitcoin, até casos de covid-19, taxa de criminalidade, predição da qualidade do ar…

https://www.researchgate.net/search/publication?q=facebook%20prophet

Preciso dominar Python para aprender Prophet?

Por fim, nós escrevemos o livro utilizando a linguagem Python. Mas você precisa dominá-la pra usar o Prophet? Eu diria que não precisa ter um conhecimento avançado, pois no livro tudo é feito passo-a-passo. Além disso, todos os códigos foram desenvolvidos em um ambiente muito amigável de trabalhar: O Google Colaboratory. Caso você domine a linguagem R basta dar uma conferida na documentação do Prophet.

Inclusive, para checar a documentação: https://facebook.github.io/prophet/

Conclusão

Nenhuma previsão vai te entregar 100% de certeza, mas pode ser muito útil para entender o que pode acontecer com os seus dados daqui a um tempo.

O Prophet se mostra uma ferramenta poderosa e prática, até mesmo para quem não tem conhecimento tão profundo em Time Series Forecasting.

Então, bora testar a ferramenta, explorar os hiperparâmetros e avaliar os resultados!!!

Se você não acompanhou a Live de lançamento do livro, vou deixar aqui. Foi um bate-papo muito bacana sobre o tema comigo, o Allan e o Dani Siqueira (da Escola Dados da Alura).

Muito obrigada pela leitura! Qualquer dúvida mande nos comentários ou pode chamar lá no LinkedIn.

--

--

Valquíria Alencar

Data Science & Analytics | Machine Learning | Python | Instrutora de Data Science na Alura