数据分析36计(十):Facebook开源时间序列预测算法 Prophet在分析师中热门使用

本文介绍了Facebook开源的时间序列预测算法Prophet,包括其趋势项、季节项和节假日项模型的原理,以及模型拟合方法。Prophet适用于处理包含异常值和部分缺失值的时间序列预测,支持自定义季节性和节假日。文章还提供了Python实战代码示例。
摘要由CSDN通过智能技术生成

1. Prophet简介

Facebook 在2017年开源了一个叫fbprophet的时间序列预测的算法,Facebook 所提供的 prophet 算法Prophet是Facebook发布的基于可分解(趋势+季节+节假日)模型的开源库。该算法支持自定义季节和节假日,解决了像春节、618和双十一这种周期性节假日的指标预测难题。prophet不仅可以处理时间序列存在一些异常值的情况,也可以处理部分缺失值的情形,还能够几乎全自动地预测时间序列未来的走势。而且Prophet包提供了直观易调的参数,即使是对缺乏模型知识的人来说,也可以据此对各种商业问题做出有意义的预测。它的官方网址与基本介绍来自于:

  • Github:github.com/facebook/pro

  • 官方网址:facebook.github.io/prop

2. Prophet算法原理

数据的输入和输出

Prophet 的输入包含两列数据:ds 和 y 。ds 列为日期(YYYY-MM-DD)或者是具体的时间点(YYYY-MM-DD HH:MM:SS)。y 列是数值变量,即预测量。

算法实现

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

  •   表示趋势项,它表示时间序列在非周期上面的变化趋势;

  •   表示周期项,或者称为季节项,一般来说是以周或者年为单位;

  •   表示节假日项,表示在当天是否存在节假日;

  •  表示误差项或者称为剩余项。Prophet 算法就是通过拟合这几项,然后最后把它们累加起来就得到了时间序列的预测值。

趋势项模型

趋势是对时间序列中非周期性部分的趋势进行拟合。在 Prophet 算法里面,趋势项有两个重要的函数,一个是基于逻辑回归函数,另一个是基于分段线性函数。这里来介绍一下基于逻辑回归的趋势项是怎么做的。

逻辑回归函数形式为:    如果增加一些参数的话,那么逻辑回归就可以改写成:这里的分别为曲线的最大渐近值,曲线的增长率,曲线的中点。当  时,恰好就是大家常见的 sigmoid 函数的形式。那么这里增加了参数的一般函数形式就为:

在现实环境中,参数  不可能都是常数,而很有可能是随着时间的迁移而变化的,因此,在 Prophet 里面,作者考虑把这三个参数全部换成了随着时间而变化的函数,也就是 

通常在生产生活中,我们希望某指标在整个预测区间内持续增长或下降。但也会有最大最小容量的限制,比如某app预测在某地未来12个月的UV,最大UV只能接近该地区人数。因此分析师在调参时可以定义时间序列预测的容量限制为C(t)

另外,在现实的时间序列中,指标经常会因

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值