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

Python Facebook Prophet入站呼叫量预测模型欠拟合优化咨询

优化方案

1. 添加自定义指示回归器直接捕捉月初月末特征

这是解决你当前问题最高效的方案,针对固定时段的流量偏移,直接用二元指示变量捕捉比平滑的傅里叶季节性拟合精度高很多:

  • 在训练数据集新增两列特征:is_first_12_days(每月前12天赋值为1,其余为0)、is_last_7_days(每月最后7天赋值为1,其余为0)
  • 调用Prophet的add_regressor方法将两个特征加入模型,可单独设置prior_scale控制特征权重,月初波动大可以将对应回归器的权重调至20~50区间测试:
M.add_regressor('is_first_12_days', prior_scale=40)
M.add_regressor('is_last_7_days', prior_scale=30)
  • 预测时也需要给测试集生成对应的两个特征列,否则会报错。

2. 配置条件季节性实现分段专属拟合

如果你希望给月初、月末单独配置独立的周期性规律,可以用Prophet的条件季节性功能:

  • 先在数据集新增两个布尔列:is_early_month(前12天为True)、is_late_month(最后7天为True)
  • 分别添加对应时段的专属季节性,可独立设置傅里叶阶数和权重:
M.add_seasonality(
    name='early_month_season',
    period=30.5,
    fourier_order=25,
    prior_scale=50,
    condition_name='is_early_month'
).add_seasonality(
    name='late_month_season',
    period=30.5,
    fourier_order=20,
    prior_scale=40,
    condition_name='is_late_month'
)

原来的全局月度季节性可以保留,也可以根据测试效果选择删除。

3. 调整现有月度季节性参数

你当前设置的月度季节性傅里叶阶数为20,对于需要拟合月初尖峰、月末抬升的非平滑月度规律来说阶数偏低,可以尝试将fourier_order上调到25~35区间,配合prior_scale同步调整,提升对月度高频波动的拟合能力。

4. 训练数据量调整方案

如果业务的月度话务规律在近2年没有发生结构性变化,可以将训练数据缩减到最近23年,避免过旧的历史数据干扰模型对现有规律的学习,调整时需要用最近36个月的数据做验证集,确保泛化能力不下降。

其他可尝试的优化点

  • 你当前的changepoint_prior_scale已经调到15,属于非常高的数值,继续调大很容易引发过拟合,不需要再调整该参数
  • 如果整体话务量存在非线性增长特征,可以尝试将growth参数改为logistic,提前设置好数据的容量上限cap和下限floor
  • 可以对比测试全局加法季节性的效果,如果月初月末的增量是固定数值而非和整体流量成正比,加法季节性的拟合效果会更好

内容的提问来源于stack exchange,提问作者t25

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:06