如何解释 XGBRegressor() 的 .get_booster().get_score(importance_type='weight')

数据挖掘 回归 特征选择 xgboost
2022-02-22 00:24:14

我正在尝试使用 XGRegressor() 进行特征选择。我这样做是因为我有超过 4,000 种功能可供选择。一旦我有了一组特征,我就创建了一个神经网络来使用这些特征来预测 median_gross_rent。

我的问题如下,我有这些特征的重要分数来自

feature_important = model.get_booster().get_score(importance_type='weight')
keys = list(feature_important.keys())
values = list(feature_important.values())

feat_imp_df = pd.DataFrame(data=values, index=keys, columns=["score"]).sort_values(by = "score", ascending=False)

在此处输入图像描述

我应该设置一个阈值分数以进行截止吗?在确定要使用的大量特征时,特征选择的最佳实践是什么?谢谢!

1个回答

如果必须以这种方式选择特征,传统的方法是选择您想要获取的顶部特征的数量,而不是阈值。

通常这种特征选择只有在相对于实例数量有太多特征时才会进行。这就是为什么人们试图猜测什么是合理数量的特征n,然后任意选择这个数字。一种更高级的方法是尝试几个值n,例如 100,200,300...,为每个训练/测试模型n(在验证集上),然后观察性能如何使用这些值演变以选择最佳数字。

请注意,根据个体重要性选择特征并不总是最优的。如果可能,最好让算法决定它使用哪些功能。