Prophet:一种大规模时间序列预测模型

前言

Prophet是由facebook开发的开源时间序列预测程序,擅长处理具有季节性特征大规模商业时间序列数据。本文主要介绍了Prophet模型的设计原理,并与经典的时间序列模型ARIMA进行了对比。

1. Prophet模型原理

Prophet模型把一个时间序列看做由3种主要成分组成:趋势项、季节项、假期项。

其中趋势项模拟了时间序列的非周期变化,季节项模拟了时间序列的周期性变化,假期项模拟了假期或者其他突发事件的影响,为误差项。

1.1 趋势项

趋势项主要说明了数据的变化趋势,Prophet算法中主要运用了两种趋势项模型,饱和式增长模型与分段线性模型。

1.1.1 饱和式增长模型

最基本的饱和式增长模型表示为:

其中,代表承载能力,代表增长率,代表偏移量。该模型并不能完全反应数据特性,要对其进行改造。

首先,模型的承载能力不一定为常数,比如说访问互联网的人口是随时间提高的。因此可以替换为。同样的,成长率也不一定为常数,Prophet算法通过设置变点来拟合模型,假设在时间,设置变点,斜率变化通过表示,其中表示时间时刻的变化率。这样在时刻的变化率可以表示为:,变化率也可以通过化简为。

如果对变化率进行调整,相应的偏移量也要进行改变,以连接不同段的端点。第点的偏移量可以表示为:

a93e0c9bbcb31e501760b777540330a6.png

1.1.2 分段线性模型

对于不体现饱和增长的预测问题,可以考虑使用线性模型进行拟合,

同样的,为了使分段函数连续,

1.2 季节项

商业时间序列通常由于人类行为呈现多周期性,比如5天工作2天休息将会产生以周为周期的季节性效应,寒暑假会产生以年为周期的季节性效应。在Prophet模型中,通过傅里叶级数来拟合周期性效应:

其中为时间序列周期,为了拟合多周期性数据,可以取多值,一般为365.25对应年数据,7对应周数据。拟合周期项需要估计个参数,因此季节项可以表示为:

例如一个年季节性数据,且,则可以表示为:

1.3 假期项

节假日或者某些突发事件对商业性的时间序列数据有很大的影响,而且很多事件并不遵循季节性数据的规律,很难用季节性模型建模。Prophet算法中假设假期效应是独立的,对于假期,表示假期所影响的时间段,每个假期项对应参数,表示方式与季节项相似:

其中,

2. ARIMA模型

Arima模型是由AR、MA与差分法结合而成的一种时间序列预测算法,阶自回归模型表示为:

这就相当于将预测变量替换为目标变量的历史值的多元回归。

不同于使用预测变量的历史值来进行回归,移动平均模型(moving average model)使用历史预测误差来建立一个类似回归的模型。

我们将这个模型称之为模型,即阶移动平均模型。
结合MA与AR模型,我们可以得到ARIMA模型:

上式中是差分序列(它可能经过多次差分)。右侧的“预测变量”包括  的延迟值和延迟的误差。我们将这个模型称为模型,其中为差分次数。

3. 模型对比

ARIMA是自回归预测,它使用滞后值和误差项拟合时间序列,它假设时间序列的过去值与过去误差和未来值之间存在某种因果关系。

fea8bbb89eee399362ba3f641377dbf4.png

图1 arima预测

图1所示为arima预测,一般在短期预测中体现不错的效果,但长期的预测结果接近线性预测。

相反,Prophet不会寻找过去和未来之间的任何此类因果关系,它只是尝试找到适合数据的最佳曲线,使用线性或逻辑曲线以及季节性分量的傅立叶系数。

在ARIMA中,我们可以设置参数自回归分量p、差分次数d和移动平均分量q。为了调整ARIMA模型,我们可以使用自相关函数 (ACF) 和偏自相关函数 (PACF) 图来确定p和q的值。

