我正在运行一个预言机模型来预测呼入电话量。我花了很多时间清理数据、运行对数刻度和超参数调整——这产生了“好的”MAPE(平均百分比误差)。
在这一点上我的问题是模型一直欠拟合。尤其是在本月的前 12 天 - 在本月的前 6 天更是如此。由于运营原因,这些天的通话量总是要高得多。随着交易量进入下个月的开始,它们也开始在月底附近开始建造。
实际是蓝点,预测是灰线。这只是一个月,但它代表了所有其他月份的每月季节性:
为简单起见,我将仅包含模型详细信息,并将所有数据清理过程排除在外。如果有帮助,我可以提供更多信息,但到目前为止我得到的反馈是,额外的细节只会让事情变得混乱。真正唯一重要的是,对构建模型的数据运行 boxcox 转换后的结果,以及对来自模型的数据进行反向 boxcox 后的结果:
# Create Model
M = Prophet(
changepoint_prior_scale = 15,
changepoint_range = .8,
growth='linear',
seasonality_mode= 'multiplicative',
daily_seasonality=False,
weekly_seasonality=False,
yearly_seasonality=False,
holidays=Holidays
).add_seasonality(
name='monthly',
period=30.5,
fourier_order = 20,
prior_scale = 45
).add_seasonality(
name='daily',
period=1,
fourier_order=75,
prior_scale=20
).add_seasonality(
name='weekly',
period=7,
fourier_order=75,
prior_scale=30
).add_seasonality(
name='yearly',
period = 365.25,
fourier_order = 30,
prior_scale = 15)
总的来说,我想全面改善欠拟合的情况——尤其是在月初和月底。我尝试增加 changepoint_range 以放松模型,但结果并不明显。我也尝试增加“每月”季节性的prior_scale,但没有比上面的截图更好的结果。
我有点不知所措。有没有可以与 FaceBook Prophet 模型一起使用的建模技术来解决这个问题?有没有办法添加一个回归量,将特定的季节性分配给前 12 天和最后 7 天?我做了一些研究,不确定你是否可以和/或如何工作。
任何帮助将不胜感激。
作为更新,我尝试提升 change_point 范围和更改点先验比例,但没有任何影响。打算尝试减少训练数据量(目前使用 4 年)。