Créditos: Gifer

O que são séries temporais e como aplicar em Machine Learning

Entenda os conceitos básicos de time series forecasting e como preparar os dados para previsão

Paulo Vasconcellos
Published in
5 min readJul 18, 2018

--

Uma das aplicações mais fascinantes de Machine Learning — embora pouco conhecida — é a previsão de séries temporais. Esse termo sexy não é tão novo quanto o hype que é gerado em cima da tecnologia, mas tem se mostrado acima da média quando falamos de performance e valor gerado para o mercado. O post de hoje tem como objetivo te conceder uma visão geral sobre Time Series, salientando os conceitos básicos e seus jargões. Esse artigo não tem foco em mostrar código, pois existem inúmeras maneiras de realizar uma previsão de séries temporais, seja usando linguagens de programação ou ferramentas. Vamos lá?

O que são Time Series?

Uma série temporal nada mais é do que uma série de observações registradas sequencialmente no decorrer do tempo. Soou confuso? Vamos simplificar:

Imagine que você vende picolé na praia e decide registrar suas vendas em uma tabela. Quando digo “tabela”, é exatamente isso: um documento no Excel, Google Sheet ou até uma tabela no banco de dados. Nela você registra o quanto de picolé vendeu a cada dia no ano, começando em janeiro de 2018. Você deve concordar comigo que sua tabela é mais ou menos assim:

Essa tabela que você vê acima é uma série temporal. Você tem dados — ou observações — registradas ao longo do tempo. Contudo, percebeu que lá em cima eu grifei a palavra “sequencialmente”? Isso é porque esse é um pré-requisito para que você tenha uma Time Series: o seu dado precisa estar em uma frequência de tempo.

Em nosso exemplo acima, nossa frequência de tempo é Dia, com registros para cada dia do ano, mas, você pode criar uma tabela com dados mensais, anuais, e por aí vai.

Agora que você sabe o que é uma série temporal, está na hora de saber como prever dados futuros.

Série estacionária

Um outro pré-requisito para que sua série temporal possa ser prevista é que ela precisa ser estacionária. Se você não tem idéia do que isso significa, eu explico:

Uma série estacionária — do inglês Stationary Series — é aquela cujo a média e variância permanece constante ao longo do tempo. Abaixo, você consegue ver um exemplo de série estacionária e não-estacionária.

Créditos: Analytics Vidhya

Perceba que a primeira série possui um padrão que permanece constante ao longo do tempo, enquanto a segunda tem uma tendência de crescimento. Embora na imagem acima esteja bem claro que a série não é estacionária, muita das vezes fica bem difícil saber essa informação. É nessa hora que um teste estatístico pode nos ajudar: o Teste de Dickey-Fuller, também conhecido como Teste de Dickey-Fuller Aumentado, ou simplesmente ADF.

Resumidamente, esse teste é capaz de nos dizer se a nossa série é estacionária ou não. Vamos imaginar que depois de registrar todos os dias em que vendeu picolé, a distribuição dos seus dados fica assim:

De acordo com o que a gente aprendeu, está claro que essa série não é estacionária — é possível perceber uma tendência de crescimento à medida que o tempo passa. Mas, por via das dúvidas, vamos rodar o Teste de Dickey-Fuller e ver o que ele diz:

Após o teste ser rodado, você receberá um resultado semelhante ao que vê acima. Preste atenção às seguintes informações:

Perceba que há três valores críticos — Critical Value — no fim da tabela: 10%, 5%, 1%. Nosso principal interesse é fazer com que o valor do Teste Estatístico (-0.803967) seja menor que o valor crítico de 1%. Caso isso aconteça, nós podemos dizer que nossa série é estacionária. Segundo o resultado do teste, a sua série temporal de venda de picolé não é estacionária.

Fazendo uma série ser estacionária

Mas, e aí? O que fazemos agora? Sua time series não é estacionária, isso quer dizer que não podemos prever valores futuros para ela? Felizmente, podemos sim. Existem algumas técnicas que podem ser utilizadas para transformar uma série não-estacionária em uma série estacionária.

Não vou entrar em detalhes muito profundos, mas, basicamente, as técnicas mais utilizadas para transformação de uma série são:

  • Calcular a raiz quadrada de todas as observações da série temporal
  • Calcular a raiz cúbica de todas as observações da série temporal
  • Calcular o log de todas as observações da série temporal
  • Calcular a primeira diferença de todas as observações da série temporal

Tirar a primeira diferença — do inglês First Difference — é bem simples: basta subtrair o valor de uma observação por um valor defasado. Por exemplo: subtrair o valor de hoje pelo valor de ontem, ou pelo valor de sete dias atrás, e por aí vai.

Para cada uma das transformações que você fizer, será necessário realizar o teste de Dickey-Fuller novamente e acompanhar os resultados. Para saber mais a fundo sobre como funciona as técnicas de transformação, visite o site da Universidade Duke.

Em nosso exemplo, eu vou inicialmente tirar o log das observações e realizar o teste estatístico de novo:

Parece que a nossa transformação teve bons resultados. Agora nosso Teste Estatístico (-4.626151) teve um valor menor que o valor crítico de 1% (-3.518281). Agora sim nossa série está estacionária e pronta para previsão!

E aí, curtiu o post? Esse é o primeiro artigo de uma série sobre como criar suas próprias previsões de séries temporais. Muito em breve a segunda parte estará aqui para você começar a criar suas próprias previsões. Até lá!

--

--

Paulo Vasconcellos

Principal Data Scientist @ Hotmart | Msc in Computer Science | Co-founder @ Data Hackers