为什么 XGBoost 将一项功能保持在高度重要的位置?

数据挖掘 Python 分类 xgboost
2021-10-02 16:00:05

我正在训练一个 XGboost 模型,用于对大约 60 个稀疏数字特征进行二进制分类。训练后的特征重要性分布有一个特征的重要性> 0.6,其余所有的重要性<0.05。

我删除了最重要的功能,然后重新训练。相同的分布形式;最重要的特征的重要性> 0.6,其余的< 0.05。我继续删除最重要的功能并重新训练,删除并重新训练,删除和重新训练等。我的 f1 分数开始下降,但每次都有一个功能比其他功能更重要。

另外值得注意的是,当我删除最重要的特征并重新训练时,新的最重要的特征并不是之前训练的第二重要特征。

我无法直观地解释这种行为。有谁知道为什么会出现这种模式?

1个回答

根据文档,“增益”是默认值,由这个公式计算,我认为直觉不会有帮助。普遍的共识是,特征重要性是一个棘手的概念,只要您的模型表现良好,您就不必担心它。特别是使用增益的链接公式,您可以看到第一次拆分可能是迄今为止最重要的,具体取决于 gamma,因此默认情况下,所有其他特征的重要性都很低。

另一方面,如果您选择“权重”,那将只是选择该特征进行拆分的次数。这可能意味着一个特征包含许多独特的值,并且可以多次选择并且仍然可以提高准确性。

所有这些在很大程度上取决于您使用的数据和参数。这种模式没有任何普遍的答案。