13

这更像是一个“理论”问题。我正在使用 scikit-learn 包来执行一些 NLP 任务。Sklearn 提供了许多方法来执行特征选择和模型参数的设置。我想知道我应该先做什么。

如果我使用单变量特征选择,很明显我应该先进行特征选择,然后使用所选特征调整估计器的参数。

但是如果我想使用递归特征消除呢?我应该先使用所有原始特征通过网格搜索设置参数,然后再执行特征选择吗?或者我应该先选择特征(使用估计器的默认参数),然后使用所选特征设置参数?

提前感谢您能给我的任何帮助。

编辑

我遇到了这里所说的几乎相同的问题。到那时,还没有解决办法。有谁知道它现在是否存在?

4

1 回答 1

16

就我个人而言,我认为 RFE 在大多数情况下过于矫枉过正且过于昂贵。如果您想对线性模型进行特征选择,请使用单变量特征选择,例如使用 chi2 测试或具有网格搜索正则化参数的 L1 或 L1 + L2 正则化模型(通常命名为Calpha在 sklearn 模型中)。

对于具有大量样本的高度非线性问题,您应该尝试RandomForestClassifierExtraTreesClassifier或 GBRT 模型和网格搜索参数选择(可能使用 OOB 分数估计)并使用compute_importances开关按重要性查找特征排名并将其用于特征选择。

对于样本很少的高度非线性问题,我认为没有解决方案。你一定是在做神经科学:)

于 2012-09-18T08:22:52.430 回答