1、简述特征选择的目的。
特征选择是一个重要的“数据预处理”过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后再训练学习机器。我们进行特征选择主要有以下两个重要目的:
- 减轻维数灾难
我们在现实任务中经常会遇到维数灾难问题,这是由于属性过多而造成的,若能从中选择出重要的特征,使得后续学习过程仅需在一部分特征上构建模型,则维数灾难问题会大为减轻。从这个意义上来说,特征选择与第十章介绍的降维有相似的动机。 - 降低学习任务的难度
去除不相关的特征往往会降低学习任务的难度,这就像侦探破案一样,若将纷繁复杂的因素抽丝剥茧,只留下关键因素,则真相往往更易看清。
2、试比较特征选择与第十章介绍的降维方法的异同。
降维和特征选择都是为了使数据维度降小。但实际上两者的区别是很大,他们的本质是完全不同的。下面着重说说两者的区别:
- 降维
降维本质上是从一个维度空间映射到另一个维度空间,特征的多少并没有减少,当然在映射的过程中特征值也会相应的变化。举个例子,现在的特征是1000维,我们想要把它降到500维。降维的过程就是找个一个从1000维映射到500维的映射关系。原始数据中的1000个特征,每一个都对应着降维后的500维空间中的一个值。假设原始特征中有个特征的值是9,那么降维后对应的值可能是3。 - 特征选择
特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。举个例子,现在的特征是1000维,现在我们要从这1000个特征中选择500个,那个这500个特征的值就跟对应的原始特征中那500个特征值是完全一样的。对于另个500个没有被选择到的特征就直接抛弃了。假设原始特征中有个特征的值是9,那么特征选择选到这个特征后它的值还是9,并没有改变。
3、特征选择根据选择策略可以分为哪几类,分别说明其特点。
-
过滤式选择
过滤式方法就是先对数据集进行特征选择,然后再训练学习器。特征选择过程与后续学习器无关,这相当于先对初始特征进行“过滤”,再用过滤后的特征训练模型。
过滤式选择的方法有:
1.移除低方差的特征;
2.相关系数排序,分别计算每个特征与输出值之间的相关系数,设定一个阈值,选择相关系数大于阈值的部分特征;
3.利用假设检验得到特征与输出值之间的相关性,方法有比如卡方检验、t检验、F检验等。
4.互信息,利用互信息从信息熵的角度分析相关性。 -
包裹式选择
包裹式从初始特征集合中不断的选择特征子集,训练学习器,根据学习器的性能来对子集进行评价,直到选择出最佳的子集。包裹式特征选择直接针对给定学习器进行优化。
优点:从最终学习器的性能来看,包裹式比过滤式更好;
缺点:由于特征选择过程中需要多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择要大。 -
嵌入式选择
嵌入式特征选择将特征选择和学习器训练过程融为一体了,二者在同一个优化过程中完成,在学习器训练的过程中也自动地进行特征选择。
其主要思想是:在确定模型的过程中,挑选出那些对模型的训练有重要意义的属性。
4、试写出Relief-F的算法描述。
Relief算法简单且运行效率高,但是其只能处理两类别数据,改进的Relief-F算法,可以处理多类别问题。Relief-F算法在处理多类问题时,每次从训练样本集中随机取出一个样本R,然后从和R同类的样本集中找出R的k个近邻样本(near Hits),从每个R的不同类的样本集中均找出k个近邻样本(near Misses),然后更新每个特征的权重,如下式所示:
W
(
A
)
=
W
(
A
)
−
∑
j
=
1
k
d
i
f
f
(
A
,
R
,
H
j
)
/
(
m
k
)
+
∑
C
∉
c
l
a
s
s
(
R
)
[
p
(
C
)
1
−
p
(
c
l
a
s
s
(
R
)
)
∑
j
=
1
k
d
i
f
f
(
A
,
R
,
M
j
(
C
)
)
]
/
(
m
k
)
W(A)=W(A)-\sum_{j=1}^{k}diff(A,R,H_j)/(mk)+\sum_{C\notin class(R)}[\frac{p(C)}{1-p(class(R))}\sum_{j=1}^{k}diff(A,R,M_j(C))]/(mk)
W(A)=W(A)−∑j=1kdiff(A,R,Hj)/(mk)+∑C∈/class(R)[1−p(class(R))p(C)∑j=1kdiff(A,R,Mj(C))]/(mk)
上中
d
i
f
f
(
A
,
R
1
,
R
2
)
diff(A,R_1,R_2)
diff(A,R1,R2)代表样本
R
1
R_1
R1和
R
2
R_2
R2在特征
A
A
A上的差,
M
j
(
C
)
M_j(C)
Mj(C)表示类
C
∉
c
l
a
s
s
(
R
)
C\notin class(R)
C∈/class(R)中第
j
j
j个最近邻样本,如下式:
d
i
f
f
(
A
,
R
1
,
R
2
)
=
{
∣
R
1
[
A
]
−
R
2
[
A
]
∣
m
a
x
(
A
)
−
m
i
n
(
A
)
if A is continuous
0
if A is discrete and
R
1
[
A
]
≠
R
2
[
A
]
1
if A is discrete and
R
1
[
A
]
=
R
2
[
A
]
diff(A,R_1,R_2)=\left\{ \begin{array}{rcl} \frac{|R_1[A]-R_2[A]|}{max(A)-min(A)} & &\text{if A is continuous} \\ 0 & & \text{if A is discrete and $R_1[A]\neq R_2[A]$}\\ 1 && \text{if A is discrete and $R_1[A]= R_2[A]$} \end{array} \right.
diff(A,R1,R2)=⎩⎨⎧max(A)−min(A)∣R1[A]−R2[A]∣01if A is continuousif A is discrete and R1[A]=R2[A]if A is discrete and R1[A]=R2[A]
权重意义在于, 减去相同分类的该特征差值, 加上不同分类的该特征的差值。(若该特征与分类有关,则相同分类的该特征的值应该相似, 而不同分类的值应该不相似).
5、试描述过滤式和包裹式选择方法的基本框架。
过滤式选择是先设计一个过滤方法进行特征选择,再去训练学习器。而这个过滤方式是设计一个“相关统计量”,去对特征进行计算,最后设定一个阈值去进行选择。相关统计量计算:对于每个样本
x
i
x_i
xi,他都会做以下事情:找出同类中,最邻近的样本
x
1
x_1
x1 ;在异类中,找出最邻近的
x
2
x_2
x2 。如果
x
i
x_i
xi与
x
1
x_1
x1 更近,说明特征是对同类异类有益的,会增大相对应的统计量;反之,如果
x
i
x_i
xi与
x
2
x_2
x2 更近,说明特征起到副作用,会减少相对应的统计量。如下图所示:
2.包裹式选择法的特征选择过程与学习器相关,它直接使用学习器的性能作为特征选择的评价准则,选择最有利于学习器性能的特征子集。如下图所示: