【问题标题】:How does cross-validated recursive feature elimination drop features in each iteration (sklearn RFECV)?交叉验证的递归特征消除如何在每次迭代中丢弃特征(sklearn RFECV)?
【发布时间】:2021-04-09 17:48:06
【问题描述】:

我正在使用sklearn.feature_selection.RFECV 来减少最终模型中的特征数量。使用非交叉验证 RFE,您可以准确选择要选择的特征数量。但是,使用 RFECV,您只能指定 min_number_features_to_select,这更像是一个下限。

那么 RFECV 是如何在每次迭代中丢弃特征的呢?我了解正常的 RFE,但交叉验证如何发挥作用?

这是我的实例:

clf = GradientBoostingClassifier(loss='deviance', learning_rate=0.03, n_estimators=500,
                                 subsample=1.0, criterion='friedman_mse', min_samples_leaf=100,
                                 max_depth=7, max_features='sqrt', random_state=123)
rfe = RFECV(estimator=clf, step=1, min_features_to_select=35, cv=5, scoring='roc_auc',
            verbose=1, n_jobs=-1)
rfe.fit(X_train, y_train)

我在documentationuser guide 中找不到更具体的内容。

【问题讨论】:

    标签: python scikit-learn rfe


    【解决方案1】:

    您的猜测(现在已编辑)想到了一种交叉验证消除步骤本身的算法,但这不是RFECV 的工作原理。 (事实上​​,这样的算法可能会稳定 RFE 本身,但它不会告知最佳特征数量,这就是 RFECV 的目标。)

    相反,RFECV 在每个训练折叠上运行单独的 RFEs,一直到 min_features_to_select。这些很可能会导致不同的消除顺序和最终特征,但这些都没有考虑在内:只有结果模型的 scores,对于每个特征数量,在测试折叠中是保留。 (请注意,RFECV 有一个 scorer 参数,而 RFE 缺少这些参数。)然后对这些分数进行平均,最好的分数对应于所选的 n_features_。最后,最后一个RFE 在具有目标数量的特征的整个数据集上运行。

    source code

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 2020-07-10
      • 2017-03-30
      • 2018-05-21
      • 2018-11-28
      • 2020-03-24
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多