使用 TimeSeriesSplit 进行加权时间序列性能估计

机器算法验证 机器学习 时间序列 预测 交叉验证 scikit-学习
2022-03-26 08:22:41

我正在处理一个具有时间分量的预测问题,类似于以下内容:我有 2 年关于数千个代理的日常性能数据,并希望使用一组决策树来预测每个代理的未来性能(例如RandomForestRegressor、GBR 或 XGBoost)。我的问题涉及当底层真实函数随时间发生显着变化时所采用的最佳性能评估方法(交叉验证和 OOB 错误由于使用滞后特征而都不合适)。

我使用TimeSeriesSplit作为模型性能估计和超参数选择的方法。早期拆分的最佳超参数与后期拆分不同。因此,我想在调整超参数时强调最近预测的性能(为了夸大这个问题,考虑使用 20 多年的股市数据。)为此,我认为将最近拆分的分数加权更高是有意义的;例如,在 15 倍拆分中,第一次拆分(使用最旧的数据和最小的样本)的性能将具有最小的权重,而最后一次拆分(使用最新的数据并具有最大的样本)将具有最大的权重.

时间序列分裂

使用or plus (sklearn)寻找最佳超参数的经典、简单的方法优化模型的超参数,以在所有分割(从第一次分割到最后一次分割)上平均加权平均性能,但这显然不如牺牲一些预测的准确性好很久以前,如果作为权衡,我们可以充分改进对最近时期的预测。此外,超参数调优的朴素方法将使用最旧的数据进行 15 次训练(15 次分割),而评估模型性能的最新训练数据仅使用一次。GridSearchCVRandomizedSearchCVTimeSeriesSplitTimeSeriesSplit

在 scikit-learn 中应该如何选择拆分权重来实现这种自定义时间序列交叉验证方法?我想在我的管道中使用这个“加权 TimeSeriesSplit”。

0个回答
没有发现任何回复~