Page QiView

Prophet 与层级预测:业务多层口径的一致性建模

Prophet 与层级预测:业务多层口径的一致性建模

1. 为什么 Prophet 在业务里常用

Prophet 的优势是结构直观:趋势 + 季节 + 节假日。
它非常适合快速搭建可解释基线,并让非算法团队也能理解预测来源。

2. Prophet 形式

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

其中:

  1. $g(t)$:分段线性或逻辑增长趋势。
  2. $s(t)$:傅里叶季节项。
  3. $h(t)$:节假日/事件效应。

3. Python 示例

from prophet import Prophet

dfp = df.rename(columns={"ds": "ds", "y": "y"})

m = Prophet(
    yearly_seasonality=True,
    weekly_seasonality=True,
    changepoint_prior_scale=0.1,
)

m.add_country_holidays(country_name="CN")
m.fit(dfp)

future = m.make_future_dataframe(periods=30)
fcst = m.predict(future)
print(fcst[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail())

4. 层级预测为什么难

企业常有多层口径:商品 -> 品类 -> 大区 -> 全国。
逐层独立预测会产生“不加总一致”问题(子层之和不等于父层预测)。

5. 一致性修正思路

  1. Bottom-up:先预测子层,再向上汇总。
  2. Top-down:先预测总量,再分摊到子层。
  3. MinT:基于误差协方差做最优一致性投影。

6. 实务建议

  1. Prophet 作为冷启动与可解释基线非常有效。
  2. 对重要层级做一致性约束,避免报表冲突。
  3. 重大事件期(大促、政策变动)应人工注入外生信息。

Prophet 解决的是“快速、稳健、可解释”的第一公里,层级一致性解决的是“组织可执行”的最后一公里。