特征选择的意义
在对数据进行异常值、缺失值、数据转换等处理后,我们需要从当前数据集中选出有意义的特征,然后输入到算法模型中进行训练。
对数据集进行特征选择主要基于以下几方面的考虑:
1.冗余的特征会影响阻碍模型找寻数据潜在的规律,若冗余的特征过多,还会造成维度容灾,占用大量的时间空间,使算法运行效率大打折扣。
2.去除不相关的特征会降低学习任务的难度,保留关键的特征更能直观的看出数据潜在的规律。
那么,该如何进行特征选择呢?通常,要从两方面考虑来选择特征:
1.特征是否具有发散性:
如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
2.特征与目标的相关性:
如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
根据特征选择的标准,又能分为filter、wrapper、embedded三种方法。
Filter方法
过滤法的主要思想是查看特征的发散性和特征与目标的相关性,通过设定阈值的方法,过滤发散性低、相关性不强的特征。
过滤法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关,即先选好特征,再用过滤后的特征来训练模型。
具体来说,有:
1.方差法
使用方差法,要先计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。若特征的方差小于阈值,则代表该特征的发散性太弱。
2.Pearson系数
Pearson相关系数是用协方差除以两个变量的标准差得到的。皮尔逊系数只能衡量线性相关性,先要计算各个特征对目标值的相关系数以及相关系数的P值,P值区间在[-1,1],p值越大,则与目标值越正/负相关,当p值为0时,则代表与目标值不相关。计算公式如下:
3.卡方检验
卡方检验只能用于二分类,经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,从而构建统计量。计算公式如下:
由于此篇博文是从整体来谈特征选择,如对卡方检验不甚理解,请参考【笔记】卡方检验概述
4.互信息法
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
互信息系数能够很好地度量各种相关性,互信息法的计算公式如下:
wrapper法
过滤法在选择特征时不考虑特征对学习器的效果,包裹式选择就很灵性了。包裹式通常根据预测效果评分来为学习器“量身定制”特征子集,相较于过滤法,能使学习器的性能更佳,缺点即是计算开销往往也更大。
比如LVW(Las Vegas Wrapper)特征选择方法,其思想是使用随机策略来进行子集搜索,并以最终分类器的误差为特征子集的评价标准,算法描述如下:
通过算法流程图可知,从特征集中随机抽取特征子集,如果在特征子集下分类器的误差降低或误差无变化,则更新特征集为特征子集。
但也可以看出,由于每次循环都要计算分类器误差,计算开销很大,若特征众多,设置的循环次数较大,可能在很长的时间都给不出解。
Embedded法
嵌入式特征选择方法也很灵性…嵌入式的特征选择方法将特征选择和学习器的训练过程融为一体,即学习器自动的进行了特征选择。
比如决策树的信息增益、信息增益比、基尼指数,求解最优解时的L1、L2正则化等思想,都能选取对学习器有价值的特征,过滤价值不大的特征。
参考
《机器学习》 —周志华