订阅
纠错
加入自媒体

Prophet:Facebook 简单高效的时间序列模型

2020-08-03 09:42
将门创投
关注

3.1 趋势模型

首先是趋势模型 g(t)。

在 Prophet 算法里,趋势模型有两个选择,一个是基于饱和增长模型 (saturating growth model),另一个是基于分段线性函数 (piecewise linear model)。

3.1.1 饱和增长模型

Prophet 使用如下形式的饱和增长模型:

其中,C 为承载能力(如可上网人数、可处理事件等),k 为增长率,m 为偏移参数。

当 C=1,k=1,m=0 时就是大家常见的 Sigmoid 函数的形式。

在现实生活中,承载能力、增长率和偏移参数并不是一成不变的,所以作者将其转换为随时间变化的函数:

除此之外,现实中的时间序列其走势也不是不变的,在某些特定的时候会发生改变,这就需要用户去研究变点检测 (change points)。

在 Prophet 中,变点的位置是需要设置的,每一段的趋势和走势也会随着变点的设置而改变。目前有两种方法去设置变点,一种是人工指定的方式,另一种是通过算法来自动选择。

假设现在有 S 个变点,变点的时间戳为

每个变点都会出现增长率的变化  。如果初始增长率为 k 的话,那么时间戳 t 上的增长率为:

其中

为指示函数:

一旦初始增长率 k 确定,那么偏移参数 m 也会随之确定。

既然是分段函数,我们也需要处理好分段边界:

所以分段逻辑回归模型为:

此外我们含有一个重要参数 C(t),该参数需要用户根据市场规模来进行调整。

3.1.2 分段线性模型我们再来看一下分段线性函数,根据

给出基本模型:

其中 k 表示增长率,

表示增长率的变化量,m 为偏移参数,

值得注意的是,分段线性函数并没有表示承载能力的

参数。

3.1.3 序列中的变点变点可以由分析师人工设定,相应的参数有变点的位置、个数、增长的变化率。

当然,也可以根据候选对象进行自动选择。自动选择主要是利用了先验知识

,参数

控制模型变换的灵活性,当

趋于 0 时,增长函数将蜕变为 Logistic 函数或者线性函数。默认情况下,Prophet 会在时间序列前 80% 的范围里,通过等份的方法找到 25 个变点,而变点的增长率满足 Laplace 分布

3.1.4 趋势预测现在,历史 T 个数据点中有 S 个变点,且对应的增长率的变化量服从

,但预测未来也需要考虑未来的变点位置。

作者通过历史数据推断出方差,从而替换

来模拟未来的速率变化。在一个完全贝叶斯框架下,可以通过先验知识来获得它的后验概率,或者我们也可以用最大似然估计来评估速率尺度参数:

未来变点位置将通过随机抽样的方法使变点的平均频率与历史数据相匹配:

因此,我们保证了未来和历史具有相同平均频率和变点变化率,从而衡量预测未来趋势中的不确定性,一旦从数据中推断出了 λ ,我们便可以使用生成模型来模拟未来可能的趋势,并使用模拟的趋势来计算不确定区间。

3.2 季节性模型

季节性(这里指周期性)是大部分时间序列都会考虑其中的,因为时间序列通常会随着天、周、月、年等的变化而呈现周期性变化。为了拟合和预测这些数据,作者制定了季节模型。

作者利用傅立叶级数来提供一个灵活的周期性影响:

其中,P 为周期(一年 P=365.25,一个星期 P=7);N 为经验所得(年 N=10,周N=3)。

我们另傅立叶级数的参数为

,则可以用这个来构造一个季节性向量矩阵。

例如当 N=10 时:

季节项表示为:

作者用标准化

对参数

进行初始化, σ 为可设置参数,值越大,季节效应越明显;值越小,季节效应越不明显。

<上一页  1  2  3  4  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

人工智能 猎头职位 更多
扫码关注公众号
OFweek人工智能网
获取更多精彩内容
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号