Previsão de séries temporais com Prophet
Com a popularização da inteligência artificial (IA), as pessoas e empresas estão cada vez mais buscando usar seus modelos de previsão para tomar decisões informadas. Neste post, exploraremos o poder da previsão de séries temporais (time serie forecasting) usando uma das bibliotecas de código aberto mais populares para essa tarefa: Prophet.
O que é previsão de séries temporais?
Uma série temporal é uma sequência de pontos de dados obtidos geralmente em intervalos de tempo igualmente espaçados. Ela possui alguns componentes principais:
Tendência: mostra uma direção geral dos dados da série temporal ao longo de um longo período. Ela pode ser crescente (para cima), decrescente (para baixo) ou horizontal (estacionária)
Sazonalidade: exibe uma tendência que se repete em relação ao tempo, direção e magnitude.
Componente cíclico: tendências sem repetição definida ao longo de um período específico.
Variação irregular: flutuações nos dados da série temporal que se tornam evidentes quando as tendências e variações cíclicas são removidas.
A previsão de séries temporais envolve prever valores futuros em um conjunto de dados sequenciais com base em tendências passadas, sazonalidade e outros padrões subjacentes.
O que é Prophet?
Prophet é uma biblioteca de código aberto projetada para fazer previsões para conjuntos de dados de séries temporais. Ela foi desenvolvida pelo Facebook e seu modelo foi inspirado no modelo de previsão interno da empresa.
Desde seu lançamento, Prophet se tornou um dos algoritmos mais populares para previsões de séries temporais. A biblioteca Prophet é fácil de usar e foi projetada para encontrar automaticamente um bom conjunto de hiperparâmetros para realizar previsões habilidosas. Ela é particularmente boa para séries temporais com fortes efeitos sazonais e várias temporadas de dados históricos. Além disso, Prophet lida bem com dados ausentes e outliers.
Introdução ao Prophet com Python
Para este post, faremos previsões a partir de dados de ações obtidos através da biblioteca yfinance. Portanto, para acompanhar o post na prática, você precisará ter instalados no seu computador/ambiente os seguintes pacotes:
- prophet (pip install prophet)
- yfinance (pip install yfinance)
- pandas (pip install pandas)
- matplotlib (pip install matplotlib)
Previsão de séries temporais com Prophet
Usaremos as variações das ações da Meta (META) como um conjunto de dados de exemplo. Você pode substituí-lo por quaisquer outros dados de ações do yfinance. Portanto, num código Python, importe os pacotes necessários e baixe os dados para as ações que desejar e por um período preferencialmente longo:
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
from prophet import Prophet
# Baixe os dados
dados = yf.download("META", period = "2y", interval = "1d",)
Em seguida, os dados precisam ser convertidos para o formato apropriado:
#Converta os dados para o formato requerido pelo Prophet
prophet_dados = dados.reset_index()
prophet_dados['ds'] = pd.to_datetime(prophet_dados['Date'])
prophet_dados['y'] = prophet_dados['Close'].values
Depois, fazemos o modelo para previsões:
# Crie uma instância do Prophet e fite o modelo
modelo = Prophet()
modelo.fit(prophet_dados)
Visualizando as previsões
# Plote os preços originais
plt.figure(figsize=(10, 6))
plt.plot(prophet_dados['ds'], prophet_dados['y'], color='red', linewidth=2)
plt.title('Preços originais das ações da Meta')
plt.show()
# Realiza previsões com o modelo
futuro = modelo.make_future_dataframe(periods=365)
forecast = modelo.predict(futuro)
# Plota as previsões
plt.figure(figsize=(10, 6))
plt.plot(forecast['ds'], forecast['yhat'], color='lightskyblue', linewidth=2, label='Valores Previstos')
plt.title('Previsões para as ações Meta')
plt.show()