1. Introdução às séries temporais
O estudo e análise de séries temporais não é algo tão simples de realizar e necessita-se de que o profissional de ciência de dados fique atento a determinados detalhes que podem comprometer a sua análise de previsão. Segundo [2], uma Série Temporal é uma sequência de valores observado são longo do tempo, em intervalos iguais.
Um dos principais objetivos do estudo de Séries Temporais é criar modelos que demonstrem o comportamento do fenômeno estudado e, a partir daí, gerar previsões. Quando se pensa por exemplo em fazer uma previsão de vendas de sapatos com dados temporais de registros de vendas mensais nos anos de 2005 a 2017, como seriam os passos a seguir se fosse preciso construir um modelo preditivo que demonstrasse como seria o comportamento dessas vendas nos meses seguintes?
De maneira geral e resumida, poderiam ser aplicados os seguintes passos: (i) análise de tendências e sazonalidades para verificar como seria o comportamento dessa série nessas decomposições,realizar um pequeno experimento com as amostras dos dados obtidos em um modelo seja ele estatístico ou de aprendizado de máquina e verificar como o modelo se comporta em cima desses dados.
É importante ficar atento quando se fala em previsão e como essa previsão será feita, por exemplo, pegando o exemplo do registro de vendas mensais de sapatos, se a previsão é para identificar qual será a quantidade de vendas de sapatos no próximo mês, basicamente é utilizar a última vendado mês anterior para prever a venda do próximo mês, agora se a previsão é para ser feita daqui há 12 meses corridos, significa dizer que o modelo precisa prever a partir do mês anterior aos 12 meses, os próximos 12 meses.
Diante desse contexto, o presente documento pretende realizar um estudo de um mini-case de um conjunto de dados de tópicos mais acessados na internet nos anos de 2004 a 2017, construir um modelo de série temporal utilizando machine learning com os dados de 2004 a 2016 e prever os dados no ano de 2017.
2. Metodologia
Para metodologia desse trabalho foi utilizado o dataset chamado timeline.csv de pesquisas relacionadas a três tópicos pesquisados na internet: dieta, academia e finanças, ou seja, cada um desses tópicos nos anos de 2004 a 2017.
Esse dataset está temporalmente organizado de maneira mensal,cada registro mostra a quantidade de pesquisas em cada tópico mensalmente. A figura 1 abaixo apresenta um recorte desse dataframe.
Para análise do dataset foi aplicado uma decomposição em tendência e sazonalidade para identificar o comportamento da série decomposta.
Para decomposição da tendência foi aplicada uma função de média móvel para retirar ruídos da séries e assim verificar o comportamento da tendência e para sazonalidade foi aplicada uma função de diferença, deixando a série no comportamento estacionário para verificar esse comportamento sazonal.
Para previsão da série foi utilizado o modelo K-nearest Neighbors Regressor da bibliotecas kylearn dopython. O algoritmo KNN é um dos algoritmos de classificação mais simples e é um dos algoritmos de aprendizagem mais usados.
Uma instância de teste é classificada por maioria devotos de seus vizinhos, com a instância sendo atribuída à classe mais comum entre seus vizinhos mais próximos (k é um número inteiro positivo, tipicamente pequeno)[4]. Se k = 1, então, a instância é simplesmente atribuída à classe daquele único vizinho mais próximo. Um dos pontos fracos deste classificador é a definição do parâmetro K, que define o número de vizinhos.
O valor de K controla a forma do limite de decisão. Quando K é pequeno, a região usada para realizara previsão é restrito, forçando o classificador a ser “mais cego” para a distribuição geral. Um pequeno valor para K fornece o ajuste mais flexível, que terá baixa viés, mas alta variância.
Por outro lado, um K mais alto tem a média demais eleitores em cada previsão e, portanto, é mais resistente a outliers . Valores maiores de K irão têm limites de decisão mais suaves, o que significa menor variância, mas maior viés [1].
Para validação do modelo será utilizado a medida de erro RMSE (Erro Quadrático Médio) e a visualização da previsão do mesmo que apresentou melhor RMSE.
3. Experimento e resultados sobre sérires temporais
Antes da realização dos experimentos e geração de resultados foram utilizados os seguintes passos:
•Passo 1:verificar o comportamento natural da série temporal ao longo do tempo nos três tópicos: dieta, academia e finanças como representado na figura 2.
•Passo 2:Decompor as séries temporais separadamente em tendências representado na figura 3. Para realização dessa decomposição, foi aplicada a média móvel de período 12 dos pandas, pois como a série é mensal no intervalo de 14 anos, o melhor período seria de 12 meses.
•Passo 3:Decompor as séries temporais separadamente em sazonalidades representado na figura 4. Para realização dessa decomposição, foi aplicada a função diff do pandas e foi verificado que para todos os tópicos opico sazonal era nos meses de janeiro de cada ano.
•Passo 4: Aplicar função de janelamento nos dados para cada tópico e separar os conjuntos de treinamento e de teste para análise de previsão do modelo.
O modelo escolhido para realizar a previsão do case foi o K-nearest Neighbors Regressor da bibliotecaskylearn do pyhton. O motivo da escolha desse modelo é que, diferente dos demais,ele é mais simples de parametrizar porter apenas um parâmetro que é o número de vizinhos e essa facilidade faz com que ele seja um forte candidato a ser um dos primeiros modelos a serem testados em problemas de séries temporais para verificar a complexidade da previsão.
O modelo foi variado com número de K no intervalo [2:7] e foi filtrado o melhor resultado, ou seja, o menor RMSE de previsão para cada tópico como representado pela tabela 1 e visualmente pelas figuras 6, 7 e 8
. Conclusões
Esse mini-estudo apresentou de forma resumida o processo para se construir um modelo de previ-são de séries temporais utilizando algoritmos de machine learning. Espera-se que esse documento sirva como um norte para os cientistas que pretendem se aventurar nesse ramo de séries temporais.
Gostou da aula? Continue navegando nos conteúdos do Semantix Lab e aprenda muito mais!