六、Prophet

1. 原理

Prophet 是由 Facebook 开发的时间序列预测模型,专为处理具有强季节性、趋势变化以及缺失值和异常值的时间序列数据设计。它的核心思想是将时间序列数据分解为趋势、季节性和假期效应三个部分。

2. 核心公式

十大时间序列模型最强总结(六)Prophet_时间序列模型

推导

十大时间序列模型最强总结(六)Prophet_ai_02

3. 优缺点

1)优点

  • 适用于具有季节性和趋势变化的时间序列。
  • 对缺失值和异常值具有较强的鲁棒性。
  • 模型易于使用,适合非专业用户。

2)缺点

  • 对于数据量很大的情况,计算可能会变得比较慢。
  • 对非平稳数据的处理较为简单,可能不足以处理复杂的非平稳特征。

4. 适用场景

Prophet 模型适用于各种具有强季节性和趋势性的数据,例如零售销售、网站流量、生产量等。

5. 核心案例代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from prophet import Prophet  # 使用 prophet 替代 fbprophet

# 生成示例数据:带有季节性和趋势的时间序列
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=365)
data = np.linspace(10, 50, 365) + 10 * np.sin(np.linspace(0, 2 * np.pi, 365)) + np.random.randn(365) * 5

# 创建DataFrame
df = pd.DataFrame({'ds': dates, 'y': data})

# 拟合Prophet模型
model = Prophet(yearly_seasonality=True)
model.fit(df)

# 预测未来30天
future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)

# 可视化
fig = model.plot(forecast)
plt.title('Prophet Model Forecast')
plt.xlabel('Date')
plt.ylabel('Value')
plt.show()

图中展示了时间序列数据(黑色点)及其预测结果(蓝色线)。Prophet 模型能有效捕捉时间序列中的趋势和季节性成分,并进行未来的预测。