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

1.思想

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

y t = S t + T t + R t y_{t}=S_{t}+T_{t}+R_{t} yt=St+Tt+Rt

除了加法的形式,还有乘法的形式,也就是:

y t = S t × T t × R t y_{t}=S_{t} \times T_{t} \times R_{t} yt=St×Tt×Rt

一般来说,在实际生活和生产环节中,除了季节项,趋势项,剩余项之外,通常还有节假日的效应。所以,在 prophet 算法里面,作者同时考虑了以上四项,也就是:

y ( t ) = g ( t ) + s ( t ) + h ( t ) + ϵ t y(t)=g(t)+s(t)+h(t)+\epsilon_{t} y(t)=g(t)+s(t)+h(t)+ϵt

其中 g ( t ) g(t) g(t)表示趋势项,它表示时间序列在非周期上面的变化趋势;
s ( t ) s(t) s(t)表示周期项,或者称为季节项,一般来说是以周或者年为单位;
h ( t ) h(t) h(t)表示节假日项,表示在当天是否存在节假日;
ϵ ( t ) \epsilon(t) ϵ(t)表示误差项或者称为剩余项。
Prophet 算法就是通过拟合这几项,然后最后把它们累加起来就得到了时间序列的预测值。

趋势项模型 g ( t ) g(t) g(t)
在 Prophet 算法里面,趋势项有两个重要的函数,一个是基于逻辑回归函数(logistic function)的,另一个是基于分段线性函数(piecewise linear function)的。

f ( x ) = C / ( 1 + e − k ( x − m ) ) f(x)=C /\left(1+e^{-k(x-m)}\right) f(x)=C/(1+ek(xm))

所以,分段的逻辑回归增长模型就是:

