【读论文】prophet



2019年10月20日    Author:Guofei

文章归类: 0x00_读论文    文章编号: 99

版权声明:本文作者是郭飞。转载随意,标明原文链接即可。本人邮箱
原文链接:https://www.guofei.site/2019/10/20/prophet.html


前言

时间序列预测可以用于 capacity planning, goal setting, and anomaly detection,所以挺重要,这篇论文提出了一个模型。

business forecast有两种主要方法

  • completely automatic forecasting techniques 缺点是不灵活,且不能加入专家知识。
  • analysts 往往缺乏 series forecasting 方面的知识

正文

核心公式还是加法公式

$y(t)=g(t)+s(t)+h(t)+\epsilon_t$

  • g是趋势性
  • s是周期性(周、年等)
  • h是holiday,特点是不规律,可能持续一天或数天

模型优点

  • Flexibility:可以轻松调整周期和趋势
  • 不需要均匀采样(对比ARIMA)
  • 拟合较快
  • 每个参数都有意义,都可理解

3.1 趋势项

3.1.1 Nonlinear, Saturating Growth

$g(t)=\dfrac{C}{1+\exp(-k(t-m))}$

模型进行如下改进:

capacity C 是变化的(例如FaceBook的用户数量,上限是网民人数,但网民人数在变化)替换为$C(T)$

增长率k也是变化的。原文用了3个式子去描述,就不摘抄了。描述一下就是,增长率是分段的,然后为了函数连续,m也需要分段进行调整。

3.1.2 Linear Trend with Changepoints

就是一个线性模型 $g(t)=kt+m$,然后用上面写的方法进行分段。

3.1.3 寻找分割点

上文涉及到分割点,如何计算呢:

  • 分析师根据经验去定义。
  • 按月按年等,等分
  • 随机选取分割间隔,分割间隔服从拉普拉斯分布$\delta_j\sim Laplace(0,\tau)$

3.2 Seasonality

$s(t)=\sum\limits_{n=1}^N (a_n cos(\dfrac{2\pi nt}{P})+b_n sin(\dfrac{2\pi nt}{P}))$

P = 365.25 for yearly data or P = 7 for weekly data

先定义一个N,然后拟合 $a_i,b_i$ (共2N个)
可以使用AIC准则来计算N

3.3 Holidays and Events

For each holiday i, let $D_i$ be the set of past and future dates for that holiday. 例如,用1代表圣诞节,2代表感恩节…,那么$D_1$就是圣诞节集合,$D_2$是感恩节集合。

如果总共L种节日,那么$Z(t)$是L阶向量
$Z(t)=[1(t\in D_1),…,1(t\in D_L)]$

原文没写太清楚,但$h(t)$应该是$Z(t)$的各元素加权和,权重就是待解参数。

3.4 Model Fitting

周期项和节日项产生了多维feature,类似多维回归,优化算法选择L-BFGS

3.5 分析师的作用

  • Capacities
  • Changepoints
  • seasonality
  • Holidays
  • smoothing parameter

我的理解

  1. 整个模型实际上还是时间序列分析中的加法模型,
  2. 加法每一项都做了巧妙但不难的设计,保证一定的复杂度的同时,可解释性、可操作性都极强。
  3. 很漂亮的模型。

您的支持将鼓励我继续创作!