夯实基础
🗒️Prophet模型
00 分钟
2024-3-29
2024-4-11
type
status
date
slug
summary
tags
category
icon
password
⚠️
Prophet模型论文和参数整理

Prophet概述

整体框架:

notion image
上图是prophet的整体框架,整个过程分为四部分:Modeling、Forecast Evaluation、Surface Problems以及Visually Inspect Forecasts。
从整体上看,这是一个循环结构,而这个结构又可以根据虚线分为分析师操纵部分与自动化部分,因此,整个过程就是分析师与自动化过程相结合的循环体系,也是一种将问题背景知识与统计分析融合起来的过程,这种结合大大的增加了模型的适用范围,提高了模型的准确性。
按照上述的四个部分,prophet的预测过程为:
  1. Modeling:建立时间序列模型。分析师根据预测问题的背景选择一个合适的模型。
  1. Forecast Evaluation:模型评估。根据模型对历史数据进行仿真,在模型的参数不确定的情况下,我们可以进行多种尝试,并根据对应的仿真效果评估哪种模型更适合。
  1. Surface Problems:呈现问题。如果尝试了多种参数后,模型的整体表现依然不理想,这个时候可以将误差较大的潜在原因呈现给分析师。
  1. Visually Inspect Forecasts:以可视化的方式反馈整个预测结果。当问题反馈给分析师后,分析师考虑是否进一步调整和构建模型。

适用场景:

  1. 有至少几个月(最好是一年)的每小时、每天或每周观察的历史数据;
  1. 有多种人类规模级别的较强的季节性趋势:每周的一些天和每年的一些时间;
  1. 有事先知道的以不定期的间隔发生的重要节假日(比如国庆节);
  1. 缺失的历史数据或较大的异常数据的数量在合理范围内;
  1. 有历史趋势的变化(比如因为产品发布);
  1. 对于数据中蕴含的非线性增长的趋势都有一个自然极限或饱和状态。

模型整体结构

notion image
gt趋势分量
st季节分量
ht节假日分量
et噪声

趋势分量

非线性趋势

基础模型使用逻辑回归模型
notion image
经典逻辑回归模型曲线如下
notion image
notion image
从公式上来看,k(t-b)等同于x
C是承载量,它限定了所能增长的最大值
k表示增长率,表示相同t变化时,整体函数值gt以k倍的速度增长
b为偏移量
 
其中,C不一定是常数,C可以用C(t)表达,另外增长率k也不是固定的。
Prophet引入了changpoint来处理不同时段内k不同的问题。
每一段的k由以下公式来表示:
notion image
使用at可以更清晰的表示:
notion image
at代表当前时段是否激活k的调整值,那么t时刻的k可以表示为:
notion image
k调整后,为了使相邻分段首尾相连,需要对b值进行调整
notion image
notion image
综上,gt表达式转换成
notion image
 

线性趋势

线性趋势参数参考非线性趋势,gt表达式如下
notion image
 
为了首尾相连,偏移量为
notion image
 

自动拟合changpoints

如下步骤:
1、假设存在j个changpoints,那么每一段内存在一个调整量δ
2、假设所有δ服从分布(先验),对所有δ进行赋值和拟合
分布如下
notion image
⚠️
从中可以观察到,τ越小,概率密度分布越集中在0值点,也就是δ倾向于0的概率越大,changpoints影响越小。当τ趋向于0时,δ趋向于0,gt将变成全段的逻辑回归函数或者线性函数。
⚠️
τ对应模型参数的changepoint_prior_scale
 

不确定性预测

发生在拟合之后,已得到所有δ
步骤:
1、计算绝对平均δ,计为λ
notion image
2、得到未来时间段内,δ的分布函数
notion image
3、T为历史数据,对每一个未来预测点j>T,进行概率计算,有的概率δ为0,有概率为Laplace分布
至此,趋势性分量的拟合和预测均已完成

季节性分量

使用傅里叶级数来估计
notion image
等同于
notion image
P=365.25表示是年为周期的数据,P=7则表示以周为周期的数据。
较大的N值可以拟合出更复杂的季节性函数,然而也会带来更多的过拟合问题。按照经验值,年周期的N取10,周周期的N取3。
那么表达式可以转化为
notion image
其中β服从正太分布(0,σ),σ由参数seasonality_prior_scale控制,这个值越大,说明季节效应越明显,值越小,季节效应越不明显。

节假日分量

节假日相对较简单,表达式如下
notion image
notion image
Z(t)表示每个假期所有假期的集合,K表示每个假期对应的影响范围,它服从于正态分布:
notion image
v由参数holidays_prior_scale控制,当值越大时,表示节假日对模型的影响越大;当值越小时,表示节假日对模型的效果越小。

外生变量

外生变量以加法模型加入到Prophet模型中
notion image
X(t)表示外生变量,β是与外生变量相关的系数,反映了外生变量与预测目标之间的线性关系。

参数说明

  • growth:增长趋势模型。分为两种:”linear”与”logistic”,分别代表线性与非线性的增长,默认值:”linear”.
  • Capacity:在增量函数是逻辑回归函数的时候,需要设置的容量值,表示非线性增长趋势中限定的最大值,预测值将在该点达到饱和.
  • Change Points:可以通过 n_changepoints 和 changepoint_range 来进行等距的变点设置,也可以通过人工设置的方式来指定时间序列的变点,默认值:“None”.
  • n_changepoints:用户指定潜在的”changepoint”的个数,默认值:25。
  • changepoint_prior_scale:增长趋势模型的灵活度。调节”changepoint”选择的灵活度,值越大,选择的”changepoint”越多,从而使模型对历史数据的拟合程度变强,然而也增加了过拟合的风险。默认值:0.05。
  • seasonality_prior_scale(seasonality模型中的):调节季节性组件的强度。值越大,模型将适应更强的季节性波动,值越小,越抑制季节性波动,默认值:10.0.
  • holidays_prior_scale(holidays模型中的):调节节假日模型组件的强度。值越大,该节假日对模型的影响越大,值越小,节假日的影响越小,默认值:10.0。
  • freq:数据中时间的统计单位(频率),默认为”D”,按天统计。
  • periods:需要预测的未来时间的个数。例如按天统计的数据,想要预测未来一年时间内的情况,则需填写365。
  • mcmc_samples:mcmc采样,用于获得预测未来的不确定性。若大于0,将做mcmc样本的全贝叶斯推理,如果为0,将做最大后验估计,默认值:0。
  • interval_width:衡量未来时间内趋势改变的程度。表示预测未来时使用的趋势间隔出现的频率和幅度与历史数据的相似度,值越大越相似,默认值:0.80。当mcmc_samples = 0时,该参数仅用于增长趋势模型的改变程度,当mcmc_samples > 0时,该参数也包括了季节性趋势改变的程度。
  • uncertainty_samples:用于估计未来时间的不确定性区间的样本数量,值越大,对不确定性区间的表达越准确,默认值:1000。
 

🗂️安装

📎 参考文章

📗论文

 

评论
  • Twikoo