Prophet:Facebook 简单高效的时间序列模型

将门创投

    
    导读:
    时序预测是一个很常见的数据科学任务,可以帮助组织或个人进行目标规划或者异常检测等。
    本文介绍的是 Facebook 2017 年的工作——Prophet,这是一个适用于大规模的时序预测模型。它不仅解决了时序预测的建模问题,还解决了模型的可解释性问题。
    此外,Facebook 提供了 Prophet 的开源代码,并且将模型封装的非常简单且友好,极大地降低了分析人员的入门门槛,同时也提供了各种接口以便分析人员灵活地调整模型。
    1 为什么有 Prophet
    构建一个高质量的预测不是一件容易事,而在商业预测的实践过程中通常会出现两个问题:
    完全自动的预测技术不够灵活,过于死板;分析师通常有较高的专业知识,但是在时序模型预测方面一无所知;
    预测是一个需要大量专业经验的任务,因此,如何能够提供一个高质量且简单易用的预测模型成了一个亟需解决的问题。
    为此,Facebook 的研究员进行了大量的研究,并提出了 Prophet 模型,该模型非常简单灵活,适用于没有进行过时序预测的人员,同时也提供了非常人性化的配置。
    下图展示了大规模商业分析中的循环方法,其由自动化建模和人工干预两部分组成:
    
    Modeling:首先分析师会使用制定的参数对时间序列进行建模;Foreca and Evaluation:然后由模型产生预测并对其进行评估;Surface Problems:当性能不佳时可以进行人工干预,并将问题标记给分析师;Visually Inspect Forecasts:分析师进行检查并根据反馈调整模型。
    2 Prophet 预测模型
    在介绍模型之前,我们先看一张图:
    
    这是 Facebook 的真实数据集,每一天都有一个点,点的颜色按照星期进行编码,以展示一个星期的周期性。
    从这张图中我们可以看到:这个时间序列具有周期性 (weekly、yearly)、趋势变化性 (Trend)、异常点 (outliers) 和节假日效应 (holiday)。
    我们可以使用时间序列分解将其分解为趋势、季节性、节假日:
    其中,g(t)建模时间序列值非周期变化的趋势函数;s(t)建模周期性变换,包括 weekly、yearly;h(t)建模不规律的假期影响;误差项 表示模型不适应的任何特殊变化;后面我们会假设这个参数服从正态分布。
    这类规范类似于广义可加模型 (Generalized additive model,GAM),这是一种非线性的回归模型。这里 Prophet 只使用时间作为回归因子,并用几个线性和非线性的时间函数作为分量。
    GAM 不具备 ARIMA 重要的推论优势,但其也具备其他方面的优势:
    灵活性强,易于分解,且在必要时也可以容纳新的成分;拟合速度快,允许用户进行交互式探索;测量值不需要有规则的间隔,也不需要对缺失值进行处理;参数的可解释性强,方便用户更改。
    接下来我们关注模型分解后的不同模块。
    
    
    1  2  3  4  下一页>