特征选择是一个重要的数据预处理过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后在训练学习器,如下图所示:
进行特征选择有两个很重要的原因:
避免维数灾难:能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的
降低学习任务的难度:选取出真正相关的特征简化模型,协助理解数据产生的过程
如流程图所示,特征选择包括两个环节:
子集搜索 (subset search)
子集评价 (subset evaluation)
《机器学习》将特征选择分为了三种方法:分别是过滤式(filter) 、包裹式(wrapper)和嵌入式(embedded)。下面依据sklearn中的特征选择文档来叙述特征选择的几个方法。
过滤式(filter)
这类方法先对数据机进行特征选择,然后再训练学习器,特征选择的过程与后续学习器无关。
移除低方差的特征
VarianceThreshold 是特征选择的一个简单基本方法,它会移除所有那些方差不满足阈值的特征。默认情况下,它将会移除所有的零方差特征,即那些在所有的样本上的取值均不变的特征。
例如,假设我们有一个特征是布尔值的数据集,我们想要移除那些在整个数据集中特征值为0或者为1的比例超过80%的特征。布尔特征是伯努利( Bernoulli )随机变量,变量的方差为\(Var[X]=p(1-p)\)
因此,我们可以使用阈值.8*(1-.8