Prophet模型详细原理

主要是为了自己以后可以及时查看笔记,如果有小伙伴有什么想法非常欢迎一起讨论。

模型形式

prophet模型原理是pxtorem原理 prophet原理_python
其中pxtorem原理 prophet原理_算法_02是趋势函数,pxtorem原理 prophet原理_算法_03表示周期性函数,pxtorem原理 prophet原理_pxtorem原理_04表是节假日、假期函数,pxtorem原理 prophet原理_pxtorem原理_05表示误差或者是噪声等。

prophet模型依据的是时间序列的分解,有两种基本的形式:
pxtorem原理 prophet原理_时间序列_06pxtorem原理 prophet原理_时间序列_07
但是对于第二种形式,当我们考虑取对数时,很自然的就转化为第一种形式:pxtorem原理 prophet原理_机器学习_08,所以两种形式可以都作为可加模型(additive model)进行讨论。

趋势函数pxtorem原理 prophet原理_算法_02

对于趋势函数pxtorem原理 prophet原理_算法_02,有两种常用的构造方式:分段线性和分段逻辑回归。

分段logistic

先来看分段逻辑回归,对于普通的logistic,对应的响应函数是pxtorem原理 prophet原理_算法_11,在prophet中使用的与之类似,添加一些参数,变为pxtorem原理 prophet原理_pxtorem原理_12其中C表示函数的最大渐进值,k表示增长率,m表示曲线的中点。

在时间序列问题中,三个参数我们一般认为是随着t变化而变化的,在现实的时间序列中,曲线的走势肯定不会一直保持不变,在某些特定的时候或者有着某种潜在的周期曲线会发生变化,存在变点,pxtorem原理 prophet原理_算法_13

对于设置好的S个变点,pxtorem原理 prophet原理_算法_14,以pxtorem原理 prophet原理_时间序列_15表示在pxtorem原理 prophet原理_python_16时间戳上发生的增长率的变化量,则对于初始增长率是k,在时间pxtorem原理 prophet原理_python_17时刻的增长率应该等于pxtorem原理 prophet原理_pxtorem原理_18,如果设置指示函数pxtorem原理 prophet原理_算法_19,也就是pxtorem原理 prophet原理_机器学习_20,每次k确定了的话参数m也要跟着确定:
pxtorem原理 prophet原理_算法_21
得到对应的分段logistic函数:
C(t)是需要人为限定的上线。

分段线性

分段线性使用的就是线性可加模型(LAM),对应的模型形式是:
pxtorem原理 prophet原理_python_22

周期函数pxtorem原理 prophet原理_算法_03

s(t)基于傅里叶级数提供了一个灵活的模型:
pxtorem原理 prophet原理_时间序列_24
其中P表示周期的时间,如果是年的话P就是365.25,如果是周的话P就是7

节假日效应pxtorem原理 prophet原理_pxtorem原理_04

prophet最大的创新点就是可以把涉及到的节假日单独考虑,因为节假日呈现的趋势会与平日数据呈现的规律不同。

对应的节假日效应模型形式为:
pxtorem原理 prophet原理_时间序列_26
其中L表示节假日的个数,pxtorem原理 prophet原理_时间序列_27表示对应节假日的影响范围。

函数主要参数说明

参数

描述

growth

"linear"或者"logistic"两种趋势函数

changepoints

包括潜在突变点的日期列表

n_changepoints

如果不手动指定突变点,需要设置内置自动识别突变点的突变点数目

changepoint_prior_scale

突变点选择的灵活性,解决过拟合/欠拟合的问题,越大突变点的选择越灵活

cap

在使用分段逻辑回归的时候需要设置的上限