【机器学习】【特征选择】2.方差过滤

过滤法

过滤方法通常用作预处理步骤,特征选择完全独立于任何机器学习算法。它是根据各种统计检验中的分数以及相关 性的各项指标来选择特征

方差过滤

优先消除方差为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)
#选择出方差大于其中位数的特征

当特征是二分类时,特征的取值就是伯努利随机变量,这些变量的方差可以计算为:
v a r [ x ] = p ( 1 − p ) var[x] = p(1-p) var[x]=p(1p)
其中X是特征矩阵,p是二分类特征中的一类在这个特征中所占的概率

#若特征是伯努利随机变量,假设P=0.8,即二分类特征中某种分类占到80%以上的时候删除特征
X_bvar = VarianceThreshold(.8 * (1 - .8)).fit_transform(X)
X_bvar.shape

而过滤法的主要目的是:在维持算法表现的前提下,帮 助算法们降低计算成本

过滤法的主要对象是:需要遍历特征或升维的算法们

对受影响的算法来说,我们可以将方差过滤的影响总结如下:【机器学习】【特征选择】2.方差过滤_第1张图片

我们怎样知道,方差过滤掉的到底时噪音还是有效特征呢?过滤后模型到底会变好还是会变坏呢?

要选定最优的超参数,我们可以画学 习曲线,找模型效果最好的点。但现实中,我们往往不会这样去做,因为这样会耗费大量的时间,

学 习曲线,找模型效果最好的点。但现实中,我们往往不会这样去做,因为这样会耗费大量的时间,

我们只会使用阈 值为0或者阈值很小的方差过滤,来为我们优先消除一些明显用不到的特征,然后我们会选择更优的特征选择方法 继续削减特征数量。

参考: 菜菜的sklearn

你可能感兴趣的:(机器学习,python,机器学习,数据分析)