这是一种比较朴素的方法,它尝试去掉那些方差比较低的哪些特征。特别的,去掉方差为0的特征,比如在所有的样本中,某一维上值都一样。
例如,我们有一个二值的数据集(),我们想去掉0或者1超过80%
的特征。
二项分布的方差为:。
给定数据集X=[0,0,1],[0,1,0],[1,0,0],[0,1,1],[0,1,0],[0,1,1]
,其第一维包含5个'0',1个'1','0'的期望为,所以去掉第一维。
Note:我感觉这里面还得考虑样本的标签,以上数据中正负样本的比例应该是接近1:1的,否则,如果样本的比例本来就是5:1,刚好对应第一维的5:1,那么反而恰恰是第一维的判别信息更重要。
逐个地用每一维特征去测试性能,然后分别得到一个正确率,然后筛选出前维特征。
给定一个外部的分类器(如线性分类器),递归地淘汰特征,以得到越来越小的特征集。
在SVM中,参数控制了稀疏性:越大,保留的支持向量越多,选择的特征越多。
对于Lasso,越大,选择的特征越少。
基于L1的稀疏模型的缺点是,当遇到一组高度相关的特征时,它只选取其中的一个特征。解决这一问题的方法是,分别对数据进行随机扰动或下采样,训练多个稀疏模型,然后投票。
基于随机森林的特征选择。