You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于FBProphet的cross_validation、performance_metrics及参数的技术咨询

FBProphet的cross_validation与performance_metrics详解

一、你的代码逻辑确认

你的理解在当前数据集(2038天)的情况下是正确的——这段代码只会执行一轮交叉验证:用前2008天的数据训练模型,用接下来的30天(第2009-2038天)做测试。但如果你的数据集更长,period=30 days会触发多轮滚动验证,下面详细解释这两个函数的逻辑和参数:

二、cross_validation函数详解

cross_validation是FBProphet专为时间序列设计的滚动交叉验证工具,核心是保持时间顺序,避免未来数据泄露到训练集中。

核心参数说明

  • initial:初始训练集的时长,即第一次训练时使用的历史数据长度。比如你设置的'2008 days',就是第一次用前2008天的数据训练模型。
  • period:两次验证迭代的时间间隔,控制验证的密集度。每过period天,就会用更新后的训练集(包含新增的period天数据)重新训练模型,并预测接下来的horizon天。period越小,验证轮数越多,结果越可靠,但计算量也会上升。
  • horizon:每次预测的时间跨度,也就是测试集的长度。比如'30 days',就是每次训练后,预测接下来30天的数据,再和真实值对比。

执行逻辑扩展

如果你的数据集更长(比如2100天),这段代码会执行多轮验证:

  • 第一轮:训练第1-2008天的数据,测试第2009-2038天
  • 第二轮:训练第1-2038天的数据,测试第2039-2068天
  • 第三轮:训练第1-2068天的数据,测试第2069-2098天
  • 直到测试集的结束时间超过数据集最后一天为止

三、performance_metrics函数详解

performance_metrics是用来从cross_validation的结果中提取模型评估指标的工具,会按预测的时间跨度自动聚合指标,直观展示模型在不同预测时长下的表现。

核心功能

  • 读取cross_validation输出的df数据框(包含ds日期、yhat预测值、yhat_lower预测下限、yhat_upper预测上限、y真实值等字段)
  • 计算常见的时间序列评估指标,包括:
    • mse:均方误差
    • rmse:均方根误差
    • mae:平均绝对误差
    • mape:平均绝对百分比误差
    • coverage:真实值落在预测区间内的比例

使用示例

# 执行交叉验证
df_cv = cross_validation(m, initial='2008 days', period='30 days', horizon='30 days')
# 计算评估指标
df_p = performance_metrics(df_cv)
print(df_p)

输出结果会按horizon(预测天数,如1天、7天、30天)分组,展示每个时间跨度下的指标值。通常能看到:预测时长越短,误差越小;预测时长越长,误差越大,这符合时间序列的普遍规律。


内容的提问来源于stack exchange,提问作者Lokeesh Bharathi S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:39:15