这更像是一个理论问题。我正在使用scikit-learn软件包来执行一些NLP任务。Sklearn提供了许多方法来执行特征选择和模型参数设置。我想知道我应该先做什么。
如果我使用单变量特征选择,很明显我应该首先进行特征选择,然后使用选定的特征,然后调整估计器的参数。
但是,如果我想使用递归特征消除怎么办?我是否应该首先使用所有原始要素通过网格搜索设置参数,然后再执行要素选择?或者,也许我应该先选择特征(使用估算器的默认参数),然后使用所选特征设置参数?
编辑
我遇到了几乎与这里相同的问题。到那时,还没有解决方案。有谁知道它现在是否存在?
我个人认为RFE在大多数情况下是矫枉过正的,而且太贵了。如果要对线性模型进行特征选择,请使用单变量特征选择,例如使用 chi2 检验或具有网格搜索正则化参数的 L1 或 L1 + L2 正则化模型(在 sklearn 模型中通常称为 C
或 alpha
)。
对于具有大量样本的高度非线性问题,您应该尝试RandomForestClassifier
、ExtraTreesClassifier
或 GBRT 模型和网格搜索参数选择(可能使用 OOB 分数估计值),并使用compute_importances
开关按重要性查找特征排名并将其用于特征选择。
对于样本很少的高度非线性问题,我认为没有解决方案。你一定在做神经科学:)