Séries temporais com Machine Learning — Parte 1

Uma breve comparação entre a abordagem usando a estatística clássica e o uso dos modelos de Machine Learning em quatro artigos

Carlos Eduardo Souza
Data Hackers
8 min readFeb 16, 2020

--

Em estatística, econometria, matemática aplicada e processamento de sinais, uma série temporal é uma coleção de observações feitas sequencialmente ao longo do tempo. Uma característica muito importante deste tipo de dados é que as observações vizinhas são dependentes e o interesse é analisar e modelar essa dependência.

As séries temporais existem nas mais variadas atividades, como: finanças, marketing, economia, seguros, demografia, ciências sociais, meteorologia, energia, epidemiologia.

A suposição básica que norteia a análise de séries temporais é que há um sistema causal mais ou menos constante, relacionado com o tempo, que exerceu influência sobre os dados no passado e pode continuar a fazê-lo no futuro. Este sistema causal costuma atuar criando padrões não aleatórios que podem ser detectados em um gráfico da série temporal, ou mediante algum outro processo estatístico.

O objetivo da análise de séries temporais é identificar padrões não aleatórios na série temporal de uma variável de interesse, e a observação deste comportamento passado permiti fazer previsões sobre o futuro, orientando a tomada de decisões.

A estatística clássica é bastante prolifica em fornecer modelos para análise de série temporais, esses modelos são compostos de quatro padrões:

Tendência (T), que é o comportamento de longo prazo da série, que pode ser causada pelo crescimento demográfico, ou mudança gradual de hábitos de consumo, ou qualquer outro aspecto que afete a variável de interesse no longo prazo.

Ciclos ©, flutuações nos valores da variável com duração superior a um ano, e que se repetem com certa periodicidade , que podem ser resultado de variações da economia como períodos de crescimento ou recessão, ou fenômenos climáticos.

Sazonalidade (S), flutuações nos valores da variável com duração inferior a um ano, e que se repetem todos os anos, geralmente em função das estações do ano .

Variações irregulares (I), que são as flutuações inexplicáveis, resultado de fatos fortuitos e inesperados como catástrofes naturais, atentados terroristas como o de 11 de setembro de 2001, decisões intempestivas de governos, etc.

Da análise desses padrões derivam uma série de modelo ARMA, ARIMA, SARIMA, SARIMAX, VARIMA, VARIMAX, entre outros.

Paralelamente observamos o aumento no uso de modelos de Machine Learning, impulsionado pelos resultados obtidos por empresas como Google, Facebook, Amazon, Netflix, Apple.

Desse cenário surgem duas perguntas: Como usar modelos de Machine Learning para predizer séries temporais? Eles podem obter melhores resultados em relação a estatística clássica?

Em 4 artigos vou explorar algumas abordagens na análise de séries temporais para demonstrar a possibilidade de usar modelos clássicos e de machine learning para tratar esse casos.

Para responder essas perguntas eu utilizei os dados do Kaggle para a competição Web Traffic Time Series Forecasting como base.

Nessa competição foram fornecidos dados de visualização de mais de 145 mil páginas da Wikipedia, por um período de 550 dias. Os participantes tiveram total liberdade para modelar usando de modelos univariados e multivariados, modelagem hierárquica de séries temporais (para diferentes tipos de tráfego), aumento de dados (por exemplo, usando dados do Google Trends para estender o conjunto de dados), detecção e limpeza de anomalias e outliers, estratégias diferentes para imputação de valores ausentes e muitos outros tipos de abordagens.

Dada a boa qualidade dos dados optei por uma abordagem diferente em relação a proposta do desafio. Optei por testar diversas de técnicas de modelagem em um tema relevante.

Escolhi um tema que fosse relevante comercialmente, que me permitisse aplicar tanto conhecimento de negócio como diferentes modelos e comparar os resultados.

O tema: NFL

Com quase 200 milhões de espectadores no mundo todo, o Super Bowl só perde em audiência para a final da Uefa Champions League.

O evento tem o espaço publicitário mais caro do planeta, com marcas que chegam a pagar US$ 5 milhões por anúncio (dados de 2017).

A lista da revista Forbes com os 50 times mais valiosos do esporte mundial tem o Dallas Cowboys liderando a comparação com equipes de todos os esportes. O valor de mercado da franquia é de 5 bilhões de dólares, 1ª colocada do ranking nos quatro últimos anos.

Por esses números é possível concluir que o futebol americano é um esporte relevante, para o qual faz sentido econômico desenvolver um produto de dados.

Por exemplo, se eu estou interessado em veicular conteúdo sobre o esporte posso usar os dados de visita nas páginas da Wiki para prever qual a quantidade de pesquisas pelo tema. Ou estimar qual o tamanho do meu armazenamento em nuvem dado o volume de consultas sobre o tema.

A partir dos dados do Kaggle, pesquisei e escolhi as páginas da NFL na Wikipedia sobre as temporadas 2015 e 2016. Os dados são de julho de 2015 até dezembro de 2016.

Visualização das páginas das temporadas 2015 e 2016 da NFL na Wikipedia

Algumas informações sobre o esporte e os aspectos do calendário, já que o foco em séries temporais.

Entre abril e maio acontece o Draft, que é o processo de escolha de novos jogadores para a liga. Há uma ordem para que os times escolham os jogadores em função do desempenho na temporada anterior, os piores classificados tem as primeiras escolhas. Essas escolhas podem ser negociadas com os outros times, mediante há uma série de regras e acordos.

