为什么在以两种不同方式应用时,随机森林分类器的特征选择结果不同

Why are feature selection results different for Random forest classifier when applied in two different ways

我想进行特征选择,我使用了随机森林分类器,但做法有所不同。

我使用了 sklearn.feature_selection.SelectfromModel(estimator=randomforestclassifer...) 并独立使用了随机森林分类器。很惊讶地发现,虽然我使用了相同的分类器,但结果却不同。除了某些两个特征外,其他所有特征都不同。有人可以解释为什么会这样吗?可能是因为这两种情况的参数发生了变化?

这可能是因为 select_from_model 默认重新拟合估计器并且 sklearn.ensembe.RandomForestClassifier 有两个伪随机参数:bootsrap,默认设置为 True,并且max_features,默认设置为'auto'

如果您没有在 randomforestclassifier 估算器中设置 random_state,那么由于 [=18= 引入的随机性,每次拟合模型时很可能会产生不同的结果] 和 max_features 参数,即使在相同的训练数据上也是如此。

  • bootstrap=True 表示每棵树将在训练数据集中一定比例的观察值的随机样本(有替换)上进行训练。

  • max_features='auto' 意味着在构建每个节点时,只会考虑训练数据中特征数量的平方根来选择最能减少 gini 杂质的截止点。

您可以做两件事来确保获得相同的结果:

  1. 先训练您的估算器,然后使用 select_from_model(randomforestclassifier, refit=False)
  2. 使用随机种子声明 randomforestclassifier,然后使用 select_from_model

不用说,这两个选项都要求您传递相同的 Xy 数据。