如何决定使用什么阈值来删除低方差特征?
数据挖掘
方差
2021-09-21 06:08:50
1个回答
您可以通过以下几种方式做到这一点,我可以按工作量的升序列出:
通过目测选择一个对您和您的数据集来说似乎没问题的值,然后简单地将变量从数据集中剪切到阈值以下
创建一个给定阈值的函数,告诉您如果使用该阈值,将删除多少变量。然后创建一个简单的图,看看是否有某个级别看起来很吸引人(这取决于数据准备好后的目标模型)。
使用一些更智能的函数,对你来说更多一些,例如R 中 Caret 包中的 NearZeroVar 函数
然而,对于这些方法总体上是否是最优的,存在一些争论。在 Cross-Validated上查看有关此线程的一些讨论。如果来自编写上述 Caret 包的人的书 - Max Kuhn,则该线程中的 OP 引用。
反对这种方法的论据说,您可能正在移动变量,尽管它们的方差很小,但实际上可能在解释您的目标(因)变量方面非常强大。
我可以建议的最后一种方法进入协方差领域,即查看变量对之间的共线性。我过去做过这件事,对我来说效果很好。基本算法看起来像这样:
- 计算所有变量的协方差矩阵
- 找到具有最高协方差的对
- 如果您更喜欢该度量,则相关性
- 计划是删除这两个变量之一
- 使用步骤 1 中的协方差矩阵,计算步骤 2 中这两个变量中的哪一个与其余变量的协方差和最高
- 删除具有最高协方差和的变量
- 重复步骤 1-4,直到达到所需的变量数量,或者达到协方差或单个变量方差的阈值。
编辑:
这是 Scikit-Learn 类,它可以为你做基本的方差阈值 - 还有一个简短的教程。他们还提出了一些进行递归特征选择的方法,本质上类似于我上面概述的最终方法。
