想象你正开车去机场,导航告诉你“预计 40 分钟到达”。但你在意的或许不是那孤零零的 40 分钟,而是“会不会迟到”——你真正想问的是:最早可能什么时候到?最晚会不会错过航班?一个成熟的导航会告诉你:“40 分钟是中间估计,但考虑到堵车趋势、早晚高峰规律和突发事故,实际可能在 28 到 65 分钟之间。”这个“28 到 65 分钟”的可信范围,就是预测区间。 Prophet 是 Facebook 开源的时间序列预测工具,它做的不只是报出一个点预测,更会告诉你这个预测“有多不确定”——就像导航给出到达时间的上、下限。它的不确定性来自三个层次:整体趋势看不准(路上会不会越来越堵)、周期规律在波动(每天早晚高峰的起伏)、还有无法解释的随机噪音(突然的小事故)。而交叉验证,则像导航公司用过去所有真实行程反复测试算法:把历史数据切成一段段,模拟“如果当时做预测会准吗”。理解这套机制,你就能从“只会点预测”进化到“会管理不确定性”——在库存、容量规划、风控等场景中做出带安全边际的决策。

岗位关联

为什么值得学:真实业务里,管理者需要的不是“数字是多少”,而是“数字有多可靠”。掌握 Prophet 区间预测与交叉验证,你就能交付有置信边界、可被验证的预测结果,这是从“会跑模型”到“能扛业务”的关键一步。

目录
  1. 可视化演示
  2. 三层不确定性分解
  3. 区间预测原理:从单点到一条带
  4. interval_width:导航的保守刻度
  5. 交叉验证机制:用昨天的路考今天的导航
  6. 模拟历史预测:回到过去的复盘
  7. 性能评估指标:给预测区间打分
  8. 实践调参建议:把导航调到最顺手
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

\u901a\u8fc7\u4e09\u9636\u6bb5\u4ea4\u4e92\u5c55\u793aProphet\u5206\u91cf\u5206\u89e3\u3001\u4e0d\u786e\u5b9a\u6027\u533a\u95f4\u4e0e\u6eda\u52a8\u7a97\u53e3\u4ea4\u53c9\u9a8c\u8bc1\u8bc4\u4f30\u673a\u5236\u3002

本节配有交互动效(进入视口后自动加载,约 3KB)。

Prophet\u5206\u91cf\u5206\u89e3 \u8d8b\u52bf \u5b63\u8282 y=trend+seas \u52a0\u6cd5\u6a21\u578b\u5206\u89e3\u65f6\u5e8f\u7ec4\u4ef6

三层不确定性分解

你打开导航准备去机场,它估算“40 分钟到”。为什么它敢报一个数,又为什么敢给一个范围?因为导航把“看不准”拆成了三个来源:整条路网会不会越来越堵(趋势)、每天固定时段的通行规律(季节)、以及随时可能冒出来的小事故(噪声)。Prophet 对预测不确定性的处理,和导航一模一样——它把预测总方差拆成三个层:趋势项、季节项、噪声项。

这三层分别对应时间序列里三种“变数”。趋势项看的是长期方向,比如销量逐年上涨的斜率到底稳不稳;季节项是周期性重复的波浪,比如每年 12 月的购物潮;噪声项是纯随机扰动,比如某天系统故障导致数据异常。Prophet 的思路是:既然一叶障目,索性把三片叶子分别拿起来看,最后合起来估计总体方差。

三层方差可以直接相加,因为 Prophet 假设它们是相互独立的来源。如果你把不确定性想象成一杯鸡尾酒,那这杯酒的“总酒精浓度”就由三种基酒各自贡献:

理解了这三层,你就明白了导航为什么能回答你“最早和最晚几点到”——因为它不再把预测看成一根孤零零的线,而是一个由三层风险叠加形成的“不确定性管道”。

σtotal2=σtrend2+σseasonal2+σnoise2\displaystyle \sigma_{\text{total}}^2 = \sigma_{\text{trend}}^2 + \sigma_{\text{seasonal}}^2 + \sigma_{\text{noise}}^2
这个公式告诉你:预测总方差是三层独立的方差之和,就像三根小水管汇入同一个大水桶。哪根管子粗,水桶的水位就主要由它决定。
  1. 总不确定性预测总体的方差,代表对未来的整体把握程度
    σtotal2\sigma_{\text{total}}^2
  2. 趋势项方差未来趋势斜率不确定带来的方差,离现在越远越大
    σtrend2\sigma_{\text{trend}}^2
  3. 季节项方差周期模式波动的幅度不确定带来的方差,随周期起伏
    σseasonal2\sigma_{\text{seasonal}}^2
  4. 噪声项方差随机观测扰动带来的方差,基本保持恒定
    σnoise2\sigma_{\text{noise}}^2

