首先做什么:特征选择或模型参数设置?

时间:2012-09-17 15:24:37

标签: python machine-learning scikit-learn feature-selection

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

如果我使用univariate feature selection,很明显我应该首先进行特征选择,然后使用所选择的特征,然后我将估计器的参数调整起来。

但是如果我想使用recursive feature elimination怎么办?我是否应首先使用所有原始功能使用grid search设置参数,然后执行功能选择?或者我应该首先选择功能(使用估算器的默认参数),然后使用所选功能设置参数?

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

修改

我遇到的问题几乎与here相同。到那时,还没有解决方案。有谁知道它现在是否存在?

1 个答案:

答案 0 :(得分:16)

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

对于大量样本的高度非线性问题,您应该尝试RandomForestClassifierExtraTreesClassifier或GBRT模型和网格搜索参数选择(可能使用OOB分数估算)并使用{{1} }切换以按重要性查找要素排名,并将其用于要素选择。

对于极少数样品的高度非线性问题,我认为没有解决方案。你必须做神经科学:)