为什么在以两种不同方式应用时,随机森林分类器的特征选择结果不同
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 杂质的截止点。
您可以做两件事来确保获得相同的结果:
- 先训练您的估算器,然后使用
select_from_model(randomforestclassifier, refit=False)
。
- 使用随机种子声明
randomforestclassifier
,然后使用 select_from_model
。
不用说,这两个选项都要求您传递相同的 X
和 y
数据。
我想进行特征选择,我使用了随机森林分类器,但做法有所不同。
我使用了 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 杂质的截止点。
您可以做两件事来确保获得相同的结果:
- 先训练您的估算器,然后使用
select_from_model(randomforestclassifier, refit=False)
。 - 使用随机种子声明
randomforestclassifier
,然后使用select_from_model
。
不用说,这两个选项都要求您传递相同的 X
和 y
数据。