Após a seleção dos novos jogadores, os times passam por um período de treinamento antes da temporada regular e ao final dessa preparação fazem 4 jogos para decidir quais jogadores permaneceram no plantel pelo restante do ano.

Diferente da temporada regular, os jogos de preparação não são definidos de acordo com uma rotação pré-estabelecida. A função da liga é exclusivamente marcar a data e os horários das partidas, separando quais delas terão transmissão em cadeia nacional. As franquias são livres para negociar jogos umas com as outras e escolhem seus adversários sem nenhuma interferência externa.

Nos primeiros jogos, ainda sem ritmo de competição, os atletas da equipe principal são utilizados por duas ou três posses de bola, dando mais oportunidades para os jogadores reservas. Nos dois jogos seguintes, os titulares permanecem em campo por mais tempo, geralmente até o intervalo, e as equipes começam a ser esboçadas. Na última partida, pensando em evitar lesões ou desfalques para a primeira semana ou para a temporada, as equipes costumam jogar só com os reservas, oferecendo uma grande chance para os atletas que ainda precisam se garantir no elenco mostrarem serviço.

A temporada regular acontece de setembro a dezembro, num total de 17 semanas, com cada time indo a campo 16 vezes. São 32 times, divididos em 2 conferências, com 4 divisões cada, ou seja, cada divisão tem 4 times.

Os jogos de cada rodada acontecem quinta-feira, com um jogo, domingo, com o maior número de jogos e segunda-feira, com um jogo. Apenas no feriado de Ação de Graças (Thanksgiving), a quinta-feira tem 3 jogos.

Em janeiro acontecem os playoffs, confrontos eliminatórios, em jogo único. Esses jogos envolvem os 4 campeões de cada divisão mais dois times melhores classificados. Nessa fase acontecem 6 jogos, sendo 3 em cada conferência.

Em fevereiro os campeões de cada conferência se enfrentam em jogo único, o SuperBowl, para decidir o campeão do ano.

Em geral a cobertura da liga é bastante prolifica na produção de conteúdo, logo sempre há noticias sobre os times e atletas.

Essa introdução inicial é importante pois situa aqueles que não estão habituados com o tema.

O dataset fornecido pelo Kaggel tem 550 data points e por ser um problema de série temporais, a janela de observação para NFL pode ser considerada curta, dado que o evento acontece predominantemente em apenas 3 meses do ano. Logo podemos não ter informações suficientes sobre sazonalidade e tendência.

O processo de modelagem

Para séries temporais é bastante comum estabelecer como baseline de predição que o próximo ponto será igual ao último ponto observado, ou seja, uma hipótese ingênua: “amanhã será o mesmo de hoje”. No entanto, em vez de um modelo como 𝑦̂ 𝑡=𝑦𝑡−1 (que na verdade é uma excelente linha de base para qualquer problema de previsão de séries temporais e, às vezes, é impossível de superar), vamos usar algo um pouco diferente, logo abaixo.

Outro fator importante é estabelecer a métrica de avaliação do modelo. No caso optei pelo MAPE (Mean absolute percentage error).

MAPE

O MAPE é uma derivação de outra métrica, o MAE (Mean absoulte error), o MAE é uma métrica interpretável porque tem a mesma unidade de medida que a série inicial, [0,+∞).

MAE

Como o MAPE é uma medida de erro, logo, números altos são ruins e números baixos são bons. É bastante fácil de explicar, o que ajuda a entender sua popularidade. Não depende da escala e pode ser aplicado facilmente a produtos de alto e baixo volume.

Conforme comentei, para tornar as coisas um pouco mais interessantes optei por usar como baseline a predição feita com Facebook Prophet.

O Prophet é um algoritimo para prever dados de séries temporais com base em um modelo aditivo no qual tendências não lineares se ajustam à sazonalidade anual, semanal e diária, além de efeitos de férias.

Funciona melhor com séries temporais que têm fortes efeitos sazonais e várias temporadas de dados históricos. É robusto para a falta de dados e mudanças na tendência e normalmente lida bem com outliers.

O Prophet é usado em muitos aplicativos no Facebook para produzir previsões confiáveis ​​para planejamento e estabelecimento de metas. Fornece uma previsão razoável com poucas linhas de código.

Os dados do Kaggle para essa competição não necessitaram de nenhum processo de limpeza, como preenchimento de valores ausentes, transformação de variáveis categóricas, tratamento de campos preenchidos com códigos, etc.

Para fazer a predição com o Prophet é necessário que os dados estejam em dataframe com um formato específico, a variável temporal deve estar denominada como ds e variável resposta como y.

Predição e análise de tendência com FB Prophet — MAPE 28.5876%

Mesmo sem ajuste de hiperparâmetros o Prophet é capaz de entregar um bom resultado. Além da predição com intervalo de confiança, é possível obter uma análise dos componentes utilizados na predição.

Na sequência dos artigos eu volto a modelar usando o Prophet e escrevo mais sobre suas características.

A partir de agora, o objetivo é melhorar a predição reduzindo o erro.

Não deixe de acompanhar os próximos artigos.

Se você gostou do que encontrou até aqui, não deixe curtir. Compartilhe com sua rede. Deixe seus comentários para que possamos trocar experiências sobre o mundo do Data Science.

Acesse o projeto completo no Github:

https://github.com/SouzaCadu/Time-Series

Referências

https://medium.com/open-machine-learning-course/open-machine-learning-course-topic-9-time-series-analysis-in-python-a270cb05e0b3

--

--