Lightgbm 中某个特征的特征重要性很高,但会降低评估分数

机器算法验证 Python 机器学习 特征选择
2022-03-30 01:30:08

我目前正在使用 lightGBM 进行机器学习项目。

当我在训练数据中添加一个特征时,我得到的特征重要性结果lgb.plot_importance(gbm, max_num_features=10)很高,但是添加这个特征会降低 RUC_AUC_score 用于性能评估。

在追求高预测时,我们是否只是放弃了这个功能?或者从理论上讲,在放弃它之前我需要调查的问题很少?

我目前的理解是,light gbm 中的特征重要性显示了在训练数据时该特征发生了多少次分割,因此并不一定意味着高特征重要性总是会带来更好的性能。因此,在上述情况下,我可以根据评估分数的下降来放弃该功能。

我一直在思考这个问题几天,仍然可以自己得出一个可靠的结论。如果我的任何想法是错误的,请告诉我。

谢谢。

2个回答

如果您在lightgbm 文档中查找 feature_importance 函数,您会看到它有一个参数importance_type此参数的两个有效值是split(默认值)和gain分裂和增益产生相同的特征重要性并不一定重要。有一个新的功能重要性shap库。
阅读上述库的合著者撰写的这篇文章,他解释说这是更好的方法。

您应该使用verbose_evalandearly_stopping_rounds来跟踪模型在训练时的实际性能。例如,verbose_eval = 10将在每 10 次迭代时打印出模型的性能。该特征可能会损害您的模型或模型过度拟合。在过度拟合的情况下,通常会出现一个主要特征,就像你的情况一样。

通过在训练时直观地跟踪性能verbose_eval并确保模型没有过度拟合early_stopping_rounds,您可以通过逐一分析特征来查看性能如何受到直接影响。不要一次去掉多个特征,模型可能会从这些特征中丢失一个强大的模式,你可能会误解结果。

其它你可能感兴趣的问题