而在Prophet中,我们可以设置线性或逻辑增长、假期、季节性和变化点。调整变点参数有助于模型捕捉训练数据中的趋势。Prophet提供了接口plot_components来分析数据的组成成份:f541295d2addc69d34070ab1fdc68f59.png

图2 prophet分解

图2展示了拟合数据的分解结果。当然,变点设置过多可能会导致模型过拟合,导致模型对未来数据的预测准确性下降。

不同于AIRMA模型要求等间隔采样,Prophet对于异常值、缺失数据和时间序列的剧烈变化具有鲁棒性。

Prophet模型参数可解释性更强,更加灵活,便于分析师对参数进行更改与扩展,比如说如果我们看到数据中存在一些突变值,可以根据需要设置合适的假期项来拟合数据。8918779ccdfa07d8363ea1a603721bb7.png

图3 prophet预测

图3展示了通过设置合理的假期项来拟合变化复杂的数据。

总结

本文从数学原理出发介绍了facebook开源的Prophet模型,希望能更好的帮助大家理解并使用。具体的程序使用方法可以参考prophet官方网站:https://facebook.github.io/prophet/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44420.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时间序列预测算法梳理(Arima、Prophet、Nbeats、NbeatsX、Informer)

时间序列预测算法梳理(Arima、Prophet、Nbeats、NbeatsX、Informer) Arima1. 算法原理2. 算法实现 Prophet1. 优点2. 算法实现3.算法api实现(fbprophet调api) Nbeats1. Nbeats优点2. Nbeats模型结构 NbeatsXInformer参考&#xff…

Prophet 时间序列预测

Prophet 允许使用具有指定承载能力的物流增长趋势模型进行预测。 我们必须在列中指定承载能力cap。在这里,我们将假设一个特定的值,但这通常是使用有关市场规模的数据或专业知识来设置的。 # Python df[cap] 8.5需要注意的重要事项是cap必须为数据框中…

时间序列预测方法之 DeepAR

本文链接:个人站 | 简书 | CSDN 版权声明:除特别声明外,本博客文章均采用 BY-NC-SA 许可协议。转载请注明出处。 最近打算分享一些基于深度学习的时间序列预测方法。这是第一篇。 DeepAR 是 Amazon 于 2017 年提出的基于深度学习的时间序列预…

【时间序列】初识时间序列预测神器 NeuralProphet 实战预测股票指数

历经神奇的2022年,终于迎来曙光的2023年,新的一年,MyEncyclopedia 会和小伙伴们一同学习思考实践。长风破浪会有时,直挂云帆济沧海!共勉之 NeuralProphet深度学习Prophet NeuralProphet 负有盛名,是 Facebo…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测

时序预测 | Python实现TCN时间卷积神经网络时间序列预测 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测预测效果基本介绍环境准备模型描述程序设计学习小结参考资料预测效果 基本介绍 递归神经网络 (RNN),尤其是 LSTM,非常适合时间序列处理。 作为研究相关技术…

使用sklearn.ensemble.RandomForestRegressor和GridSearchCV进行成人死亡率预测

原文链接:https://blog.csdn.net/weixin_44491423/article/details/127011461 本文借鉴博主hhhcbw实现方法完成随机森林回归预测成人死亡率,使用训练数据测试模型的最优得分R20.8161,在测试集上得分R20.5825 成年人死亡率指的是每一千人中15岁…

基于TCN时间序列预测Python程序

基于TCN预测模型 特色:1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动切换 3、基于Pytorch架构 4、多个评估指标(MAE,MSE,R2,MAPE等) 5、数据从excel文件中读取,更换简单…

时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测

时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测 目录 时序预测 | Python实现Attention-TCN注意力机制时间卷积神经网络的多元时间序列预测预测效果基本介绍环境配置程序设计模型效果参考资料预测效果 基本介绍 使用时间注意卷积神经网络进行…

AI预测死亡时间,准确率95%

