【问题标题】:How Random Forest and XGB 'Regressor' calculate feature importance随机森林和 XGB 'Regressor' 如何计算特征重要性
【发布时间】:2021-09-09 23:29:48
【问题描述】:

我正在搜索 Random Forest 和 XGB 'regressor' 如何计算特征重要性。 然而,大部分讨论都集中在分类器上。

我试图在官方文档中找到答案,但遇到了一些问题。

  1. 在XGB official site中,get_score的描述表明 '对于线性模型,只定义了“权重”,它是 没有偏差的标准化系数。剂量意味着功能 重要性仅由输入和之间的系数计算 输出?不是按 mse 或 gini 计算的吗?

  2. RF official site中,feature_importances_的描述 表示“基于杂质的特征重要性。”但在 RF source code 第 1125 行,它指出“支持的标准是 “mse”表示均方误差,等于方差 减少作为特征选择标准的剂量 RF 回归器适用 特征重要性计算是基于杂质还是mse?

我认为基尼杂质是分类的标准,所以上面的插图让我很困惑。

如果有时间可以指导我如何理解这些文档,将会很有帮助。 例如,如何跟踪我运行了哪个函数。

谢谢!

【问题讨论】:

  • 我认为如果您在其他社区(例如 CrossValidated 或 DataScience)问这个问题会更好。
  • 如果您也可以添加您的代码,它会更容易帮助您。例如 - 你真的对 XGBoost 使用线性模型吗?另外,我建议查看 xgboost.XGBRegressor 类中的“importance_type”参数 - 在那里您可能会找到您需要的信息。

标签: python scikit-learn random-forest xgboost feature-selection


【解决方案1】:

clf = RandomForestClassifier() clf.fit(df.drop('name', axis=1), df['name'])

plt.figure(figsize=(10,10)) plt.bar(df.drop('name', axis=1).columns, height=clf.feature_importances_, bottom = 0, width=0.8) plt.xticks(rotation=80)

hight_rate_col = df.drop('name', axis=1).columns[clf.feature_importances_ > 0.1] x_train_rate, x_test_rate, y_train_rate, y_test_rate = train_test_split(df[hight_rate_col], df['name'])

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
猜你喜欢
  • 2021-05-09
  • 2021-08-29
  • 2015-05-12
  • 2019-09-01
  • 1970-01-01
  • 2020-05-26
  • 2018-12-31
  • 2016-04-09
  • 2017-10-21
相关资源
最近更新 更多