Prophet:facebook开源的的时序预测算法,基于时间序列分解和机器学习拟合实现预测。
把时间序列分为不同时间间隔和整体趋势的组合,间隔: 年 季度 月 周 日。
适用范围:有数月月(最好一年)的每小时、每天或每周观察的历史数据,有较强的季节性趋势;
已知不定期间隔发生的重要节假日;缺失的历史数据或较大的异常数据的数量在合理范围内;
历史趋势的变化;数据中蕴含的非线性增长的趋势都有一个自然极限或饱和状态;
Prophet 的输入:已知的时间序列的时间戳和对应值;传入prophet的数据分为两列 ds 和 y ,ds表示时间序列的时间戳,y表示时间序列的取值
输出:未来的时间序列走势,可以提供必要的统计指标,包括拟合曲线,上界和下界等。
y_hat:时间序列的预测值
yhat_lower:预测值的下界
yhat_upper:预测值的上界
Prophet可表示为 ,
g(t):增长趋势,线性增长:基于分段线性函数,非线性增长:基于逻辑回归函数。;
s(t) :季节趋势;
h(t):节假日;
φ(t):误差项或者称为剩余项,表示模型未预测到的波动, 服从高斯分布;
模型参数
趋势参数:
变点位置:changepoint_range,百分比值,在前 changepoint_range 长的时序中设置变点,default=0.8。
变点数量:n_changepoint,default=25。
增长变化率:changepoint_prior_scale,变点增长率的分布情况。
季节参数:使用傅里叶级数模拟
seasonality_prior_scale:季节效应,值越小,表示季节效应越不明显。
seasonality_mode: 两种模式,加法和乘法,默认是加法的形式。
节假日项:
holidays_prior_scale:default=10,值越大表示节假日对模型的影响越大。
参考: