且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

转换为DMatrix后XGBoost训练和测试功能的差异

更新时间:2023-12-01 08:03:58

另一种可能性是将一个功能级别专门用于训练数据而不是测试数据.这种情况大多发生后,同时一个热码,其结果是大矩阵具有的类别特征,每个级别的水平.在你的情况下,它看起来像f5232"是在训练或测试数据是独占的.如果这两种情况下的模型评分都可能引发错误(在ML包的大多数实现中),原因是:

One another possibility is to have one feature level exclusively in training data not in testing data. This situation happens mostly while post one hot encoding whose resultant is big matrix have level for each level of categorical features. In your case it looks like "f5232" is either exclusive in training or test data. If either case model scoring likely to throw error (in most implementations of ML packages) because:

  1. 如果专用于训练:模型对象将具有在模型公式该特征的参考.虽然得分就会抛出错误,说我无法找到此列.
  2. 如果专用于测试(较小可能作为测试数据通常比训练数据小):模型对象不会在模型公式该特征的参考.在计分时会抛出错误,说我得到了此列,但模型方程式没有此列.这也不太可能,因为大多数实现都意识到这种情况.

解决方案:

  1. ***的自动的"解决方案是仅保持那些列,这是共同的训练和测试后一个热编码.
  2. 对于即席分析,如果您不能负担下降,因为它的重要性特征的水平,然后做分层抽样,以确保功能的所有水平被分配到训练和测试数据.