我正在研究一个无监督的聚类问题。我多次阅读,可以选择具有较高方差的变量而不是具有较低方差的变量。例如,scikit-learn 实现了一个功能,该功能可以去除方差低于阈值的特征。(sklearn.feature_selection.VarianceThreshold)
但是,方差不完全取决于比例/测量单位吗?如果我对我的特征进行标准化,那么所有这些特征的方差都是 1。
我正在研究一个无监督的聚类问题。我多次阅读,可以选择具有较高方差的变量而不是具有较低方差的变量。例如,scikit-learn 实现了一个功能,该功能可以去除方差低于阈值的特征。(sklearn.feature_selection.VarianceThreshold)
但是,方差不完全取决于比例/测量单位吗?如果我对我的特征进行标准化,那么所有这些特征的方差都是 1。
您是正确的,方差取决于比例,通常它不能很好地代表特征在响应方面的信息量。例外是零方差特征。方差为零的特征对所有观察值具有完全相同的值,因此完全没有信息。Sklearns VarianceThreshold 函数默认只删除方差恰好为零的特征。
另一组非信息特征是近零方差特征。然而,通常,将特征分类为接近零方差的特征实际上根本不依赖于计算特征的方差。例如,参见 R 的 caret 包中的 NearZeroVar 函数文档:
“nearZeroVar 诊断具有一个唯一值的预测变量(即零方差预测变量)或具有以下两个特征的预测变量:相对于样本数量和最常见值的频率与第二个最常见值的频率很大。”
您可以看到该算法不依赖于尺度,也不依赖于方差。
如果变量是恒定的(零方差),那么它对预测建模没有帮助。同样,如果一个变量没有太大变化,它也无济于事。
由于删除噪声变量比保留它们更好,因此删除这些变量可以改进建模。
如果sklearn.feature_selection.VarianceThreshold仅仅依赖于特征的方差,那么它对标准化变量是无效的。
在此处查看一些信息https://scikit-learn.org/stable/modules/feature_selection.html#variance-threshold