Facebook 表示,Prophet 相比现有预测工具更加人性化,并且难得地提供 Python 支持。另外,它生成的预测结果足以和专业数据分析师媲美。
Facebook 把预测任务的流程用下图展示出来:
从图中可以看出,预测共分四个流程:建模,预测评估,表面问题和人工检查。
在建模阶段,当前可用的 Python 工具包寥寥无几。最广为人知的 “ forecast” ,谷歌开发的 CausalImpact, 以及推特的 AnomalyDetection,均是基于 R 语言。很显然,Facebook 想要改变这一点。
从 Facebook 官方声明来看,推出 Prophet,是希望用它来替代 forecast,成为最受欢迎的预测工具。雷锋网(公众号:雷锋网)了解到,相对于后者,Facebook 表示 Prophet 有两大优点:
开发合理、准确的预测模型更加直接。
Prophet 包含许多预测技术,比如 ARIMA 和 exponential smoothing。每一项工具都有它的长处、短处和调节参数。Facebook 表示,选择不恰当的模型或参数会造成让人难以满意的结果;而即便是有经验的数据分析师在选择模型、参数上也经常遇到困难。言下之意是,Prophet 将着重改善这方面的体验,让模型、参数的选择更直观。
用 Prophet 做出的预测,能够以对普通人更加直观的方式进行定制。
Prophet 有针对周期性的平滑参数(smoothing parameters for seasonality),允许开发者调整与历史周期的匹配程度。它还有针对趋势的平滑参数,能够调整对历史趋势变化的紧跟程度。对于增长曲线(growth curves),开发者能人工设置上限,即 capacities,把关于“该预测如何增长(或下降)”的先验信息注入进去。最后,开发者还能设置不规则日期,来对超级碗、感恩节、黑色星期五之类的特殊日子进行建模。
在它的核心,Prophet 是一个可加回归模型(additive regression model),它有四个组成部分:
一个分段的线性或逻辑增长曲线趋势。Prophet 通过提取数据中的转变点,自动检测趋势变化。
一个按年的周期组件,使用傅里叶级数(Fourier series)建模而成。
一个按周的周期组件,使用虚拟变量(dummy variables)。
用户设置的重要节日表。
雷锋网获知,Prophet 针对的是商业预测任务,适用于具备以下特征的场景:
针对每小时、每天或每星期的观察频次,有至少数月(理想情况的一年)的历史记录。
多重显著的“人类层级”周期性:星期X以及年份。
日期间隔不规则的重要节日(比如超级碗),需要事先得知。
观察缺失或是异常值在合理范围内。
历史趋势变化,比如产品发布或者改写记录(logging changes)。
符合非线性增长曲线的趋势,有天然上、下限或者饱和点。
想要进一步了解 Prophet 的读者,请参考以下链接:
Facebook 博客:https://research.fb.com/prophet-forecasting-at-scale/
使用指南:https://facebookincubator.github.io/prophet/docs/quick_start.html
文件:http://facebookincubator.github.io/prophet/
本文作者:三川 本文转自雷锋网禁止二次转载, 原文链接 相关资源:python 时间序列预测 —— prophet