XGBoost:测试数据中的特征可以是用于训练模型的特征的子集吗?

数据挖掘 r xgboost
2022-03-02 17:01:00

如果测试数据只有用于训练 xgboost 模型的特征的子集,会不会有问题?我的所有预测变量(1 除外)都是因子,因此在将其转换为 xgb.DMatrix 之前完成了一次热编码。因此,因子变量的不同级别成为特征,我的测试没有所有这些特征,只有其中的一个子集。

目前,在 R 中对测试数据运行我的模型时,我遇到了一个错误,提示“存储在对象和新数据中的特征名称不同!”。

我是该领域的新手,所以任何帮助将不胜感激。谢谢!

1个回答

用于训练模型的所有变量都必须存在于测试集中。

这是因为您使用了所有变量来创建规则。因此,我们需要那些为他们评分。

如果您使用 python 在 sklearn 中使用 fit 或 fit_transform 函数进行热编码,您将使用相同的对象使用 transform 函数转换测试集。

这将确保变量在测试和训练中保持一致。