chapter 11 特征选择与稀疏学习
11.1 子集搜索与评价
给定属性集,其中有些属性可能很关键,而另一些属性可能没什么用,我们将属性称为“特征”,对当前学习任务有用的属性称为“相关特征”,没什么用的称为“无关特征”,从给定的特征集合中选择出相关特征子集的过程,称为“特征选择”。
特征选择是重要的数据预处理过程,在现实机器学习任务中,获得数据后通常先进行特征选择,此后再训练学习器,那么为何要进行特征选择呢?
1、维数灾难,这是由于属性过多造成的,若从中选出重要的特征,使得后续的学习仅需在一部分特征上构建模型,则维数灾难问题会大为减轻,从这个意义上来说,特征选择与第十章介绍的降维有相似的动机。实际上,他们是处理高维数据的两大主流技术。
2、第二个原因是,去除不相关的特征往往会降低学习任务的难度。
需注意的是,特征选择过程必须确保不丢失重要特征,否则后续学习过程会因为重要信息的缺失而无法获得好的性能。给定数据集,若学习任务不同,则相关特征很可能不同,因此,特征选择中的“无关特征”是指与当前学习任务无关。
有一类特征称为“冗余特征”,它们所包含的信息能从其它特征中推演出来,例如已有长和宽,则“底面积”是冗余特征,因为它能从长和宽得到,冗余特征在很多时候不起作用,去除它们会减轻学习过程的负担,但有时冗余特征会降低学习任务的难度,例如底面积这个冗余特征的存在将使得体积的估算更容易,更确切的说,若某个冗余特征恰好对应了完成学习任务所需的“中间概念”,则该冗余特征是有益的。为简化讨论,本章暂且假定数据中不涉及冗余特征,并且假定初始的特征集合包含了所有的重要信息。
欲从初始的特征集合中选取一个包含了所有重要信息的特征子集,若没有任何领域的知识作为先验假设,那就只好遍历所有子集了;然而这在计算上却是不可行的,因为这样做会遭遇组合爆炸,特征个数稍多就无法进行。
可行的做法是产生一个==“候选子集”==,评价出它的好坏,基于评价结果产生下一个候选子集,再对其进行评价,这个过程持续下去,直至无法找到更好的候选子集为止。显然,这里涉及两个关键环节:如何根据评价结果获取下一个候选特征子集?如何评价候选特征子集的好坏?
第一个环节是子集搜索问题,给定特征集合{a1,a2,…,ad}我们可将每个特征看成一个候选子集,对这d个候选单特征子集进行评价,假定{a2}最优,于是将{a2}作为第一轮的选定集,然后再选择一个特征加入选定集,构成包含两个特征的候选子集,假定在这d-1个候选两特征子集中{a2,a4}最优,且优于{a2},于是将{a2,a4}作为本轮的选定集;假定k+1个的特征子集不如上一轮的选定集,则停止生成候选子集,并将上一轮选定的k特征集合作为特征选择结果。这样逐渐增加相关特征的策略称为**“前向搜索”,类似的,若我们从完整的特征集合开始,每次尝试去掉一个无关特征,这样逐渐减少特征的策略称为“后向”搜索。
显然,上述策略都是“贪心的”,因为它们仅考虑了使本轮的选定集最优,例如选择了{a2,a4,a5},然而在第四轮却可能是{a2,a4,a6,a8}比所有的{a2,a4,a5,ai}都更优,遗憾的是,若不进行穷举搜索,则这样的问题无法避免。
第二个环节是子集评价问题**,给定数据集D,假定D中第i类样本所占