Facebook lança ferramenta para Forecast Open Source
Em Fevereiro de 2017 a Facebook Research lançou publicamente uma ferramenta open source para forecasting, chama-se Facebook Prophet. A ferramenta está disponível no GitHub para uso em Phython ou R.
A comunidade de Cientistas de Dados ao redor do mundo adoraram a ideia, pois foram também convidados à contribuir com a ferramenta. E ainda por cima tendo a possibilidade de usar uma ferramenta desenvolvida pela Facebook com base nas suas dores e necessidades que geraram aprendizado e uma ferramenta fantástica.
A ferramenta visa contribuir para problemas de geração de previsões e cenários futuros para séries temporais. Veja as características do Prophet (em que ele brilha, segundo o site):
- Observações horárias, diárias ou semanais com pelo menos alguns meses (preferivelmente um ano) de histórico.
- Fortes sazonalidades múltiplas em “escala humana”: dia da semana e época do ano.
- Feriados importantes que ocorrem em intervalos irregulares que são conhecidos antecipadamente (por exemplo, o Super Bowl).
- Um número razoável de observações ausentes ou grandes outliers,
mudanças históricas de tendência, por exemplo, devido a lançamentos de produtos ou alterações no registro. - Tendências que são curvas de crescimento não lineares, em que uma tendência atinge um limite natural ou satura.
A ideia de oferecer uma ferramenta para forecast com menor esforço está tornando o Prophet largamente investigado. Ele usa um processo cíclico, conforme apresentado na Fig.1.
O modelo aditivo é utilizado para a análise de sazonalide (explico melhor este modelo e o modelo multiplicativo neste post). Os quatro componentes principais são:
- Uma tendência de curva de crescimento linear ou logística por partes. O Prophet detecta automaticamente as alterações nas tendências selecionando pontos de mudança dos dados.
- Um componente sazonal anual modelado usando séries de Fourier.
- Um componente sazonal semanal usando variáveis dummy.
- Uma lista de feriados importantes fornecida pelo usuário.
Só para dar um gostinho do visual da ferramenta seguem abaixo algumas figuras obtidas no próprio site do Facebook Research. A ferramenta além de ter uma interface muito agradável é intuitiva e de fácil implementação em Python ou R.
Na Fig.2 você encontra uma análise de sazonalidade em um modelo treinado pela própria ferramenta em um visual bem agradável. Já na Fig. 3 você pode identificar análises de tendência em sub plots com variação de período.
A implementação em Python e em R são muito simples. Porém atenção às interpretações e aos métodos utilizados no modelo OK? (veja mais no site do Prophet). Dá uma olhada nesses códigos obtidos no tutorial geral para Python:
# Python
import pandas as pd
from fbprophet import Prophet
df = pd.read_csv('../examples/example_wp_log_peyton_manning.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
fig2 = m.plot(forecast)
fig3 = m.plot_components(forecast)
Perceba que este código em Python vai gerar exatamente os gráficos que você viu acima, a Fig.2 e a Fig.3. Um detalhe importante: não esqueça de instalar, antes de tudo, o fbprophet, para isso você pode instalar usando o PiP:
#pip install fbprophet
Já que estamos falando de implementação, vamos apresentar aqui o resumo de implementação em R, olha só:
# R
library(prophet)
df <- read.csv('../examples/example_wp_log_peyton_manning.csv')
m <- prophet(df)
future <- make_future_dataframe(m, periods = 365)
forecast <- predict(m, future)
tail(forecast[c('ds', 'yhat', 'yhat_lower', 'yhat_upper')])
# Fig. 2
plot(m, forecast)
# Fig. 3
prophet_plot_components(m, forecast)
Gostou? Legal né? Se quiser contribuir com a comunidade e principalmente para o Facebook Prophet acesse o site principal da ferramenta aqui ou ainda o GitHub do Prophet. Caso queira deixei seus comentários abaixo e continue me acompanhando por aqui ;)
Boas previsões!