回归的SKlearn(scikit-learn)多变量特征选择

时间:2016-09-09 23:41:22

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

我想使用一种功能选择方法,其中"组合"特征之间或特征之间的#34;相互作用被认为是简单的线性回归。

SelectKBest仅查看目标的一个特征,一次一个,并根据Pearson的R值对它们进行排名。虽然这很快,但我担心忽略功能之间的一些重要互动。

递归特征消除首先使用我的所有特征,拟合线性回归模型,然后使用最小绝对值系数踢出特征。我不确定这是否会影响功能之间的关系"互动......我不这么认为,因为它只是一次踢出一个最小的系数,直到达到你指定的特征数量。

对于那些经验丰富的特征选择科学家来说,我正在寻找的是找到最佳子集或特征组合的方法。我阅读了所有功能选择文档,无法找到描述我的想法的方法。

任何提示都将非常感谢!!!!!!

2 个答案:

答案 0 :(得分:0)

我认为您必须先生成组合,然后才应用特征选择步骤。您可以使用http://scikit-learn.org/stable/modules/preprocessing.html#generating-polynomial-features进行功能组合。

答案 1 :(得分:0)

  

我想使用一种特征选择方法,其中特征的“组合”或“特征之间”的相互作用被考虑用于简单的线性回归。

对于这种情况,您可以考虑使用Lasso(或实际上elastic net refinement)。 Lasso试图最小化线性最小二乘,但对系数的绝对值惩罚。凸优化理论(主要是二元性)的一些结果表明,这种约束考虑了“特征之间”的相互作用,并消除了相关特征的较低劣。由于Lasso知道存在一些缺点(例如,它可以选择的特征数量受到限制),因此较新的变体是弹性网,它会对系数的绝对值项和平方项进行处罚。

在sklearn中,sklearn.linear_model.ElasticNet实现了这一点。请注意,此算法要求您调整惩罚,这通常是使用交叉验证进行的。幸运的是,sklearn还包含sklearn.linear_model.ElasticNetCV,它可以非常有效和方便地搜索这些惩罚词的值。