时序预测(facebook的prophet)

prophet易用性,你利用Prophet可以直接通过修改季节参数来拟合季节性,修改趋势参数来拟合趋势信息,指定假期来拟合假期信息等等

本质上讲,Prophet是由四个组件组成的自加性回归模型:

分段线性或逻辑增长函数模型趋势分量。 Prophet通过从数据中变点选择(前80%的数据),自动检测趋势的变化。
用傅里叶级数模拟周期性分量
用户提供的重要节日列表,模拟节假日分量的影响范围
Prophet其中最重要的思想就是曲线拟合,这与传统的时序预测算法有很大的不同。

Facebook的Prophet算法简介与使用

https://mp.weixin.qq.com/s/Jkrt3U5g5AJ4CwwNHLqv3w

Prophet采用了L-BGFS的方式进行优化求得各个参数的最大后验估计。


时间序列(time serie)分析系列之线性回归or随机森林

https://blog.csdn.net/weixin_41512727/article/details/85706521

精髓是对特征的处理,本来是时序数据,只是一维单变量数据,经过平移特征,和时间求均值策略,是否节假日等,得到大量特征

é¢æµç»æ

ç¹å¾éè¦æ§æåº

对特征重要性排序,可以发现平均每小时的值以及节假日,和平移80次这3个特征最重要

扫描二维码关注公众号,回复: 11088858 查看本文章

Facebook 时间序列预测算法 Prophet 的研究

https://mp.weixin.qq.com/s/h3I0MlCI573vNZcLJfHYzA

非常不错,非常值得一看,好东西都在微信公众号啊

Prophet 简介

Facebook 去年开源了一个时间序列预测的算法,叫做 fbprophet,它的官方网址与基本介绍来自于以下几个网站:

  1. Github:

    https://github.com/facebook/prophet

  2. 官方网址:

    https://facebook.github.io/prophet/

  3. 论文名字与网址:

    Forecasting at scale,https://peerj.com/preprints/3190/

从官网的介绍来看,Facebook 所提供的 prophet 算法不仅可以处理时间序列存在一些异常值的情况,也可以处理部分缺失值的情形,还能够几乎全自动地预测时间序列未来的走势。从论文上的描述来看,这个 prophet 算法是基于时间序列分解和机器学习的拟合来做的,其中在拟合模型的时候使用了 pyStan 这个开源工具,因此能够在较快的时间内得到需要预测的结果。除此之外,为了方便统计学家,机器学习从业者等人群的使用,prophet 同时提供了 R 语言和 Python 语言的接口。从整体的介绍来看,如果是一般的商业分析或者数据分析的需求,都可以尝试使用这个开源算法来预测未来时间序列的走势。

Prophet 的算法原理

Prophet 数据的输入和输出

首先让我们来看一个常见的时间序列场景,黑色表示原始的时间序列离散点,深蓝色的线表示使用时间序列来拟合所得到的取值,而浅蓝色的线表示时间序列的一个置信区间,也就是所谓的合理的上界和下界。prophet 所做的事情就是:

  1. 输入已知的时间序列的时间戳和相应的值;

  2. 输入需要预测的时间序列的长度;

  3. 输出未来的时间序列走势。

  4. 输出结果可以提供必要的统计指标,包括拟合曲线,上界和下界等。

就一般情况而言,时间序列的离线存储格式为时间戳和值这种格式,更多的话可以提供时间序列的 ID,标签等内容。因此,离线存储的时间序列通常都是以下的形式。其中 date 指的是具体的时间戳,category 指的是某条特定的时间序列 id,value 指的是在 date 下这个 category 时间序列的取值,label 指的是人工标记的标签('0' 表示异常,'1' 表示正常,'unknown' 表示没有标记或者人工判断不清)。

而 fbprophet 所需要的时间序列也是这种格式的,根据官网的描述,只要用 csv 文件存储两列即可,第一列的名字是 'ds', 第二列的名称是 'y'。第一列表示时间序列的时间戳,第二列表示时间序列的取值。通过 prophet 的计算,可以计算出 yhat,yhat_lower,yhat_upper,分别表示时间序列的预测值,预测值的下界,预测值的上界。两份表格如下面的两幅图表示。

结束语

对于商业分析等领域的时间序列,Prophet 可以进行很好的拟合和预测,但是对于一些周期性或者趋势性不是很强的时间序列,用 Prophet 可能就不合适了。但是,Prophet 提供了一种时序预测的方法,在用户不是很懂时间序列的前提下都可以使用这个工具得到一个能接受的结果。具体是否用 Prophet 则需要根据具体的时间序列来确定

发布了59 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u013385018/article/details/93465925