特征选择
基础知识
对一个学习任务来说,给定属性集,其中有些属性可能很关键、很有用,另一些属性则可能没什么用.我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature).从给定的特征集合中选择出相关特征子集的过程,称为“特征选择”(feature selection).
1.解决维数灾难问题,特征选择与降维有相似的动机
2.去除不相关特征降低学习任务的难度
需注意的是,特征选择过程必须确保不丢失重要特征,否则后续学习过程会因为重要信息的缺失而无法获得好的性能.给定数据集,若学习任务不同,则相关特征很可能不同,因此,特征选择中所谓的“无关特征”是指与当前学习任务无关.
“几余特征”(redundant feature),指所包含的信息能从其他特征中推演出来.例如,考虑立方体对象,若已有特征“底面长”“底面宽”,则“底面积”是几余特征,去除它们会减轻学习过程的负担.但有时冗余特征会降低学习任务的难度,例如若学习目标是估算立方体的体积,则“底面积”这个几余特征的存在将使得体积的估算更容易。
特征选择涉及两个关节环节子集搜索和子集评价
穷举法在特征很多的情况下难以实现,最基础的搜索方法如前进、后退、逐步回归法都是贪心策略,因为它们仅考虑了使本轮选定集最优。
将特征子集搜索机制与子集评价机制相结合,即可得到特征选择方法,常见的特征选择方法大致可分为三类:过滤式(filter)、包裹式(wrapper)和嵌入式(embedding).
过滤式选择
过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关.这相当于先用特征选择过程对初始特征进行“过滤”,再用过滤后的特征来训练模型.
Relief(Relevant Features)(Kira and Rendell,1992是一种著名的过滤式特征选择方法,该方法设计了一个“相关统计量”来度量特征的重要性.该统计量是一个向量,其每个分量分别对应于一个初始特征,而特征子集的重要性则是由子集中每个特征所对应的相关统计量分量之和来决定.于是,最终只需指定一个阈值T,然后选择比T大的相关统计量分量所对应的特征即可;也可指定欲选取的特征个数k,然后选择相关统计量分量最大的k个特征,
包裹式选择
包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价准则.换言之,包裹式特征选择的目的就是为给定学习器选择最有利于其性能、“量身定做”的特征子集
一般而言,由于包裹式特征选择方法直接针对给定学习器进行优化,因此从最终学习器性能来看,包裹式特征选择比过滤式特征选择更好,但另一方面,由于在特征选择过程中需多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择大得多
LVW(Las Vegas Wrapper)Liu and Setiono,1996]是一个典型的包裹式特征选择方法.它在拉斯维加斯方法(Las Vegas method)框架下使用随机策略来进行子集搜索,并以最终分类器的误差为特征子集评价准则.
由于 LVW 算法中特征子集搜索采用了随机策略,而每次特征子集评价都需训练学习器,计算开销很大,因此算法设置了停止条件控制参数T.然而,整个LVW 算法是基于拉斯维加斯方法框架,若初始特征数很多(即4|很大)、T 设置较大,则算法可能运行很长时间都达不到停止条件。
嵌入式选择
在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别;与此不同,嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择.
L1范数和L2范数正则化都有助于降低过拟合风险,但前者还会带来一个额外的好处:它比后者更易于获得“稀疏”(sparse)解,即它求得的 会有更少的非零分量。换言之,基于L1正则化的学习方法就是一种嵌入式特征选择方法,其特征选择过程与学习器训练过程融为一体,同时完成
关于过拟合的知识可参考文章:机器学习系列(1)-过拟合问题与正则化
稀疏表示
基础知识
现在我们来考虑另一种稀疏性:D所对应的矩阵中存在很多零元素,但这些零元素并不是以整列、整行形式存在的.在不少现实应用中我们会遇到这样的情形,例如在文档分类任务中,通常将每个文档看作一个样本,每个字(词)作为一个特征,字(词)在文档中出现的频率或次数作为特征的取值;换言之,D所对应的矩阵的每行是一个文档,每列是一个字(词),行、列交汇处就是某字(词)在某文档中出现的频率或次数。给定一个文档.相当多的字是不出现在这个文档中的,于是矩阵的每一行都有大量的零元素:对不同的文档,零元素出现的列往往很不相同.
我们需学习出这样一个“字典”.为普通稠密表达的样本找到合适的字典,将样本转化为合适的稀疏表示形式,从而使学习任务(线性支持向量机)得以简化,模型复杂度得以降低,通常称为“字典学习”(dictionarylearning),亦称“稀疏编码”(sparse coding).