如何决定使用什么阈值来删除低方差特征?

数据挖掘 方差
2021-09-21 06:08:50

如何决定使用什么阈值来删除低方差特征?

特别是,我有 100000 个特征,差异看起来像:

在此处输入图像描述

我可以例如取平均值并用它来将其分成〜一半吗?

还是其他一些分组方法?

1个回答

您可以通过以下几种方式做到这一点,我可以按工作量的升序列出:

  1. 通过目测选择一个对您和您的数据集来说似乎没问题的值,然后简单地将变量从数据集中剪切到阈值以下

  2. 创建一个给定阈值的函数,告诉您如果使用该阈值,将删除多少变量。然后创建一个简单的图,看看是否有某个级别看起来很吸引人(这取决于数据准备好后的目标模型)。

  3. 使用一些更智能的函数,对你来说更多一些,例如R 中 Caret 包中的 NearZeroVar 函数

然而,对于这些方法总体上是否是最优的,存在一些争论。在 Cross-Validated上查看有关此线程的一些讨论如果来自编写上述 Caret 包的人的书 - Max Kuhn,则该线程中的 OP 引用。

反对这种方法的论据说,您可能正在移动变量,尽管它们的方差很小,但实际上可能在解释您的目标(因)变量方面非常强大。

我可以建议的最后一种方法进入协方差领域,即查看变量对之间共线性我过去做过这件事,对我来说效果很好。基本算法看起来像这样:

  1. 计算所有变量的协方差矩阵
  2. 找到具有最高协方差的对
    • 如果您更喜欢该度量,则相关性
    • 计划是删除这两个变量之一
  3. 使用步骤 1 中的协方差矩阵,计算步骤 2 中这两个变量中的哪一个与其余变量的协方差和最高
  4. 删除具有最高协方差和的变量
  5. 重复步骤 1-4,直到达到所需的变量数量,或者达到协方差或单个变量方差的阈值。

编辑:

是 Scikit-Learn 类,它可以为你做基本的方差阈值 - 还有一个简短的教程他们还提出了一些进行递归特征选择的方法,本质上类似于我上面概述的最终方法。