区间预测原理:从单点到一条带

导航报“40 分钟”时,其实还藏了一句话——“上下浮动 15 分钟”。这句话就是把点预测变成了区间预测。点预测是模型认为最可能的中位数,而区间则是围绕中位数展开的一个带。Prophet 在得到点预测 \hat{y}(t) 之后,会用它前面算出的总标准差来画这条带子。

画带子的关键是“分位数”。如果你想要 80% 的把握,就找标准正态分布里 80% 概率对应的位置,这是统计学里的 z 分数。比如 z=1.28 对应 80% 居中概率,z=1.96 对应 95%。预测时刻离现在越远,三层不确定性累积得越大,总标准差就越大,带子也就越宽。这个“越远越宽”的漏斗形,和导航告诉你“今晚 10 点路上不堵”却不敢打包票“2 小时后不堵”是同一回事。

区间上下界的数学形式,就是中心估计加上一个由分位数放大的不确定半径:

区间预测的本质,是把“我完全确定未来”的傲慢换成“我知道自己在哪方面没把握”的诚实。导航给范围不是因为它技术差,恰恰是因为它懂路况的复杂性。

PI(t)=y^(t)±z1−α/2×σtotal2(t)\displaystyle \text{PI}(t) = \hat{y}(t) \pm z_{1-\alpha/2} \times \sqrt{\sigma_{\text{total}}^2(t)}
这个公式是说:预测区间 = 最可能值 ± 一个保险系数乘上总标准差。保险系数越大(比如 95% 比 80% 大),区间就越宽。
  1. 点预测中心模型估计的最可能值,即区间的中心线
    y^(t)\hat{y}(t)
  2. 分位系数由期望覆盖概率决定的标准正态分位数
    z1−α/2z_{1-\alpha/2}
  3. 总标准差三层不确定性合成的标准差,随时间累积
    σtotal2(t)\sqrt{\sigma_{\text{total}}^2(t)}
  4. 区间端点中心线减去/加上不确定半径得到上下界,形成预测带
    [y^(t)−zσtotal(t),  y^(t)+zσtotal(t)]\left[\hat{y}(t) - z\sigma_{\text{total}}(t),\; \hat{y}(t) + z\sigma_{\text{total}}(t)\right]

interval_width:导航的保守刻度

导航软件通常有个“避开高速 / 避免拥堵”的设置,反映你偏好稳妥还是激进。Prophet 的 interval_width 参数就是这样一个“保守刻度”。它默认是 0.8,意思是:如果让模型反复预测同一种场景,真实值约有 80% 的概率落在区间里。你把刻度调到 0.95,区间就变宽,更稳但信息量更少;调到 0.5,区间变窄,更精准但容易“漏掉”真实值。

这个参数直接对应公式里的覆盖概率。一个合法的区间预测,应当满足“真实落入区间”的承诺:

调参数就像导航里选“最快 vs 最稳”。做库存的人宁愿区间宽一点(宁可多备货也不愿断货),做广告预算的人可能希望区间窄一点(宁可少承诺也不愿超支)。没有绝对正确的值,只有最适合业务风险偏好的值。

P(L(t)≤y(t)≤U(t))=interval_width\displaystyle P( L(t) \le y(t) \le U(t) ) = \text{interval\_width}
这个公式把参数翻译成承诺:模型向你保证,未来真实值落在这个范围内的概率,恰好等于 interval_width 设定的数值。
  1. 真实观测未来某时刻实际发生的值
    y(t)y(t)
  2. 区间边界模型给出的下界和上界
    L(t),U(t)L(t), \quad U(t)
  3. 概率度量真实值落在边界之间的概率
    P(⋅)P(\cdot)
  4. 参数设定interval_width 就是你要的覆盖概率,Prophet 据此反推分位系数
    interval_width\text{interval\_width}

交叉验证机制:用昨天的路考今天的导航

导航公司怎么知道自己的算法靠谱?很简单——翻开历史记录,模拟一次次“过去的行程”来检验。交叉验证就是这个思路:把时间序列按滚动窗口切成多段,每段用前面的数据训练模型,然后预测后面的一段,再把预测值和真实值对比。这个过程就像让导航“回到过去重考”:历史已知路线和路况,看它当时估算得准不准。

