我正在使用 XGBoost,它所做的只是使用我数据第一列中的功能。我的特征重要性图表与我的 xtrain 中的特征位置完全相关。如果我对 xtrain 中的列进行洗牌,则在重新运行模型后,特征图表会随着洗牌而改变。
这表明 XGBoost 在第一个功能上“陷入困境”。有没有办法防止这种情况?我在想通过限制同一特征可以在树中出现多少次?
我正在使用 XGBoost,它所做的只是使用我数据第一列中的功能。我的特征重要性图表与我的 xtrain 中的特征位置完全相关。如果我对 xtrain 中的列进行洗牌,则在重新运行模型后,特征图表会随着洗牌而改变。
这表明 XGBoost 在第一个功能上“陷入困境”。有没有办法防止这种情况?我在想通过限制同一特征可以在树中出现多少次?
如果您的意思是“同一特征可以在 [individual] 树中出现多少次”,那么您可以使用 max_depth 间接限制单个树中包含的特征数量,甚至限制为一个特征。由于 XGBoost 旨在使用弱学习器,因此具有较低的深度值是可以的。
model = XGBClassifier(max_depth=n)
但是,我认为问题不在于 XGBoost 卡在了单一功能上。例如,其他列可能与标签很少或没有相关性。当您完全删除该列时,您的模型如何执行。这应该告诉您数据集中是否只有一个好的特征。