(本内容转载自公众号“科技与Python”) 日前,谷歌新出炉的一项研究报告称,该公司已开发出一种新人工智能(AI)算法,可预测人的死亡时间,且准确率高达95%。最近,谷歌的这项研究发表在了《自然》杂…

FACEBOOK 时间序列预测算法 PROPHET 的研究

1.思想 在时间序列分析领域,有一种常见的分析方法叫做时间序列的分解(Decomposition of Time Series),它把时间序列 分成几个部分,分别是季节项 ,趋势项 ,剩余项 。也就是说对所有的 &#xff…

python 用LSTM预测时间序列之预测新冠肺炎疫情

用到的模块 import numpy import matplotlib.pyplot as plt from pandas import read_csv import math from keras.models import Sequential from keras.layers import Dense from keras.layers import LSTM from sklearn.metrics import mean_squared_error from keras.call…

基于self-attention-TCN时间序列预测Python程序

基于self-attention-TCN时间序列预测Python程序 特色:1、单变量,多变量输入,自由切换 2、单步预测,多步预测,自动切换 3、基于Pytorch架构 4、多个评估指标(MAE,MSE,R2,M…

Kaggle_Titanic生存预测 -- 详细流程吐血梳理

作者: 大树先生 博客: http://blog.csdn.net/koala_tree 知乎:https://www.zhihu.com/people/dashuxiansheng GitHub:https://github.com/MrLeeTree 2017 年 12 月 5 日 一直想在Kaggle上参加一次比赛,奈何被各种事情所…

python攻陷米哈游《元神》数据?详情请看文章。。

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 《原神》是由米哈游自研的一款全新开放世界冒险RPG。 里面拥有许多丰富得角色,让玩家为之着迷~ 今天,我们就来用python探索一下原神游戏角色信息! 标题大家看看就好了哈~&#xff08…

米哈游技术总监详解《原神》画面效果的技术实现

11月17日,中国Unity线上技术大会游戏专场迎来米哈游技术总监弋振中的分享,此次他围绕“从手机走向主机-《原神》主机版渲染技术”为主题,细致地讲解了《原神》在主机上渲染技术实现的重点内容。 以下是演讲内容(有节选&#xff09…

原神反调试分析

打开CE,打开原神启动器。 至此,游戏未加载驱动。启动器可以被CE正常读写。 打开原神,CE中选择YuanShen.exe,发现原神并不能被读写。 尝试分析不能读写的原因。 CE调用的读取内存函数是NtReadVirtualMemory 猜测有三种可能 1.NtReadVirtu…

关于原神抽奖概率的简要分析

序言 最近迷上了原神这款游戏,趁着保研完,肝了两个星期,也氪了一些金。先不谈这款游戏可玩性有多高,但论氪金强度算是我从小到大玩的游戏中,能排得上第一的了。 对于这种寸卡寸金的游戏,如何在无穷无尽的…

CAD教程:如何将Excel数据快速导入CAD图纸

在平时的设计工作中,为了图纸内容的丰富性,通常会在里面添加一些元素,使得数据更加的完善,那我们想在CAD图纸中添加一份Excel数据表,徒手绘制那就肯定是太过于麻烦了,那怎么才能省时省事呢?这个…

CAD绘图软件中如何将图纸分享给其他人

当我们在CAD绘图软件中打开一张图纸进行查看的时候,查看完成后,在CAD绘图软件中如何将图纸分享给其他人,具体要怎么来进行操作呢?相信很多的小伙伴们都想要知道,那下面小编就来教教大家具体的操作方法吧。 第一步&…

怎么将手机上保存的CAD图纸发送给好友

现在有很多的工作我们也可以在手机中完成,就比如说我们再收集中将图纸进行查看之后保存了下来,之后同事需要使用到这张CAD图纸文件。那么我们就可以将图纸发送给好友。怎么将手机上保存的CAD图纸发送给好友,下面我们一起来看看。 步骤一&…