2.Prophet 预测可以通过对非专家而言很直观的方式进行自定义。有关于季节性的平滑参数让你能调整与历史周期之间的接近程度,以及关于趋势的平滑参数让你能调整跟随历史趋势变化的激进程度。对于增长曲线而言,你可以手动设定「capacity」或增长曲线的上限,这能让你注入关于你预测的增长或下降情况的先验信息。最后,你还可以为模型指定没有规律的节假日,比如超级碗、感恩节和黑色星期五的日期。 Prophet 如何工作 本质上讲,Prophet 程序是一个可加性回归模型(additive regression model),它包含 4 个主要组件: 分段线性或者 logistic 增长曲线趋势。通过从数据中选择变化点,Prophet 自动探测趋势变化。 使用傅立叶级数建模每年的季节分量。 使用虚变量(dummy variables)的每周的季节分量。 用户提供的重要节假日列表。 例如,下面是一个特征预测:使用 wikipediatrend 包(https://cran.r-project.org/web/packages/wikipediatrend/index.html)下载的 Peyton Manning 的维基百科页面的查看数量的日志。由于 Peyton Manning 是一名美式橄榄球运动员,你可以看到他每年季节性的重要程度变化,同时每周的周期性也明显存在。最后你看到特定事件(比如他参加的季后赛)也可能被建模了。
Prophet 将提供一个组分图,用图形描述它所拟合的模型:
这个组分图更加清晰地展示了与浏览 Peyton Manning 的网页(橄榄球常规赛与季后赛)相关的每年的季节性,以及每周的季节性:(星期日和星期一)比赛当天和比赛之后有更多的访问。你也可以注意到趋势组件自他最近退休以来的下行调整。 Prophet 的重要思想是:通过更好地灵活拟合趋势组分,我们可以更精确地建模季节性,并且有更准确的预测结果。对于这个任务我们更喜欢使用非常灵活的回归模型(有一点像曲线拟合)而不是传统的时序模型,因为前者可以使我们建模更灵活,更容易拟合模型,更优雅地处理丢失数据或离群值。 通过模拟时间序的未来趋势变化,Prophet 默认地会为趋势组分提供不确定的间隔。如果你希望对未来季节性或假期影响的不确定性进行建模,你可以运行数百个 HMC 迭代(花费几分钟),你的预测就将会包括季节性不确定评估。 我们使用 Stan()调整 Prophet 模型,并在 Stan 的概率编程语言中实现了 Prophet 流程的核心部分。Stan 对参数的 MAP 优化有着极快的速度(<1 秒),让我们可以选择使用 Hamiltonian Monte Carlo 算法评估不确定的参数,也使得我们能够在多种接口语言上重复使用该拟合程序。目前,我们提供了 Python 和 R 语言的 Prophet 实现。它们有着几乎相同的特征,而且通过提供这两种实现,我们希望该预测方法能够在数据科学社区有更广泛的用途。 如何使用 Prophet 使用 Prophet 的最简单方法是从 PyPI(Python)或 CRAN(R)里安装这个软件包。你可以阅读我们的快速入门指南,以及阅读综合文档以进行深入的了解。如果你正在寻找一个有趣的时序数据资源,我们建议你尝试一下 wikipediatrend 软件包,atv,它可以从维基百科页面上下载历史页面点击数据。 以下是机器之心对 Prophet 项目上 README.md 文件的编译介绍: Prophet 是一个预测时序数据的程序。它基于加法模型(additive model),其中非线性趋势可与按年和按周的季节性、以及节假日进行拟合。借助至少一年的历史数据,它在每日预测数据上表现最好。在数据丢失、趋势变换以及大离群值方面,Prophet 表现也很稳健。 Prophet 是由 Facebook 的 Core Data Science 团队发布的一个开源软件,可从 CRAN 和 PyPI 上下载。 重要链接 主页:https://facebookincubator.github.io/prophet/ HTML 文档:https://facebookincubator.github.io/prophet/docs/quick_start.html 问题跟踪:https://github.com/facebookincubator/prophet/issues 源代码库:https://github.com/facebookincubator/prophet Prophet R 软件包: https://cran.r-project.org/package=prophet Prophet Python 软件包:https://pypi.python.org/pypi/fbprophet/ 在 R 中安装 Prophet 是一个 CRAN 软件包,因此你可以使用 install.packages: # R > install.packages('prophet') 完成安装,你就可以开始了! Windows (责任编辑:本港台直播) |