Machine learning {sk learn}Select-K-Best剪枝会降低性能吗?

Machine learning {sk learn}Select-K-Best剪枝会降低性能吗?,machine-learning,scikit-learn,logistic-regression,feature-selection,supervised-learning,Machine Learning,Scikit Learn,Logistic Regression,Feature Selection,Supervised Learning,我的基本模型是一个具有65个特征的logistic回归分类器 我现在从这65个特征中推断出所有可能的多项式特征,然后对前100个特征进行SelectKBest修剪(使用chi2标准)。 当我将其与我的基本模型进行比较时,我发现精确度和召回率都有相当大的降低 我的问题是,为什么selectKBest会在任何情况下降低性能?如果外推多项式特征没有用处,那么它应该选择原始的65个特征,从而为我提供与基础模型相同或更好的性能 我无法理解selectKBest功能修剪如何影响我的性能?chi2 crite

我的基本模型是一个具有65个特征的logistic回归分类器

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

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


我无法理解selectKBest功能修剪如何影响我的性能?

chi2 critera不是魔法;多项式特征对于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对y有线性依赖性。在这种情况下,保持z更好,因为z提供了额外的信息,与y^2不同。这是chi2测试如何消除有用功能并保留冗余功能的示例。

在这种情况下,它不应该恢复到原始功能,而不是选择影响性能的功能吗?如果我遗漏了什么,请原谅。chi2不保证任何性能;它甚至不知道性能是什么(即不使用标签)。因此,它完全有可能损害性能。但这是个好问题。我已经扩展了我的asnwer。