我一直在尝试构建一个ML模型,它预测不同产品通过部署管道所需的时间。我创建了大约30-40个不同的功能,90%是分类和10%的数字功能。例如,我有一个功能“产品类别”,可以采取5个不同的值。然后我为我的所有分类变量创建虚拟变量,最后我得到大约200-300个变量。
我已经训练了XGboost模型并检查了特征的重要性,并注意到我的大多数特征的重要性都在<0.001左右,其中很多,大约30个是0.我该如何处理这些信息?我应该删除这些变量(例如减少一半的产品类别),还是将所有变量分组到“其他”类别中?处理此问题的任何提示或标准方法?
编辑:我的超级参数。
xgb = xgboost.XGBRegressor(
max_depth = 11,
n_estimators= 150,
min_child_weight= 1,
eta= .3,
subsample= 0.9,
gamma= 0.1,
colsample_bytree= 0.9,
objective= 'reg:gamma'
)
我猜你的数据很稀疏。如果你提到你为你的模型使用的超参数会很有帮助,例如max_depth。通常,tress对于多个功能非常强大,但在GBM中我们使用的是弱学习者。因此,如果您构建的树的数量少于特征的数量,则模型无法理解所有特征的重要性。