Darts时序预测库如何处理协变量?为何预测不随协变量变化?
XGBModel预测结果不受协变量修改影响的排查方案
以下是针对你遇到的“修改协变量后预测结果完全一致”问题的排查方向:
验证协变量是否被模型实际利用
训练完成后,查看模型的特征重要性,确认协变量对应的特征是否有非零权重。如果协变量特征权重全为0,说明模型未学习到协变量的影响:# 查看模型特征重要性(基于XGBoost底层接口) print("mymodel特征重要性:", mymodel.model.get_booster().get_score(importance_type='weight')) print("mymodel2特征重要性:", mymodel2.model.get_booster().get_score(importance_type='weight'))检查协变量的时序对齐与滞后参数
确保X_train_trans与y_train_trans的时间长度完全匹配,且lags_past_covariates=2的设置符合数据逻辑。Darts的XGBModel会根据lags(目标序列滞后)和lags_past_covariates(协变量滞后)构建特征矩阵,如果序列过短导致滞后窗口无法覆盖有效数据,模型会忽略协变量。确认预测阶段的协变量输入有效性
预测时传入的past_covariates需要包含预测起始时刻前足够的历史数据,确保X_train_trans*5的时序范围、长度与原协变量一致,能覆盖模型所需的滞后窗口。若输入的协变量数据不完整,模型会仅依赖目标序列的滞后特征进行预测。排查协变量与目标序列的相关性
XGBoost树模型对特征缩放(如乘以5)本身不敏感,但如果协变量与目标序列完全无关,两种训练场景下模型都会学到仅依赖目标滞后的规则,导致预测结果一致。可以构造与目标序列强相关的协变量(如直接基于y_train_trans生成),验证模型是否会产生不同预测。
内容的提问来源于stack exchange,提问作者Sandy Al Akhras
相关产品推荐
相关产品推荐

