文章链接:
时间序列预测——ARIMA模型https://blog.csdn.net/beiye_/article/details/123317316?spm=1001.2014.3001.5502
1、Propht模型概述
Prophet模型是Facebook于2017年发布开源的时间序列预测框架。Prophet适用于各种具有潜在特殊特征的预测问题包括广泛的业务时间序列问题,并且其对时间序列趋势变化点的检测、季节性、节假日以及突发事件具有更好的拟合效果。
Prophet模型内部由循环中的分析师与自动化两部分构成一个循环体系。Prophet的预测过程是根据预测问题建立时间序列模型,对历史数据进行仿真,评估模型的效果,根据出现的问题,进一步进行调整和建模,最终以可视化方式反馈整个预测结果。
Prophet模型循环结构图
Prophet模型是一个加法回归模型,它由三个核心部分trend(趋势项)、seasonality(季节项)及holidays(假期项)构成。
Prophet模型基本组成公式:y(t)=g(t)+s(t)+h(t)+εt
2、Prophet的算法原理
常见的时间序列场景
黑色表示原始的时间序列散点;深蓝色的线表示使用时间序列来拟合所得到的取值;浅蓝色的线表示时间序列的一个置信区间,也就是所谓的合理的上界和下界。
prophet工作机制:
- 输入已知的时间序列的时间戳和相应的值
- 输入需要预测的时间序列的长度
- 输出未来的时间序列走势
- 输出结果可以提供必要的统计指针,包括拟合曲线、上界、下界等
prophet所需时间序列的存储格式:
只需要用CSV文件存储两列,第一列为时间序列的时间戳(ds),第二列为时间序列的取值(y)。
prophet所需时间序列的存储格式
通过prophet的计算,可以计算出时间序列的预测值(yhat)、预测值的下界(yhat_lower)、预测值的上界(yhat_upper)。
prophet的计算结果
Prophet预测结果
深色线拟合了黑色圆点所代表的实际值,并且给出了未来6个月的预测值,浅色区域表示了预测的合理范围yhat upper和yhat lower。
3、Prophet的算法实现
在时间序列分析领域,有一种常见的分析方法叫做时间序列的分解(Decomposition of Time Series),它把时间序列分成几个部分,分别是季节项,趋势项,剩余项。
加法形式:
乘法形式:
Prophet基于这种方法进行了必要的改进和优化。在实际生活和生产环节中,除了季节项,趋势项,剩余项之外,通常还有节假日的效应。所以,在Prophet算法中,作者同时考虑了以上四项,即:
g(t)表示趋势项,表示时间序列在非周期上面的变化趋势;
s(t)表示周期项,或者称为季节项,一般以周者年为单位;
h(t)表示节假日项,表示在当天是否存在节假日;
表示误差项或者称为剩余项;
Prophet算法就是通过拟合这几项,最后把它们累加起来就得到时间序列的预测值。
4、趋势项g(t)
趋势项是Prophet的核心组件,它用于分析和拟合时间序列的非周期变化,提供了两种趋势模型:饱和增长模型和分段线性模型。
饱和增长模型不是无限上涨趋势的,当趋势达到一定的程度就会呈现饱和状态,饱和值随着时间动态变化;分段线性模型是不可限定趋势的,但是这两种模型都包含了不同程度的假设和调节光滑度的参数,以辅助优化模型。
饱和增长趋势函数公式:
分段线性趋势函数公式:
其中:v表示模型承载量;r表示增长率;δ、γ表示适应度;a(t)表示t时刻前突变点发生变化的次数;d表示偏移量。
5、季节项s(t)
s(t)代表时间序列的周期性变化,可用于模拟周、月、年等各种周期变化趋势,由傅立叶级数表达,如式所示:
其中:N表示模型中使用该周期的个数;T表示期望时间序列的周期长度;2n表示拟合季节性需要估计的参数个数。
N的设定需要结合T进行考虑,对于年的周期性,设定T=365.25,N为10;对于每周的季节性,T设置为7,N则设置为3,N越大,拟合复杂的季节性越好。
6、假期项h(t)
节假日和重要事件会对时间序列预测产生较大的影响,这些作用通常是可以预测的,将这些影响因素作为先验知识纳入模型,对模型准确率的提升具有主要意义。
h(t)表示非周期性的不规律的假期影响。模型通过自定义假期列表实现节假日或突发事件场景下的预测。
模型原理:h(t)=Z(t)k
其中:Z(t)为指示函数;k表示节假日的影响范围。
7、误差项εt
误差项:εt表示模型中未反映的噪声部分并假设噪声因子服从正态分布。
8、Prophet模型的优缺点
优点:
- 可拓展:曲线拟合问题可以很轻松的引入季节和周期性的影响,可以应用于多种数据类型。
- 数据灵活:与ARIM模型不同,曲线拟合问题不需要数据等步长,所以不需要对数据进行一些特殊操作(如插值)。
- 速度快:相比于传统的训练模型,曲线拟合的速度更快,有助于数据迭代。
- 能够自动处理所研究序列中的缺失值和异常值,能够对时间序列的未来趋势进行自动分解和预测。
局限性:
- 无法做到rolling forecasting,prophet训练和模型是分开的,要想更新模型,必须重新训练。
- 模型过于简单,模型的表达能力比较简单。导致训练模型时under-fitting,也就是对于复杂的模式,常常无法学到,预测精度有所折扣。
- 长时间预测不可靠。