prophet模型小结

本文介绍了Prophet模型,一种适用于时间序列预测的工具,特别适合处理包含异常点和多种周期性的数据。Prophet模型具有灵活性,能适应趋势变化和季节性,并允许用户自定义假设。模型包括非线性饱和增长、线性趋势、自动转折点选择和季节性组件。通过傅里叶级数处理季节性,节假日和事件的影响也可纳入模型。Prophet模型能够提供可解释的预测结果,便于分析师理解预测过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Introduction
在许多自然科学或商业活动中,对于时间序列的预测起着非常重要的作用。但是,做出高精度的预测无论对计算机还是对人类分析师来说都不是一个简单的事情。主要有两个原因:1.完全自动化的预测模型灵活性很差,很难考虑到一些有用的假设或一些具有启发性的条件。2.分析师一般对本领域有深刻的理解,但是对于时间序列的预测往往经验不足。

本研究要做的是为不同情况下的预测行为提供一些有用的指导,主要有以下几种情况:
1.众多进行时间序列预测,却没有受过训练的人;
2.众多预测的任务,这些任务存在潜在的异常点;
3.在数量众多的预测任务开展时,让机器进行苛刻的对比和评价,而让分析师进行反馈并提升模型的表现。

2. Features of Business Time Series

这里写图片描述
图1 Facebook上发生的事件数目

图1所示的是Facebook上的事件随时间变化的情况,每种颜色表示一周内的某天发生的事件数目,这些事件包括创建新网页,邀请其他人等。从图中可以看到几个明显的特点:
1. 周期性特点,一周和一年的周期性;
2. 节假日的影响,在新年和圣诞节发生了显著的下降;
3. 趋势,最后六个月有明显的上升,这是由于新产品发布或市场发生了变动;
4. 异常值,真实数据集中经常出现异常值。

这里写图片描述
图2 几种自动预测模型的预测结果

图2所示的是采用几个不同的自动预测模型的预测结果,从图1中的数据中选取了3个不同的点进行预测。具体如下:
1. auto.arima,拟合出一系列ARIMA模型,并自动选出最好的一个;
2. ets,拟合出一些列指数平滑模型,并选出最好的一个;
3. snaive,随机行走模型,随着一周的周期性做出固定的预测;
4. tbats,考虑一周和一年的周期性。
以上模型的不足:
当在预测点前存在趋势变化时,auto.arima模型预测出的趋势误差较大,且不能考虑周期性特点。ets和snaive考虑了一周的周期性,但是不能考虑长期的周期性特点。所有这些模型在每一年的年末的预测都产生了过激的反应,因为他们不能够考虑一年的周期性,如图3中2014年的位置,所有模型预测结果都偏低。

3. The Prophet Forecasting Model
prophet模型的构成如下:

y(t)=g(t)+s(t)+h(t)+ϵy(t)=g(t)+s(t)+h(t)+ϵ

其中, g(t)g(t) 是趋势(trend)函数,用来分析时间序列中非周期性的变化。 s(t)s(t) 代表周期性的变化,例如一周或一年的周期性。 h(t)h(t) 代表节假日等偶然一天或几天造成的影响。 ϵϵ 是误差项,代表本模型没有考虑到的误差的影响。

这种设置与GAM(Hastile,1987)方法类似,GAM方差对回归量进行了各种非线性平滑后,加入到了回归模型中。本文的模型只采用时间作为回归量,有时候也将几个时间的线性或非线性函数加入进来。

GAM方法的优势是它能够很容易地进行分解,并适应新的成分,例如当新的周期性确定时。同时,GAM不论采用backfitting还是L-BFGS(本文采用后者)都能够快速拟合,这将有利于用户能够交互地进行模型参数调整。

本文模型的主要优点如下:
1. 灵活性:能够很容易地调整周期性,并且让用户对趋势进行不同的假设。
2. 与ARIMA模型不同,这些测量值不需要具有规则地间隔,也不需要对缺失值进行插值。
3. 拟合速度快
4. 预测模型具有容易解释的参数,能够让分析者针对不同的假设进行改进。

3.1 The Trend Model
3.1.1 Nonlinear, Saturating Growth
Facebook中模型的增长类似于生态系统中种族数量的增长,在经历非线性增长后到达饱和值,这种类型的增长常采用logistic增长模型,基本形式如下:

g(t)=C1+exp(k(tm))g(t)=C1+exp(−k(t−m))

其中,C是饱和值(承载能力),k是增长率,m是偏置参数。
对于facebook,该模型需要改进,首先是饱和值C是随时间变化的,其次增长率也会随着新产品发布等原因发生变化。
在时间序列中设置若干个转变点 sj,j=1,...,Ssj,j=1,...,S ,在这些转变点增长率会发生变化,变化量用 δjδj 表示在时间 tjtj 处的变化量,构建出向量 a(t){ 0,1}Sa(t)∈{ 0,1}S

aj(t)={ 1,tsj,0,otherwiseaj(t)={ 1,t≥sj,0,otherwise

则增长率在时间 tt 的表达式变为:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值