Prophet 的 cross_validation 函数有三个关键参数:initial(第一次训练用多长的历史)、period(每隔多久产生一个新的预测起点)、horizon(每次往前预测多少步)。这三个参数共同决定了一套“滚动切分”的实验设计。每次实验都产生一组预测误差,最后把所有误差汇总起来,得到模型在真实业务条件下的综合表现。

多轮验证的误差合并后,最常看的是均方根误差。它把每轮的偏差平方平均再开方,惩罚大偏差:

交叉验证最聪明的点在于“防作弊”:训练时永远只用预测时刻之前的数据,绝不用未来信息。导航公司也绝不会拿“事后才知道的堵车”来当算法功劳——那叫作弊,不叫验证。

RMSECV=1K∑k=1K(y^k−yk)2\displaystyle \text{RMSE}_{\text{CV}} = \sqrt{ \frac{1}{K} \sum_{k=1}^{K} \left( \hat{y}_k - y_k \right)^2 }
这个公式衡量的是:交叉验证中所有“模拟考试”的平均失分幅度。失分越小,导航算法越可信。
  1. 实验轮数滚动窗口切出的训练-预测对数量
    KK
  2. 模型预测值第 k 轮中模型对验证段的预测
    y^k\hat{y}_k
  3. 真实观测值第 k 轮中验证段实际发生的数据
    yky_k
  4. 均方根误差对全部轮次误差平方取平均再开方,得到综合误差水平
    RMSECV\text{RMSE}_{\text{CV}}

模拟历史预测:回到过去的复盘

交叉验证已经验证了整体水平,但你可能还想回答一个更细的问题:如果 3 个月前、6 个月前、9 个月前我就用当时的模型去做预测,结果分别会怎样?这正是 simulated_historical_forecasts 做的事。它像一台“时间机器”,把模型送回历史中的多个关键时间点,只给模型当时能拿到的数据,让它预测未来,然后逐点评估。

这种“复盘式”验证和交叉验证是互补的:交叉验证给的是整体误差统计,而模拟历史预测给你一组“过去各时点的预测快照”。你可以亲眼看到模型在“半年前”的预测曲线长什么样、当时的区间是否罩住了后来的真实值。如果模型在多个历史时点都持续稳定,你对它未来表现的信任度会大幅提升。

稳定性可以用“各回测时点的误差波动程度”来量化——如果每个时点的表现都差不多,说明模型没有侥幸:

模拟历史预测让你的模型接受“时间考古学”的检验:如果它在过去无数次“重演”中都表现稳定,你才有底气用它面对真正的未来。

Δh=∣RMSEh−RMSE‾∣\displaystyle \Delta_h = \left| \text{RMSE}_h - \overline{\text{RMSE}} \right|
这个公式衡量的是:某次模拟预测的误差与平均误差的偏离程度。偏离越大,说明模型在那个时点表现得越异常,稳定性越差。
  1. 某时点误差在第 h 个历史切点的模拟预测误差
    RMSEh\text{RMSE}_h
  2. 平均误差所有历史切点模拟预测误差的平均
    RMSE‾\overline{\text{RMSE}}
  3. 偏差量该时点与平表水平的绝对差距
    Δh\Delta_h
  4. 判断标准偏差量越大,模型在那个历史时点越不稳定,需要警惕
    Δh→0\Delta_h \to 0

性能评估指标:给预测区间打分

导航好不好用,不能只看“是否到得早”,还要看“说 28 到 65 分钟,是不是太宽以至于没有意义”。评估区间预测需要两类指标:一是点预测的误差(MSE/MAE),二是区间本身的质量。点误差衡量中心线准不准,区间指标则回答两个问题:“真实值到底被罩住没有(覆盖率)”和“区间是不是宽得离谱(宽度效率)”。

覆盖率是区间预测的核心质量指标。它统计在 N 个验证样本里,真实值有多少比例落进了区间:

覆盖率之外还要看区间宽度——一个罩住 100% 但宽达 ±100 的区间毫无信息量。理想的区间是“够窄且覆盖率达标”,就像导航给的到达时间范围既要覆盖真实情况,又不能宽到让人无法决策。

