机器学习笔记10---特征选择

    我们可以用很多属性描述一个西瓜,例如色泽、根蒂、敲声、纹理等,但有经验的人往往只需要看根蒂、听听敲声就知道是否好瓜。换言之,对于一个学习任务来说,给定属性集,其中有些属性可能很关键、很有用,另一些属性则可能没什么用。我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature)。从给定的特征集合中选择出相关特征子集的过程,称为“特征选择”。

    特征选择是一个重要的“数据预处理”(data preprocessing)过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后再训练学习器。

    进行特征选择的两个原因:

    ①在现实任务中经常会遇到维数灾难问题,这是由于属性过多造成的,若能从中选择出重要的特征,使得后续学习过程仅需在一部分特征上构建模型,则维数灾难问题会大为减轻。

    ②去除不相关特征往往会降低学习任务的难度,这就像侦探破案一样,若将纷繁复杂的因素抽丝剥茧,只留下关键因素,则真相往往更易看清。

    主要注意的是,选择特征过程必须确保不丢失重要特征,否则后续学习过程为因为重要信息的缺失而无法获得好的性能。给定数据集,若学习任务不同,则相关特征很可能不同,因此,特征选择中所谓的”无关特征“是指与当前学习任务无关。有一类特征称为”冗余特征“(redundant feature),它们所包含的信息能从其他特征中推演出来。例如,考虑立方体对象,若已有特征”底面长“”底面宽“,则”底面积“是冗余特征。因为它能从”底面长“和”底面宽“得到。冗余特征在很多时候不起作用,去除它们会减轻学习过程中的负担。但有时冗余特征会降低学习任务的难度,例如若学习目标是估算立方体的体积,则”底面积“这个冗余特征的存在将使得体积的估算更容易;更确切地说,若某个冗余特征恰好对应了完成学习任务所需的”中间概念“,则该冗余特征是有益的。

    欲从初始的特征集合中选取一个包含了所有重要信息的特征子集,若没有任何领域知识作为先验假设,那就只好遍历所有可能的子集了;然而这在计算上却是不可行的,因为这样做会遭遇组合爆炸,特征个数稍多就无法进行。可行的做法是产生一个”候选子集“,评价出它的好坏,基于评价结果产生下一个候选子集,在对其进行评价,...这个过程持续进行下去,直至无法找到更好的候选子集为止。显然,这里涉及两个关键环节:如何根据评价结果获取下一个候选特征子集?如何评价候选特征子集的好坏

    ①第一个环节是“子集搜索”(subset search)问题。给定特征集合{a1,a2,...,ad},我们可将每个特征看作一个候选子集,对这d个候选单特征子集进行评价,假定{a2}最优,于是将{a2}作为第一轮的选定集;然后在上一轮的选定集中假如一个特征,构成包含两个特征的候选子集,假定在这d-1个候选两特征子集中{a2,a4}最优,且优于{a2},于是将{a2,a4}作为本轮的候选集;...假定在第k+1轮时,最优的候选(k+1)特征子集不如上一轮的选定集,则停止生成候选子集,并将上一轮选定的k特征集合作为特征选择结果。这样逐渐增加相关特征的策略称为“前向”(forward)搜索。类似的,若我们从完整的特征集合开始,每次尝试去掉一个无关特征,这样逐渐减少特征的策略称为“后向”(backward)搜索。还可将前向与后向搜索结合起来,每一轮逐渐增加选定相关特征(这些特征在后续轮中将确定不会被去除)、同时减少无关特征,这样的策略称为“双向”搜索。

    显然,上述策略都是贪心的,因为它们尽量考虑了使本轮选定集最优,例如在第三轮假定选择a5优于a6,于是选定集为{a2,a4,a5},然而在第四轮却可能是{a2,a4,a6,a8}比所有的{a2,a4,a5,ai}都更优。遗憾的是,若不进行穷举搜索,则这样的问题无法避免。

    ②第二个环节是“子集评价”(subset evaluation)问题。给定数据集D,假定D中第i类样本所占的比例为pi(i = 1,2,...,|γ|)。为了便于讨论,假定样本属性均为离散型。对属性子集A,假定根据其取值将D分成了V个子集{D1,D2,...,DV},每个自己种的样本在A上的取值相同,于是我们可以计算属性子集A的信息增益:

 其中信息熵定义为:

 信息增益Gain(A)越大,意味着特征子集A包含的有助于分类的信息越多。于是,对每个候选特征子集,我们可基于训练数据集D来计算其信息增益,以此作为评价标准。

    更一般的,特征子集A实际上确定了对数据集D的一个划分,每个划分区域对应着A上的一个取值,而样本标记信息Y则对应着对D的真实划分,通过估算这两个划分的差异,就能对A进行评价。与Y对应的划分的差异越小,则说明A越好。信息熵仅是判断这个差异的一种途径,其他能判断两个划分差异的机制都能用于特征子集评价。

    将特征子集搜索机制与子集评价机制相结合,即可得到特征选择方法。

    常见的特征选择方法大致可分为三类:

    ·过滤式(filter)

    ·包裹式(wrapper)

    ·嵌入式(embedding)

1>过滤式选择方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。这相当于先用特征选择过程对初始特征进行“过滤”,再用过滤后的特征来训练模型。

2>与过滤式特征选择不考虑后续学习器不同,包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价准则。换言之,包裹式特征选择的目的就是为给定学习器选择最有利于其性能、“量身定做”的特征子集。

3>在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别;与此不同,嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,连着在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择。

参考周志华《机器学习》

猜你喜欢

转载自blog.csdn.net/m0_64007201/article/details/127606778