Facebook 宣布开源一款基于 Python 和 R 语言的数据预测工具――“Prophet”,即“先知”。取名倒是非常直白。
Facebook 表示,Prophet 相比现有预测工具更加人性化,并且难得地提供 Python 支持。另外,它生成的预测结果足以和专业数据分析师媲美。
在建模阶段,当前可用的 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)。
用户设置的重要节日表。