作者:ANKIT CHOUDHARY
翻译:王雨桐
校对:丁楠雅
本文约3000字,建议阅读12分钟。
本文将通过拆解Prophet的原理及代码实例来讲解如何运用Prophet进行时间序列预测。
简介
对于任何业务而言,基于时间进行分析都是至关重要的。库存量应该保持在多少?你希望商店的客流量是多少?多少人会乘坐飞机旅游?类似这样待解决的问题都是重要的时间序列问题。
这就是时间序列预测被看作数据科学家必备技能的原因。从预测天气到预测产品的销售情况,时间序列是数据科学体系的一部分,并且是成为一个数据科学家必须要补充的技能。
如果你是菜鸟,时间序列为你提供了一个很好的途径去实践项目。你可以非常轻易地应用时间序列,它会带领你进入更大的机器学习世界。
Prophet是Facebook发布的基于可分解(趋势+季节+节假日)模型的开源库。它让我们可以用简单直观的参数进行高精度的时间序列预测,并且支持自定义季节和节假日的影响。
本文中,我们将介绍Prophet如何产生快速可靠的预测,并通过Python进行演示。最终结果将会让你大吃一惊!
本文目录
1. Prophet有什么创新点?
2. Prophet预测模型
趋势
-
饱和增长
突变点
季节性
节假日及大事件
3. Prophet实战(附Python和R代码)
趋势参数
季节和节假日参数
通过Prophet预测客运量
Prophet有什么创新点?
当预测模型没有按预期运行时,我们希望针对问题来调整模型的参数。调整参数需要对时间序列的工作原理有全面的理解。例如automated ARIMA首先输入的参数是差分的最大阶数,自回归分量和移动平均分量。普通分析师不知道如何调整顺序来避免这种表现,这是一种很难掌握积累的专业知识。
Prophet包提供了直观易调的参数,即使是对缺乏模型知识的人来说,也可以据此对各种商业问题做出有意义的预测。
Prophet预测模型
时间序列模型可分解为三个主要组成部分:趋势,季节性和节假日。它们按如下公式组合:
g(t):用于拟合时间序列中的分段线性增长或逻辑增长等非周期变化。
s(t):周期变化(如:每周/每年的季节性)。
h(t):非规律性的节假日效应(用户造成)。
et:误差项用来反映未在模型中体现的异常变动。
Prophet使用时间为回归元,尝试拟合线性和非线性的时间函数项,采取类似霍尔特-温特斯( Holt-Winters )指数平滑的方法,将季节作为额外的成分来建模。事实上,我们将预测问题类比为拟合曲线模型,而不是精确地去看时间序列中每个时点上的观测值。
1. 趋势
趋势是对时间序列中的非周期部分或趋势部分拟合分段线性函数,线性拟合会将特殊点和缺失数据的影响降到最小。
饱和增长