特征工程系列:(六)特征选择之方差过滤
有时候,数据集中的某一个特征,方差非常小,非常接近,这样导致的结果就是,没有区分度,那么这个特征其实就不是一个好的特征,因此方差过滤的思想就是,找到那些有区分度的特征(方差大)
from sklearn.feature_selection import VarianceThreshold
X = VairanceThreshold().fit_transform(X) # VarianceThreshold 默认参数为0
X_var0
如果一个特征服从伯努利分布,也就是说,这个特征只有两个类别。这个时候,也可以进行方差过滤,伯努利分布的方差计算公式为:\(\sigma = p(1-p)\), 其中\(p\)为莫一个类别的占比。
例如,一个特征\(x_1\),其中一个类别数量为80,另外一个类别数量为20,这个时候,这个特征的方差为:
\(0.8(1-0.8)\) , 在sklearn中,也可以直接使用方差过滤函数来对这类特征进行筛选。
X_bvar = VarianceThreshold(.8 * (1 - .8)).fit_transform(X)
X_bvar
方差过滤的目的主要是在维持算法表现的前提下,帮助算法刷选出更有分辨的特征,从而减轻计算成本,但是方差过滤不保证能够实现预期效果,所以在实践中,需要进行各种实验,通过真实实验效果去灵活的应用。