2016-11-04 54 views
0

我想选择可用的最佳功能子集,以区分两个要加入到我构建的统计框架中的类,其中功能不是独立的。选择功能的最佳子集

看过机器学习中的功能选择方法后,它似乎分为三个不同的类别:过滤器,包装器和嵌入式方法。过滤方法可以是:单变量或多变量。使用Filter(多变量)或包装器方法确实有意义,因为两个 - 据我了解 - 寻找最佳子集,但是,因为我没有使用分类器,所以如何使用它?

  1. 是否有意义应用这样的方法(例如递归功能 消除)到DT或随机森林分类,其中 有规则在那里,然后特征拿得到最好的子集,并喂它 到我的框架?**

  2. 而且,因为大多数提供的算法Scikit学习是 单变量算法,是否有任何其他基于Python的库 提供更多的子集的特征选择算法?

回答

0

我认为“Scikit-learn提供的大多数算法都是单变量算法”的说法是错误的。 Scikit-learn很好地处理多维数据。他们提供的RandomForestClassifier将给你一个特征重要性的估计。

估计特征重要性的另一种方法是选择您喜欢的任何分类器,对它进行训练并估计验证集上的性能。记录准确性,这将成为您的基准。然后进行相同的训练/验证拆分,并沿着一个特征维度随机排列所有值。然后再训练和验证。记录您的基线的准确度差异。对所有特征尺寸重复此操作。结果将是每个特征维度的数字列表,指示其重要性。

您可以将其扩展为使用特征维度的对或三元组,但计算成本将快速增长。如果你的功能是高度相关的,你可能会从这样做中受益,至少在配对情况下。

这里就是我了解到,招的源文件:http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (它应该比随机森林其它分类)

+0

非常感谢,这是真正有用的......那么,这是否意味着我可以确实使用分类器来确定特征选择步骤中的重要特征,然后使用此重要特征将其馈送到另一个框架(与特征选择步骤中使用的分类器不同)? – Ophilia

+0

我不明白为什么不。分类器都是关于如何利用X数据来清除y数据中所需的输出信号。他们都需要找到哪些信息在某种程度上实际上是信息性的(vs噪声)。分类器可能不同意信号中重要的内容,但作为特征选择步骤应该没问题。 – Erotemic

+0

非常感谢!这真的很有帮助 – Ophilia