Coverage=1N∑i=1NI(Li≤yi≤Ui)\displaystyle \text{Coverage} = \frac{1}{N} \sum_{i=1}^{N} \mathbb{I}\left( L_i \le y_i \le U_i \right)
这个公式在数“罩住没有”的次数占比:如果设置了 80% 的 interval_width,理想覆盖率应该在 80% 附近。太低说明区间太激进,太高说明区间太浪费。
  1. 验证样本数评估用的全部预测时点数量
    NN
  2. 指示函数真实值落在区间内记为 1,否则为 0
    I(⋅)\mathbb{I}(\cdot)
  3. 求和平均把罩住次数求和除以样本数,得到覆盖率
    1N∑i=1N\frac{1}{N} \sum_{i=1}^{N}
  4. 对照目标覆盖率应接近 interval_width 设定的值,偏差大说明区间校准不良

实践调参建议:把导航调到最顺手

你已经学会了所有原理,最后一步是回到业务中调参。不同业务对“宽和窄”的偏好天差地别:预测电饭煲销量做安全库存,断货损失大,宁愿区间宽一点;预测广告点击率做预算分配,区间太宽反而没法决策,宁可窄一点。这就是 interval_width 的“业务权衡”本质——它不是数学问题,而是风险管理问题。

调参要基于交叉验证的结果迭代。先设一个初始宽度(比如默认 0.8),跑交叉验证看覆盖率是否达标:如果覆盖率明显低于设定值,说明模型区间校准有偏差;如果远高于设定值,说明区间过宽。再结合业务成本,比如“库存积压成本 vs 断货损失”,找到最优的宽度。同时要建立监控机制,上线后定期检查实际覆盖率,一旦发现覆盖率长期偏离设定值,就要回头修正模型或参数。

这种权衡可以形式化为一个带有“业务代价”的优化问题:

导航的“避开高速”不是默认设置,而是你根据自己怕不怕迟到选的。Prophet 的区间参数也一样:理解了不确定性来源、验证了模型稳定性、量化了覆盖率,你就能把预测这辆车开得又快又稳。

min⁡w  Width(w)+λ⋅Miss(w)\displaystyle \min_{w} \; \text{Width}(w) + \lambda \cdot \text{Miss}(w)
这个公式表达了调参的本质:在区间宽度(成本)和漏掉真实值的惩罚(风险)之间寻找平衡点,\lambda 由你根据业务承受力决定。
  1. 宽度成本区间宽度造成的决策成本,越宽越模糊
    Width(w)\text{Width}(w)
  2. 漏报惩罚真实值落在区间之外的代价,按 \lambda 加权
    λ⋅Miss(w)\lambda \cdot \text{Miss}(w)
  3. 业务权重\lambda 越大,说明越怕漏;\lambda 越小,说明越怕模糊
    λ\lambda
  4. 最优宽度求使总代价最小的区间宽度参数
    min⁡w\min_{w}

AI 应用场景

电商库存与安全库存规划

阶段:模型应用与决策支持

解决的问题:传统库存管理按点预测决定备货量,一旦预测偏差就会断货或积压。用 Prophet 区间预测得到未来销量的 90% 预测区间,将区间上界作为安全库存上限,把“断货风险”显式量化。

具体案例:某生鲜电商对 300 个 SKU 的日销量建立 Prophet 模型,设置 interval_width=0.85,按区间上界备货。三个月后断货率从 12% 降到 3%,因积压导致的损耗下降了 40%。区间预测让采购部门第一次有了“可量化的风险预算”。

云计算资源容量规划

阶段:容量预测与弹性扩缩容

解决的问题:云服务商的资源订购若按点预测,流量高峰时会扛不住;若按最大值买,成本过高。区间预测把不确定性纳入容量决策:用区间上界决定扩容阈值,用区间下界决定缩容阈值。

具体案例:某在线教育平台用 Prophet 预测晚间的并发连接数,interval_width=0.9 的上界作为自动扩容触发线。结果表明,扩容正确触发率提升 25%,季度云成本反而下降 18%,因为缩容更勇敢、扩容更精准。

金融交易监控与告警

阶段:异常检测与风险管理

解决的问题:传统监控用固定阈值告警,行情波动大时误报频发。Prophet 区间预测给出交易量的动态正常区间,真实值跳出区间即触发告警,让“偏离程度”替代“绝对数值”成为告警依据。

具体案例:某券商对每分钟交易笔数建立 Prophet 区间预测,interval_width=0.95 作为预警边界。当交易量突破区间上界时,系统自动提示“可能有大额资金异动”。上线后误报率降低 60%,且捕捉到两次真实的市场异动。

Python 演示

