为了实现可扩展和健壮的时间序列预测模型,我目前正在试验金属制造组件。注意,我也在使用全局建模方法,所以所有的时间序列都在从另一个时间序列中“学习”。在我的例子中,我想预测未来一年12个零售产品的月度需求(4年的培训数据),我还选择了不同的数据集来测试以下内容。
作为基本模型,我用6种不同的学习率( 0.001 ~ 0.65 )拟合了6个XGBoost模型。我没有调优的其他参数(欧洲代码库默认设置)。对于金属获取器,我还使用了具有以下调优网格的XGBoost模型:

注意,我为eta参数选择了一个很小的范围!
网格搜索的结果是mtry = 16,min_n = 13,tree_depth =7,学习率为0.262。树被设置为1000,早期停止参数设置为50次迭代。
然而,我认为我的结果太好了,不可能是真实的(现实的)。下面,您可以从我的预测中看到典型的准确性结果:

正如你所看到的,事后预测的线(样本外测试集上的训练预测)几乎完全符合实际值。还有一个几乎完美的偏差,方差权衡。这似乎很奇怪,因为在现实世界的问题上应该很难做到这一点。
现在我在问自己,这种方法到底是我所需要的,还是这个?
发布于 2022-06-08 10:13:51
没有更多的细节,在我看来,你似乎有一个数据泄漏问题。
你是如何在火车/测试中把数据分开的?请注意,您正在处理的是一个时间序列问题,因此标准的随机分割无法工作。如果你做随机分割,你就会有一个数据泄漏,即:你的模型将接受未来数据的训练。
在时间序列问题中,您需要根据时间进行分割,例如,使用前3年的所有数据来训练模型,然后用去年剩下的数据对模型进行评估。
https://datascience.stackexchange.com/questions/111620
复制相似问题