一、特征
我们将属性称为 “特征” (feature)。
相关特征 (relevant feature):对当前学习任务有用的属性。
无关特征 (irrelevant feature):与当前学习任务无关、没什么用的属性。
从给定的特征集合中选择出相关特征子集的过程,称为“特征选择”(feature selection)。
特征选择是一个重要的 “数据预处理”(data preprocessing)过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后再训练学习器。特征选择有两大作用:
1、减轻 由于属性过多而造成的维数灾难问题 (处理高维数据的主流技术)。
2、去除不相关特征往往会降低学习任务的难度。
特征选择过程必须确保不丢失重要特征,否则后续学习过程会因为重要信息的缺失而无法获得好的性能。
冗余特征 (redundant feature) 包含的信息能从其他特征中推演出来,在很多时候不起作用,去除它们会减轻学习过程的负担。但有时冗余特征恰好对应了完成学习任务所需的“中间概念”,会降低学习任务的难度。
二、子集搜索与评价
问题:遍历所有可能的特征子集在计算上是不可行的,会遭遇组合爆炸。
基本搜索思路:产生“候选子集”,评价出它的好坏,基于评价结果产生下一个候选子集,再对其进行评价,这个过程持续进行下去,直至无法找到更好的候选子集为止。
涉及两个关键环节:子集搜索和子集评价。
2.1 子集搜索
三种子集搜索策略
1、前向 (forward) 搜索:逐渐增加相关特征的策略。
给定特征集合 {a1,a2,…,ad},我们可将每个特征看作一个候选子集,对这d个候选单特征子集进行评价,假定 {a2} 最优,于是将 {a2} 作为第一轮的选定集;然后,在上一轮的选定集中加入一个特征,构成包含两个特征的候选子集,假定在这d-1个候选两特征子集中 {a2,a4} 最优,且优于 {a2} ,于是将 {a2,a4} 作为本轮的选定集;……假定在第 k+1 轮时,最优的候选 (k+1) 特征子集不如上一轮的选定集,则停止生成候选子集,并将上一轮选定的k特征集合作为特征选择结果。
2、后向 (backward) 搜索:从完整的特征集合开始,每次尝试去掉一个无关特征。
3、双向 (bidirectional) 搜索:将前向与后向搜索结合起来,每一轮逐渐增加选定相关特征(这些特征在后续轮中将确定不会被去除)、同时减少无关特征。
存在的问题
上述策略都是贪心的,因为它们仅考虑了使本轮选定集最优,例如在第三轮假定选择 a5 优于 a6,于是选定集为 {a2,a4,a5},然而在第四轮却可能是 {a2,a4,a6,a8}比所有的 {a2,a4,a5,ai} 都更优。遗憾的是,若不进行穷举搜索,则这样的问题无法避免。
2.2 子集评价(subset evaluation)
对每个候选特征子集,我们可基于训练数据集 D 来计算其信息增益,以此作为评价准则。
给定数据集 D,假定 D 中第 i 类样本所占的比例为pi。为便于讨论,假定样本属性均为离散型,对属性子集A,假定根据其取值将 D 分成了 V 个子集 {D1,D2,…,DV},每个子集中的样本在 A 上取值相同,于是我们可计算属性子集 A 的信