【问题标题】:Choosing the best subset of features选择最佳特征子集
【发布时间】:2017-03-18 12:18:27
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢,这真的很有用......这是否意味着我确实可以使用分类器来确定特征选择步骤中的重要特征,然后将这个重要特征提供给另一个框架(与特征选择步骤中使用的分类器不同)?
    • 我不明白为什么不这样做。分类器都是关于梳理如何使用 X 数据来梳理出 y 数据中所需的输出信号。他们都需要在某种程度上找到哪些信息实际上是有用的(相对于噪音)。分类器可能不同意信号中的重要内容,但作为特征选择步骤应该没问题。
    • 非常感谢!这真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 2021-07-26
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2016-03-16
    • 2023-03-30
    • 2012-12-16
    相关资源
    最近更新 更多