python31 行
import pandas as pdimport numpy as npfrom prophet import Prophetfrom prophet.diagnostics import cross_validation, performance_metrics # 生成两年的模拟日销量数据:趋势 + 季节 + 噪声np.random.seed(42)dates = pd.date_range("2022-01-01", periods=730, freq="D")trend = np.linspace(10, 20, 730)season = 3 * np.sin(2 * np.pi * np.arange(730) / 365.25)noise = np.random.normal(0, 0.8, 730)df = pd.DataFrame({"ds": dates, "y": trend + season + noise}) # 训练模型并开启 80% 区间预测model = Prophet(interval_width=0.8)model.fit(df) # 预测未来 90 天,输出区间列future = model.make_future_dataframe(periods=90)forecast = model.predict(future)print(forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail()) # 交叉验证:滚动窗口评估多步预测性能cv = cross_validation(    model,    initial="365 days",    period="90 days",    horizon="30 days")metrics = performance_metrics(cv)print(metrics[["horizon", "mse", "mae", "coverage"]])
目的:完整演示 Prophet 从训练、区间预测到交叉验证评估的全流程。输出未来 90 天的预测区间列,以及滚动窗口验证的误差与覆盖率指标。
  1. model = Prophet(interval_width=0.8)创建模型时设定区间覆盖概率为 80%,区间越宽越保守
  2. model.fit(df)用两年前的模拟数据训练,Prophet 会自动拆解趋势、季节和噪声
  3. model.make_future_dataframe(periods=90)生成未来 90 天的时间索引,作为预测的“空答题卡”
  4. forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]]取出中心预测和上下界,区间宽度就是不确定性的大小
  5. cross_validation(initial="365 days", period="90 days", horizon="30 days")用 365 天初训、每 90 天切一个点、每次预测 30 天,滚动验证
  6. performance_metrics(cv)汇总各 horizon 的误差指标,coverage 列会告诉你 80% 的承诺是否兑现

常见误区

误区我觉得预测只要给一个数就行了,给区间反而让人不知道怎么用,而且显得模型不够自信。

正解在实际业务里,单个点预测几乎没有决策价值。安全库存、容量规划、风险告警都需要知道自己面临的上行和下行风险。区间不是“不自信”,而是把风险透明化,让决策者能根据自己承受力选择保守还是激进。

为何常见:入门时大多数人接触的是回归和分类这些“只输出一个值”的任务,容易形成“预测=一个数”的思维惯性。

误区interval_width=0.9 是不是说明模型有 90% 的准确率?那我设置成 0.99 预测就更准了。

正解interval_width 是覆盖概率,不是准确率。它只说“真实值以这个概率落在区间内”,与预测中心线的误差无关。把区间调宽到 0.99 只会让区间巨大到失去意义,并不会让点预测变准。模型的准不准看 MSE/MAE,区间好不好看覆盖率和宽度。

为何常见:"90%" 这个数字天然让人联想到考试分数或准确率,因此极易被误解为模型质量指标。

误区我有数据,随机切 70% 训练、30% 测试,跑一次看效果,这不就是交叉验证吗?

正解时间序列的交叉验证必须保序。随机打乱会让模型“偷看未来”,测试结果虚高。Prophet 的 cross_validation 用滚动窗口保持时间顺序,训练永远在预测之前。更重要的是它会做多轮滚动,不是一次切分就完事。

为何常见:很多入门课程都用普通的 K 折交叉验证教学,大家容易把“交叉验证”这个通用名词直接套到时间序列上。

误区好模型的预测区间就应该窄,宽度大的模型说明它学得不好。

正解区间窄的前提是覆盖率达标。如果一个模型给出 95% 的区间但真实值只有 60% 被罩住,这个窄区间就是“骗人”的。真正好的区间是“窄而准”:宽度尽量小,且覆盖率与设定值吻合。就像导航给 28-65 分钟,虽然宽但确实罩住了真实到达时间,这比自信地报 35-40 分钟却经常迟到更有价值。

为何常见:人类本能喜欢“精确”的感觉,窄区间看起来更专业、更确定,容易忽略它可能根本没有承载真实值。

面试题

Q1. Prophet 将预测不确定性分解为哪三类来源?

单选题 · easy

  • A.趋势、季节与观测噪声← 正确答案
  • B.均值、方差与偏度指标
  • C.训练、测试与泛化误差
  • D.线性、非线性与指数型

答案:A。Prophet 把不确定性拆成趋势、季节、噪声三层,这对应导航“路况趋势、时段规律、突发事故”三层判断。其他选项是标准差或模型评估的概念,不属于 Prophet 的分解结构。

Q2. interval_width=0.8 的合理解释是什么?

