选择最好的特征子集

Choosing the best subset of features

我想选择可用的最佳特征子集来区分两个 类 并将其输入到我构建的统计框架中,其中特征不是独立的。

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

  1. 应用这些方法是否有意义(例如递归特征 elimination ) 到 DT 或随机森林分类器,其中特征 那里有规则,然后取出结果最好的子集并喂它 进入我的框架 ?**

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

我认为 "most of the algorithms provided by Scikit-learn are univariate algorithms" 的说法是错误的。 Scikit-learn 可以很好地处理多维数据。他们提供的 RandomForestClassifier 会给你一个特征重要性的估计。

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

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

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