选择最佳功能子集

时间:2016-11-04 15:33:08

标签: python-2.7 scikit-learn feature-selection

我想选择可用的最佳特征子集,将两个类别区分为一个我建立的统计框架,其中的特征不是独立的。

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

  1. 应用此类方法是否有意义(例如递归功能 消除)到DT或Random Forest分类器所在的功能 有规则,然后采取最终的最佳子集并喂它 进入我的框架?**

  2. 此外,由于Scikit-learn提供的大多数算法都是 单变量算法,还有其他基于python的库 提供更多子集特征选择算法?

1 个答案:

答案 0 :(得分:0)

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

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

您可以将其扩展为使用对或特征维度的三元组,但计算成本会快速增长。如果你的特征具有高度相关性,你至少可以从成对案例中获益。

以下是我学习该技巧的源文档:http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (它应该适用于随机森林以外的分类器。)