g ( t ) = C ( t ) 1 + exp ⁡ ( − ( k + a ( t ) t δ ) ⋅ ( t − ( m + a ( t ) T γ ) g(t)=\frac{C(t)}{1+\exp \left(-\left(k+\boldsymbol{a}(t)^{t} \boldsymbol{\delta}\right) \cdot\left(t-\left(m+\boldsymbol{a}(t)^{T} \boldsymbol{\gamma}\right)\right.\right.} g(t)=1+exp((k+a(t)tδ)(t(m+a(t)Tγ)C(t)

基于分段线性函数的趋势项是怎么做的。众所周知,线性函数指的是 y = k x + b y=k x+b y=kx+b, 而分段线性函数指的是在每一个子区间上,函数都是线性函数,但是在整段区间上,函数并不完全是线性的。正如下图所示,分段线性函数就是一个折线的形状。

因此,基于分段线性函数的模型形如:

g ( t ) = ( k + a ( t ) δ ) ⋅ t + ( m + a ( t ) T γ ) g(t)=(k+\boldsymbol{a}(t) \boldsymbol{\delta}) \cdot t+\left(m+\boldsymbol{a}(t)^{T} \boldsymbol{\gamma}\right) g(t)=(k+a(t)δ)t+(m+a(t)Tγ)

在这里插入图片描述

季节性趋势
时间序列通常会随着天,周,月,年等季节性的变化而呈现季节性的变化,也称为周期性的变化。对于周期函数而言,大家能够马上联想到的就是正弦余弦函数。而在数学分析中,区间内的周期性函数是可以通过正弦和余弦的函数来表示的:

在论文中,作者使用傅立叶级数来模拟时间序列的周期性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时间序列的季节项就是:
在这里插入图片描述
在这里插入图片描述

节假日效应(holidays and events)
同时需要一个参数来表示节假日的影响范围。假设我们有L 个节假日,那么
在这里插入图片描述
Prophet 中可以设置的参数
在 Prophet 中,用户一般可以设置以下四种参数:

Capacity:在增量函数是逻辑回归函数的时候,需要设置的容量值。
Change Points:可以通过 n_changepoints 和 changepoint_range 来进行等距的变点设置,也可以通过人工设置的方式来指定时间序列的变点。
季节性和节假日:可以根据实际的业务需求来指定相应的节假日。
光滑参数: τ = \tau= τ= changepoint prior scale可以用来控制趋势的灵活度, σ = \sigma= σ=seasonality_prior_scale 用来控制季节项的灵活度, v = v= v= holidays prior scale 用来控制节假日的灵活度。

2、实践

初始化模型:m = Prophet()
拟合模型:m.fit(df)
计算预测值:periods 表示需要预测的点数,freq 表示时间序列的频率。
future = m.make_future_dataframe(periods=30, freq='min')
future.tail()
forecast = m.predict(future)画出预测图:
m.plot(forecast)
画出时间序列的分量:
m.plot_components(forecast)

参考:

  1. Forecasting at Scale;
  2. github prophet;
  3. FACEBOOK 时间序列预测算法 PROPHET 的研究;
  4. zhihu Prophet;

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

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

相关文章

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图纸发送给好友,下面我们一起来看看。 步骤一&…

dat文件导入cad画图步骤_图说CAD|多文件、多布局图纸批量打印设置的8个关键步骤...

在AutoCAD中,Publish(发布)功能具有批量打印图纸的功能:1. 以读取预设页面设置的方式进行打印,可直接打印为一套图纸电子文件,也可以打印为单张图纸电子文件。2. 支持批量自定义图纸名称指定。3. 可对发布图纸内容进行增减、排序。…

怎么把CAD表格转换成Excel表格?CAD表格导出教程

有些小伙伴在使用CAD软件绘制图纸的过程中,想要将CAD表格导出为Excel表格时不知道该如何操作,浩辰CAD软件中提供了CAD表格转Excel功能,可以快速将CAD中由线和文字构成的表格转换成Excel表格。下面就让小编来给大家介绍一下浩辰CAD给排水软件中…

计算机接口cad图,管道接口CAD平面图怎么画

回答: CAD怎么画钢琴平面图 CAD怎么画出钢琴的平面图呢?很简单的,有需要的朋友动手试试吧。 1、启动中望CAD软件,执行“矩形”命令(rec),绘制1575mmX230mm和1575X50mm的直角矩形。 2、执行矩形命令和移动命令(M),绘制出…

cad快速看图软件免费版(手机在线cad快速看图)

很多机械设计师日常工作过程中涉及到多种格式的cad图纸,cad图纸大多都需要cad设计软件才能打开,然而很多小伙伴并没有下载相应的cad设计软件,这种情况下如何进行cad快速看图呢? 今天小编为大家推荐一款cad快速看图软件免费版&…

CAD批量打图精灵10.0入门教程

简介 在工程制图中,往往有大量的图纸需要打印或转为PDF,可能是一个dwg文件里有多张图纸,或是多张图纸分散于多个dwg文件。常规的打印方法是,逐个手工框选打印,操作单调且费时。有没有更好的方法呢?CAD批量…

这样的图像在CAD怎么画呢?

这期来说一下用CAD怎么绘制这样的图形。 目标图 操作工具 操作系统:Windows10 CAD软件:CAD梦想画图 步骤 1.首我们使用圆(C)命令画一个半径为50的圆,如下图所示: 画圆 2.然后使用多边形命令画一个以圆…

CAD制图初学入门教程:一键解决CAD图纸杂乱

纵横交错的线条,星罗棋布的图形,错综复杂的标注…一看到复杂的CAD图纸,就感到头晕眼花,不知所措。哪位大神能指点迷津?如何让复杂的CAD设计「简单化」?新人设计师在面对复杂的CAD图纸项目时,时常…

cad看图怎么看?一键查看方法说明

CAD怎么看图?CAD是我们日常办公学习中经常接触到的软件之一,越来越多的人即使非相关专业也在学习CAD使用的方法技巧。有时我们接收到CAD文件后,没有合适的软件可以打开它就有点麻烦,今天给小伙伴们说一个快速看图的方式。 一些CAD…

不会画建筑CAD图纸?建筑CAD设计全流程解析打包送给你!

建筑CAD图纸通常比较复杂,但千里之行始于足下,当我们要绘制一张建筑CAD图纸时,应当怎么着手呢?本CAD教程整理了相关绘图流程解析打包送给你! 从建筑CAD图纸内容上来划分,图纸的空间设计包括平面图、立面图、…

cad查看_微信接收图纸dwg怎么打开?如何手机查看CAD图纸,三步免费教你

如果微信上接收到CAD图纸,第一想法是什么? 如何进行打开? 都知道CAD图纸文件难以打开更是难以进行编辑,很多情况下都是必须要使用电脑才能够进行打开,想要在手机上打开dwg图纸文件应该怎么操作呢? 今天这里…