【问题标题】:{sk-learn} Can Select-K-Best pruning decrease the performance?{sklearn} Select-K-Best 剪枝会降低性能吗?
【发布时间】:2017-11-27 07:20:12
【问题描述】:

我的基本模型是具有 65 个特征的逻辑回归分类器。

我现在从这 65 个特征中推断出所有可能的多项式特征,然后对前 100 个特征进行 SelectKBest 修剪(使用 chi2 标准)。 当我将其与我的基本模型进行比较时,我发现精度和召回率显着降低。

我的问题是为什么 selectKBest 在任何情况下都会降低性能?如果外推多项式特征没有用,那么它应该选择原始的 65 个特征,从而为我提供与基本模型相同或更好的性能。

我无法理解 selectKBest 特征修剪如何影响我的表现?

【问题讨论】:

    标签: machine-learning scikit-learn logistic-regression feature-selection supervised-learning


    【解决方案1】:

    chi2 标准不是魔法;多项式特征对于 chi2 来说可能特别难以正确,因为 chi2 特征选择通过消除它们之间具有高度 线性 依赖性的特征来工作。

    更新:

    假设我们有特征 x 和 y; x=2y。最多 2 次的多项式展开将为我们提供 x、y、xy、x^2 和 y^2。如果我们替换 x=2y,我们得到 2y、y、2y^2、4y^2 和 y^2。

    在选择 chi2 之后,我们应该留下像 y 和 y^2 这样的东西,因为它们是唯一的线性独立特征。根据数据和分类器,新的多项式特征 y^2 可能会使结果变得更糟或更好,无论如何都没有性能保证。

    如您所见,chi2 不支持选择原始 y 特征,它也保留 y^2,即使在这个简单的示例中也是如此。

    在现实世界中,在特征选择过程中会有权衡。例如,如果存在与 y 相关但不完全相关的特征 z(即,它提供了额外的信息,但不多),那么 chi2 测试可能会消除 z,但不会消除 y^2,因为 y^2 不会对 y 具有线性依赖关系,而 z 具有。在这种情况下,保留 z 会更好,因为 z 提供了额外的信息,这与 y^2 不同。这是 chi2 测试如何消除有用功能并保留冗余功能的示例。

    【讨论】:

    • 这样的话,是不是应该恢复到原来的特性,而不是选择损害性能的特性呢?如果我在这里遗漏了什么,请原谅我。
    • chi2 不保证性能;它甚至不知道性能是什么(即不使用标签)。所以它完全有可能损害性能。但这是个好问题。我已经扩展了我的答案。
    猜你喜欢
    • 2021-12-05
    • 2012-07-06
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多