XGBoost 是否可以防止一个特征在同一棵树中被使用两次?

数据挖掘 特征选择 xgboost 梯度下降
2022-03-10 15:57:35

我正在使用 XGBoost,它所做的只是使用我数据第一列中的功能。我的特征重要性图表与我的 xtrain 中的特征位置完全相关。如果我对 xtrain 中的列进行洗牌,则在重新运行模型后,特征图表会随着洗牌而改变。

这表明 XGBoost 在第一个功能上“陷入困境”。有没有办法防止这种情况?我在想通过限制同一特征可以在树中出现多少次?

1个回答

如果您的意思是“同一特征可以在 [individual] 树中出现多少次”,那么您可以使用 max_depth 间接限制单个树中包含的特征数量,甚至限制为一个特征。由于 XGBoost 旨在使用弱学习器,因此具有较低的深度值是可以的。

model = XGBClassifier(max_depth=n)

但是,我认为问题不在于 XGBoost 卡在了单一功能上。例如,其他列可能与标签很少或没有相关性。当您完全删除该列时,您的模型如何执行。这应该告诉您数据集中是否只有一个好的特征。