如何使用多个 XGBoost 模型查找特征重要性

数据挖掘 时间序列 xgboost 预测
2022-02-14 09:00:49

我的问题陈述 :时间序列预测(逐月数据),对 96 个月的数据进行训练并预测接下来的 12 个月,中间有 3 个月的空白窗口。

示例

第 1 批

***Training Data index*** <2010-01-01 -----------------------------2017-12-01>

***Unused Month Window*** <2018-01-01---2018-03-01>
***Test Month*** <2018-04-01> [Trained model with Batch 1 training data 
                               can ONLY be used for predicting this month, 
                               not any other]

第 2 批

***Training Data index*** <2010-01-01 -----------------------------2018-01-01>

***Unused Month Window*** <2018-02-01---2018-04-01>
***Test Month*** <2018-05-01> [Trained model with Batch 1 training data 
                               can ONLY be used for predicting this month, 
                               not any other]

依此类推,直到第 12 批...

我正在训练 12 个 XGBoost 模型来获得 18 财年 12 个月中每个月的预测,因此针对所使用的预测变量的每个模型获得 12 个不同的特征重要性。但我想报告整个 18 财年的特征重要性,而不是每个月给出 12 组不同的特征重要性。我将如何处理?

在整个测试数据集上评估单个模型不是一种选择。

任何帮助表示赞赏。谢谢。

1个回答

我怀疑您可能会混淆“测试集”和“训练集”这两个术语。通常,模型在训练集上进行训练,并在测试集上进行评估。特征重要性与测试集无关,它是您训练的模型的属性。

显而易见的答案是将所有月份组合成一个训练数据集,并在此基础上训练一个模型,但你说这不是一个选择。

然后我认为您唯一的选择是结合各个月份的结果,例如通过求和或平均它们并呈现最终排名。这是否有效取决于用于训练树的标准(如何确定拆分)。如果有一种有效的方法可以将它们结合起来,我仍然建议不要这样做,因为我怀疑它会掩盖现实,并且对方法的讨论可能会分散结果的注意力。

所以我会通过呈现一个图表来回避这个问题,就像有时在选举前为体育联盟或民意调查显示的那样。横轴是月份,纵轴是排名。通过这种方式,您可以轻松掌握所有信息的可视化,并且还可以显示任何趋势和季节性影响。

示例声音