特征选择
对于一个学习任务来说,给定属性集,其中有些属性可能很关键,另一些属性则可能没什么用。
我们将属性称为“特征”(feature)。对当前学习任务有用的属性称为“相关特征”(relevant feature)。没什么用的属性称为“无关特征”(irrelevant feature)。
有一类特征称为"冗余特征" (redundant feature) ,它们所包含的信息能从其他特征中推演出来。例如,考虑立方体对象,若已有特征"底面长"“底面宽”,则"底面积"是冗余特征,因为它能从"底面长"与"底固宽"得到。
从给定的特征集合中选择出相关特征子集的过程,称为“特征选择”(feature selection)。但是特征是否有用是相对的,特征选择中所谓的"无关特征"是指与当前任务无关我的特征。
为什么需要特征选择?
- 维数灾难问题:这是由于属性过多而造成的,与上一节学习的降维又相似的动机。
- 去除不相关特征往往会降低学习任务的难度。
需注意的是:特征选择过程必须确保不丢失重要特征。除了需要排除“无关特征”,还需要排除“冗余特征”。
下面的内容暂且假定数据中不涉及冗余特征,井且假定初始的特征集合包含了所有的重要信息。
子集搜索与评价
欲从初始的特征集合中选取一个包含了所有重要信息的特征子集,可行的做法是产生一个"候选子集",评价出它的好坏,基于评价结果产生下一个候选子集,再对其进行评价,……这个过程持续进行下去,直至无法找到更好的候选子集为止。
显然,这里涉及两个关键环节:
如何根据评价结果获取下一个候选特征子集?如何评价候选特征子集的好坏?
子集搜索(subset search):
给定特征集合
{
a
1
,
a
2
,
…
,
a
n
}
\{a_1,a_2,…,a_n\}
{a1,a2,…,an},我们可将每个特征看作一个候选子集,对这d个候选单特征子集进行评价,假定
{
a
2
}
\{a_2\}
{a2}最优,则将
{
a
2
}
\{a_2\}
{a2}作为第一轮的候选集;然后,在上一轮的选定集中加入一个特征,构成包含两个特征的候选子集,假定在
d
−
1
d-1
d−1个候选两特征子集中
{
a
2
,
a
4
}
\{a_2,a_4\}
{a2,a4}最优,且优于
{
a
2
}
\{a_2\}
{a2},则将
{
a
2
,
a
4
}
\{a_2,a_4\}
{a2,a4}作为本轮的候选集;以此类推,假定在第
k
+
1
k+1
k+1轮时,最优的候选
(
k
+
1
)
(k+1)
(k+1)特征不如上一轮的选定集,则停止生成候选子集,并将上一轮选定的
k
k
k特征集合作为特征选择结果。
然而,很容易发现,上述的策略是贪心的,因为它们仅考虑了使本轮选定集最优,例如在第二轮假定选择 a 5 a_5 a5优于 a 6 a_6 a6,于是选定集为 { a 2 , a 4 , a 5 } \{a_2,a_4,a_5\} {a2,a4,a5},然而在第四轮却可能是 { a 2 , a 4 , a 6 , a 8 } \{a_2,a_4,a_6,a_8\} {a2,a4,a6,a8}比所有的 { a 2 , a 4 , a 5 , a i } \{a_2,a_4,a_5,a_i\} {a2,a4,a5,ai}都更优。遗憾的是,若不进行穷举搜索,则这样的问题无法避免。
子集评价(subset evaluation):
信息熵。
信息熵计算方法:https://blog.csdn.net/No_Game_No_Life_/article/details/89670583#_36
将特征子集搜索机制与子集评价机制相结合,即可得到特征选择方法,这显然与决策树算法非常相似。事实上,决策树可用于特征选择,树结点的划分属性所组成的集合就是选择出的特征子集。
其他的特征选择方法未必像决策树特征选择这么明显,但它们在本质上都是显式
或隐式地结合了某种(或多种)子集搜索机制和子集评价机制。我们在这里点到即止,有机会再深入了解。