我有一个管道,可以构建一个XGboost回归模型,并对新数据进行评分。我还处于发达阶段,我注意到了一些奇怪的行为。下面的大纲。
- 我使用SQL为2018年之前的数据提取训练数据集
- 我在2018年的前几周通过SQL提取测试数据集。
- 在python代码中,我有相同的功能列表,其中包含我训练模型的功能。
(现在是奇怪的部分)。
- 我删除了测试数据集pull SQL中的一列(这是一个未在功能集中使用的列,因此不需要(它不是目标)。
- 这使RMSE增加了约100%。
- 我已经完成了相当多的QA。我找不到数据集或代码中的任何错误(SQL / Python)的任何差异。我甚至尝试添加和“ORDER BY RAND()”到SQL无济于事。看起来添加/删除未使用的列会完全改变RMSE。
- 最后,我决定将COLUMN留在SQL中,然后将其放在python脚本的最开头。当我放弃它时,RMSE再次上升~100%。
**我假设如果XGBoost以某种方式使用它,当列不在功能列表中时,当我通过数据[功能]时会抛出错误。
醇>
任何想法是怎么回事?