一、过滤法(Filter)
- 目的:在维持算法表现的前提下,帮助算法们降低计算成本
- 特点:独立操作,不与后续分类(或者回归)模型相关
- 过程:
-
目标对象:需要遍历特征或升维的算法。最近邻算法KNN,支持向量机SVM,决策树,神经网络,回归算法等遍历特征或升维运算,本身的运算量很大,需要的时间很长,因此特征选择很重要。随机森林不需要遍历特征,每次选的特征就很随机,并非用到所有的特征,所以特征选择作用不大。
思考:过滤法对随机森林无效,却对树模型有效?
解释:传统决策树需遍历所有特征,计算不纯度后分枝,而随机森林却是随机选择特征进行计算和分枝,因此随机森林的运算更快,过滤法对随机森林无用,对决策树有用。
1、方差过滤
- sklearn模块:sklearn.feature_selection中VarianceThreshold
- 过程:对每一个特征得所有数据进行方差计算,方差越大,证明该特征的区别度较大,适合选作分类,如果方差较小,则证明特征内部的差异较小,不适合进行分类。当方差为0时,此时的特征值相同。
- 说明:此特征只针对特征,与标签无关;在进行特征选择时,先优先进行方差检验,去除方差为0的特征。
- 公式:
2、卡方过滤
- sklearn模块:sklearn.feature_selection中chi2
- 过程:计算每个非负特征和标签之间的卡方统计量,选择顺序排在前k得特征。卡方值越大,二者之间的相关性越大,相互影响越明显。
- 说明:针对离散型标签(分类)问题;所有特征必须非负,数据先归一化或标准化。
- 公式: