特征选择
子集搜索与评价
对一个学习任务来说,给定属性集,其中有些属性可能很关键、很有用,另一些属性则可能没什么用.我们将属性称为"特征" (feature) ,对当前学习任务有用的属性称为"相关特征" (relevant feature) 、没什么用的属性称为"无关特征" (irrelevant feature)。从给定的特征集合中选择出相关特征于集的过程,称为"特征选择" (feature selection).
特征选择是一个重要的"数据预处理" (data preprocessing) 过程?在现实机器学习任务中获得数据之后通常先进行特征选择,此后再训练学习器.那么为什么要进行特征选择呢?
原因有两个。
- 我们在现实任务中经常会遇到维数灾难问题,这是由于属性过多而造成的。若能从中选择出重要的特征,使得后续学习过程
仅需在一部分特征上构建模型,则维数灾难问题会大为减轻.从这个意义上说,特征选择与降维有相似的动机;事实上,它们是处理高维数据的两大主流技术。 - 去除不相关特征往往会降低学习任务的难度,这就像侦探破案一样,若将纷繁复杂的因素抽丝剥茧,只留下关键因素,则真相往往更易看清。
欲从初始的特征集合中选取一个包含了所有重要信息的特征子集,若没有任何领域知识作为先验假设,那就只好遍历所有可能的子集了;然而这在计算上却是不可行的,因为这样做会遭遇组合爆炸,特征个数稍多就无法进行。可行的做法是产生一个"候选子集",评价出它的好坏,基于评价结果产生下一候选子集,再对其进行评价,……这个过程持续进行下去,直至无法找到更好的候选子集为止。
这里产生了两个关键环节:
- 如何根据评价结果获取下一个候选特征子集?
- 如何评价候选特征子集的好坏?
第一个环节是"子集搜索" (Subset Search) 问题
- “前向” (fòrward) 搜索
将单个特征看做候选子集,选出最优的一个作为第一轮的选定集,然后逐次增加一个特征作为候选子集选出其中最优的,直到第 k+1 轮时,最优的候选 (k+1) 特征子集不如上一轮的选定集,则停止生成候选子集,并将上一轮选定的特征集合作为特征选择结果. - “后向” (backward) 搜索
从完整的特征集合开始,每次尝试去掉一个无关特征,这样逐渐减少特征的策略 - “双向” (bidirectional) 搜索
可将前向与后向搜索结合起来,每一轮逐渐增加选定相关特征(这些特征在后续轮中将确定不会被去除)、同时减少无关特征的策略
【Tips】
上述策略都是贪心的,因为它们仅考虑了使本轮选定集最优,例如在第二轮假定选择 α 5 α_5 α5 优于 α 6 α_6 α6,于是选定集为 α 2 , α 4 , α 5 {α_2,α_4,α_5} α2,α4,α5 ,然而在第四轮却可能是 α 2 , α 4 , α 6 , α 8 {α_2,α_4,α_6,α_8} α2,α4,α6,α8 比所有的 α 2 , α 4 , α 5 , α i {α_2,α_4,α_5,α_i} α2,α4,α5,αi都更优。遗憾的是,若不进行穷举搜索,则这样的问题无法避免.
第二个环节是"集评价" (subset evaluation) 问题
给运数据集D,假定D中第i类样本所占的比例为
P
i
(
i
=
1
,
2
,
.
.
.
,
∣
y
∣
)
P_i(i=1,2,...,|y|)
Pi(i=1,2,...,∣y∣)。 为便于讨论,假定样本属性均为离散型.对属性子集A,假定根据其取值将D分成了V个子集 {
D
l
,
D
2
,
.
.
.
,
D
V
D^l,D^2,...,D^V
Dl,D2,...,DV},每个子集中的样本在A上取值相同,于是我们可计算属性子集A的信息增益
G
a
i
n
(
A
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(A)=Ent(D)-\sum^V_{v=1}\frac{|D^v|}{|D|}Ent(D^v)
Gain(A)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
其中信息熵定义为
E
n
t
(
D
)
=
−
∑
i
=
1
∣
y
∣
p
k
l
o
g
2
p
k
Ent(D)=-\sum^{|y|}_{i=1}p_klog_2p_k
Ent(D)=−i=1∑∣y∣pklog2pk
信息增益 Gain(A) 越大,意味着特征子集A包含的有助于分类的信息越多。于是,对每个候选特征子集,我们可基于训练数据集D来计算其信息增益,以此作为评价准则.
特征子集A实际上确定了对数据集D的一个划分,每个划分区域对应着A上的一个取值,而样本标记信息Y则对应着对D的真实划分,通过估算这两个划分的差异,就能对A进行评价。与Y对应的划分的差异越小,则说明A越好。信息熵仅是判断这个差异的一种途径,其他能判断两个划分差异的机制都能用于特征子集评价。
常见的特征选择方法大致可分为三类:过滤式(Filter)、包裹式(Wrapper)和嵌入式(Embedding)。
过滤式选择
过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关.这相当于先用特征选择过程对初始特征进行"过滤",再用过滤后的特征来训练模型。
如Relief (Relevant Features) [Kira and Rendell, 1992]
包裹式选择
与过滤式特征选择不考虑后续学习器不间?包裹式特征选择直接把最终将要使用的学习器的性能作为特征于集的评价准则.换言之?包裹式特征选择的目的就是为给定学习器选择最有利于其性能、"量身走做"的特征子集。
- 包裹式直接针对给定学习器进行优化,最终学习性能比过滤式要好
- 包裹式在特征选择过程中需多次训练学习器,计算开销比过滤式大得多
如LVW(Las Vegas Wrapper)[Liu and Setiono, 1996]
它在拉斯维加斯方法(Las Vegas method)框架下使用随机策略
来进行子集搜索,并以最终分类器的误差为特征子集评价准则。
拉斯维加斯方法和蒙特卡罗方法是两个以著名赌城名字命名的随机化方法回两者的主要区别是若有时间限制,则拉斯维加斯方法或者给出满足要求的解,或者不给出解,而蒙特卡罗方法一定会给出解,虽然给出的解未必满足要求,若无时间限制1 则两者都能给出满足要求的解
嵌入式选择
嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择。
References:
- 《机器学习》周志华