【机器学习】【特征选择】2.方差过滤
程序员文章站
2022-04-03 22:34:53
...
过滤法
过滤方法通常用作预处理步骤,特征选择完全独立于任何机器学习算法。它是根据各种统计检验中的分数以及相关 性的各项指标来选择特征
方差过滤
优先消除方差为0的特征
数threshold,表示方 差的阈值,表示舍弃所有方差小于threshold的特征,不填默认为0,即删除所有的记录都相同的特征
from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold() #实例化,不填参数默认方差为0
X_var0 = selector.fit_transform(X) #获取删除不合格特征之后的新特征矩阵
#也可以直接写成 X = VairanceThreshold().fit_transform(X)
import numpy as np
X_fsvar = VarianceThreshold(np.median(X.var().values)).fit_transform(X)
#选择出方差大于其中位数的特征
当特征是二分类时,特征的取值就是伯努利随机变量,这些变量的方差可以计算为:
其中X是特征矩阵,p是二分类特征中的一类在这个特征中所占的概率
#若特征是伯努利随机变量,假设P=0.8,即二分类特征中某种分类占到80%以上的时候删除特征
X_bvar = VarianceThreshold(.8 * (1 - .8)).fit_transform(X)
X_bvar.shape
而过滤法的主要目的是:在维持算法表现的前提下,帮 助算法们降低计算成本
过滤法的主要对象是:需要遍历特征或升维的算法们
对受影响的算法来说,我们可以将方差过滤的影响总结如下:
我们怎样知道,方差过滤掉的到底时噪音还是有效特征呢?过滤后模型到底会变好还是会变坏呢?
要选定最优的超参数,我们可以画学 习曲线,找模型效果最好的点。但现实中,我们往往不会这样去做,因为这样会耗费大量的时间,
学 习曲线,找模型效果最好的点。但现实中,我们往往不会这样去做,因为这样会耗费大量的时间,
我们只会使用阈 值为0或者阈值很小的方差过滤,来为我们优先消除一些明显用不到的特征,然后我们会选择更优的特征选择方法 继续削减特征数量。
参考: 菜菜的sklearn