Que tal pedir ajuda do Profeta?
Introdução Uma análise de séries temporais tenta estudar o comportamento dos dados, ao longo do tempo, de forma a compreender a estrutura que gerou a série. O objetivo é construir um modelo matemático a partir do qual seja possível prever os valores futuros da série.Em fevereiro de 2017 o Facebook Research lançou a ferramenta open source chamada Facebook Prophet para forecasting (previsão).A ferramenta permite gerar previsões e cenários futuros para séries temporais. Algumas das suas vantagens são:1) análises diárias, semanais e mensais com alguns meses de histórico 2) sazonalidades por dia da semana e época do ano 3) feriados importantes com intervalos irregulares 4) mudanças de tendência bruscas e outliersA biblioteca em Python oferece diversos parâmetros para ajustar e testar o modelo, por exemplo, especificando feriados. Chega de história e vamos codar!
Instalação
1) Para o exemplo eu utilizei o Google Colab, instalei primeiro a lib Pystan e em seguida a FB Prophet:
Importação das libs
2) Importei as libs abaixo para processar, treinar, criar e plotar a previsão:
Importação dos dados
3) Importei também o arquivo milk.csv disponível em: https://raw.githubusercontent.com/Sagu12/FBPROPHET-TIME-SERIES-FORECASTING/main/milk.csv para visualizar a previsão da produção mensal de leite por ano.
Verificando o tipo dos dados
4) É importante verificar quais os tipos de dados da amostra e fazer a conversão se necessário. Neste exemplo, será preciso transformar a coluna mês no tipo data.
Convertendo o tipo dos dados
5) É importante nomear as colunas com os rótulos ds e y. E em seguida converter a coluna ds para datetime.
Checando se está tudo ok pro treino!
6) Antes de iniciar o treinamento do modelo é preciso verificar se está tudo certinho com o dataset. Vamos de .head() e Voilà!
Importando a FB Prophet e treinando o modelo
7) Vamos importar a FB Prophet e verificar o que o algoritmo é capaz de fazer. Uma diferença em relação a outros algoritmos de machine learning é que você roda todo o conjunto de dados e não divide entre treino e teste (70%/30%).
8) A próxima etapa é iniciar o treino do modelo e dar um fit no dataframe!
De volta pro futuro!
9) Aqui você lembra do filme 😉 Vamos declarar o futuro e criar as previsões com os dados no dataframe.
Fazendo as previsões
10) Com o dataframe do futuro criado é possível gerar as previsões. O resultado apresenta uma série de possibilidades e análises. Vamos selecionar apenas as colunas ds, yhat, yhat_lower e yhat_upper da tabela exibida abaixo:
Plotando o output
10) Nesta etapa podemos ver as previsões feitas pela lib. As linhas pontilhadas são os dados reais informados no treino e a linha azul é a previsão:
Tendência dos dados
11) Por último podemos visualizar a tendência dos dados em relação ao ano e aos meses do ano. O primeiro gráfico representa a tendência crescente com o decorrer dos anos e o último exibe uma flutuação nas vendas mensais:
Conclusão
É possível verificar como é simples usar a biblioteca FB Prophet em Python para fazer previsões de séries temporais. No exemplo do estudo fizemos a previsão da produção de leite para os próximos anos. Uma das formas de aperfeiçoar os resultados é realizar a validação cruzada (cross-validation) e calcular outras métricas de performance como a MSE, RMSE, MAE, MAPE etc. Que tal explorar mais os seus dados? O que eles podem dizer sobre um negócio e as próximas decisões? Se quiser trocar mais, conversar sobre dados, Python e Dashboards, pode me add no Linkedin ou Twitter. Boas análises e vamos juntos!
Meu código: https://github.com/CarolBragaRJ/analisedadospython/blob/master/facebook_prophet.ipynb
Artigo postado originalmente: https://medium.com/data-hackers/que-tal-pedir-ajuda-do-profeta-926924c26508
#bigdata #cienciadedados #analytics
- Categoria(s): Ana Carolina Braga ciencia de dados