单选题 · easy

  • A.模型准确率达到八成以上
  • B.真实值以 80% 概率落入区间← 正确答案
  • C.预测误差控制在八成以内
  • D.训练数据占全量数据的八成

答案:B。interval_width 是覆盖概率:真实值落入预测区间的概率。它不是准确率、误差率或数据划分比例,就像导航“80% 把握到达时间在 28-65 分钟内”。

Q3. 趋势不确定性随预测时长的变化规律是?

单选题 · mid

  • A.随时间保持恒定不变
  • B.预测越远累积扩散越大← 正确答案
  • C.预测越远逐渐收窄减小
  • D.与预测时长完全无关系

答案:B。趋势斜率的小误差会随超前时长被放大,所以预测越远区间越宽。这也解释了为什么导航敢报 10 分钟后的到达时间,却不敢打包票 2 小时后的路况。

Q4. 交叉验证中 horizon 参数表示什么?

单选题 · mid

  • A.每次训练使用的历史长度
  • B.两个切分点之间的时间间隔
  • C.每次滚动预测的未来步长← 正确答案
  • D.验证集占总样本的比例值

答案:C。horizon 是每次向前预测多久。initial 控制初始训练长度,period 控制切分间隔。三者的关系像导航实验:用多长历史经验(initial)、隔多久模拟一次(period)、每次预测多远(horizon)。

Q5. 预测区间宽度随提前预测步数增大会怎样?

单选题 · mid

  • A.区间宽度逐渐收窄
  • B.区间宽度保持恒定
  • C.区间宽度逐渐增宽← 正确答案
  • D.区间宽度先增后减

答案:C。三层不确定性会随超前时长累积,所以区间像打开的扇子越来越宽。这是“越远越不确定”的数学表达。

Q6. 以下哪个是区间覆盖率的正确计算公式?

单选题 · hard

  • A.(1/N) Σ I(L_i ≤ y_i ≤ U_i)← 正确答案
  • B.(1/N) Σ (y_i − ŷ_i)²
  • C.(1/N) Σ |y_i − ŷ_i| / y_i
  • D.(1/N) Σ (U_i − L_i)

答案:A。覆盖率数的是“真实值落在区间内”的比例,用指示函数 I 实现。B 是 MSE,C 是 MAPE,D 是平均宽度。覆盖率验证的是区间承诺是否兑现,而不是误差或宽度本身。

Q7. Prophet 交叉验证的滚动窗口机制包含哪些参数?

多选题 · mid

  • A.初始训练集长度← 正确答案
  • B.切分点之间隔← 正确答案
  • C.向前预测的步长← 正确答案
  • D.区间宽度的阈值

答案:ABC。initia、period、horizon 三参数共同控制滚动窗口。interval_width 是预测区间参数,与交叉验证切分无关。三个切分参数配合,决定了“模拟考试”的时间安排。

Q8. 关于不确定性三层分解,哪些说法正确?

多选题 · mid

  • A.趋势不确定性随前瞻距离累积← 正确答案
  • B.季节波动贡献周期起伏的区间← 正确答案
  • C.观测噪声对区间贡献恒定底噪← 正确答案
  • D.三层不确定性可以相互抵消归零

答案:ABC。三层方差是相加关系,不是抵消关系,所以 D 错。趋势随距离放大、季节周期性起伏、噪声恒定,三者在 Prophet 中假设独立,共同汇入总方差。

Q9. 哪些方法可以有效验证 Prophet 模型的稳定性?

多选题 · hard

  • A.交叉验证的滚动窗口评估← 正确答案
  • B.模拟历史预测的回到过去回测← 正确答案
  • C.单次随机划分的训练测试
  • D.直接增大训练集的数据量

答案:AB。A 和 B 都能在多个时间点检验模型表现,发现“某些时期特别差”的不稳定情况。单次随机划分无法覆盖时间分布,增加数据量只提升训练充分性,都不能验证稳定性。

Q10. 业务要求“覆盖率不低于 95% 且区间尽量窄”,应如何设置?

单选题 · extreme

  • A.调大 interval_width 至 0.95← 正确答案
  • B.调小 interval_width 至 0.05
  • C.增大趋势不确定项的系数
  • D.直接关闭季节性波动的贡献

答案:A。interval_width=0.95 直接把覆盖概率目标设为 95%,Prophet 会算更宽的分位边界来兑现承诺。B 会让区间极窄但覆盖率远低于要求;C、D 是人为篡改不确定性分解,会破坏概率校准。