六、Prophet
1. 原理
Prophet 是由 Facebook 开发的时间序列预测模型,专为处理具有强季节性、趋势变化以及缺失值和异常值的时间序列数据设计。它的核心思想是将时间序列数据分解为趋势、季节性和假期效应三个部分。
2. 核心公式
推导:
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 模型能有效捕捉时间序列中的趋势和季节性成分,并进行未来的预测。