1、简述特征选择的目的。
特征选择的目的有两个:
第一个是因为属性太多,在现实生活中经常遇到维数灾难问题,所以需要选出重要的特征,让后续学习过程仅需要在一部分特征上构建模型,即可以减少特征数量、降维,使模型泛化能力更强,减少过拟合。
第二个是去除不相关特征可以降低学习任务的难度,增强对特征和特征值之间的理解。
2、试比较特征选择与第十章介绍的降维方法的异同。
特征选择和数据降维二者的目标都是使得特征维数减少,但是方法不一样,二者的主要区别如下:
降维:它的思路是:将原始高维特征空间里的点向一个低维空间投影,新的空间维度低于原特征空间,所以维数减少了。在这个过程中,特征发生了根本性的变化,原始的特征消失了(虽然新的特征也保持了原特征的一些性质)。
举个例子,现在的特征是1000维,我们想要把它降到500维。降维的过程就是找个一个从1000维映射到500维的映射关系。原始数据中的1000个特征,每一个都对应着降维后的500维空间中的一个值。假设原始特征中有个特征的值是9,那么降维后对应的值可能是3。
特征选择:从
n
n
n 个特征中选择
d
(
d
<
n
)
d (d<n)
d(d<n) 个出来,而其它的
n
−
d
n-d
n−d 个特征舍弃。所以,新的特征只是原来特征的一个子集。没有被舍弃的
d
d
d个特征没有发生任何变化。
举个例子,现在的特征是1000维,现在我们要从这1000个特征中选择500个,那个这500个特征的值就跟对应的原始特征中那500个特征值是完全一样的。对于另个500个没有被选择到的特征就直接抛弃了。假设原始特征中有个特征的值是9,那么特征选择选到这个特征后它的值还是9,并没有改变。
3、特征选择根据选择策略可以分为哪几类,分别说明其特点。
根据不同的选择策略,我们可以将特征选择分为三种:
i)过滤式选择
过滤式方法就是先对数据集进行特征选择,然后再训练学习器。特征选择过程与后续学习器无关,这相当于先对初始特征进行“过滤”,再用过滤后的特征训练模型。
过滤式选择的方法有:
- 移除低方差的特征;
- 相关系数排序,分别计算每个特征与输出值之间的相关系数,设定一个阈值,选择相关系数大于阈值的部分特征;
- 利用假设检验得到特征与输出值之间的相关性,方法有比如卡方检验、t检验、F检验等。
- 互信息,利用互信息从信息熵的角度分析相关性。
ii)包裹式选择
包裹式从初始特征集合中不断的选择特征子集,训练学习器,根据学习器的性能来对子集进行评价,直到选择出最佳的子集。
包裹式特征选择直接针对给定学习器进行优化。
优点:从最终学习器的性能来看,包裹式比过滤式更好;
缺点:由于特征选择过程中需要多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择要大得多。
iii)嵌入式选择
先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于过滤式选择的方法,但是是通过训练来确定特征的优劣。使用带惩罚项的基模型进行特征选择:比如
L
R
LR
LR加入正则。通过
L
1
L1
L1正则项来选择特征:
L
1
L1
L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,
L
1
L1
L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过
L
2
L2
L2正则方法交叉检验
优点:效果最好速度最快,模式单调,快速并且效果明显。缺点:但是如何参数设置, 需要深厚的背景知识。
4、试写出Relief-F的算法描述
输入:数据集
D
D
D
过程:
计算每个类别的比例;
所有特征对应的统计量
δ
j
=
0
\delta _{j} =0
δj=0;
for i=1:m
得到
x
i
x _{i}
xi最近的同类样本
x
i
,
n
h
x _{i,nh}
xi,nh,以及其余类别中的每一个类别的最近样本
i
i
,
ι
,
n
m
i_{i,\iota ,nm}
ii,ι,nm
for j=1:d
δ
j
=
∑
i
−
d
i
f
f
(
x
i
j
,
x
i
,
n
h
j
)
2
+
∑
l
≠
k
(
p
l
×
d
i
f
f
(
x
i
j
,
x
i
,
l
,
n
m
j
)
2
)
\delta ^{j}=\sum_{i}-diff\left ( x_{i}^{j},x_{i,nh}^{j} \right )^{2}+\sum_{l\neq k}^{ }\left (p_{l}\times diff\left ( x_{i}^{j},x_{i,l,nm}^{j} \right )^{2} \right )
δj=∑i−diff(xij,xi,nhj)2+∑l̸=k(pl×diff(xij,xi,l,nmj)2)
输出:
所有特征对应的统计量
δ
\delta
δ
5、试描述过滤式和包裹式选择方法的基本框架
i)过滤式
过滤式方法是一种将特征选择与学习器训练相分离的特征选择技术,即首先将相关特征挑选出来,再使用选择出的数据子集来训练学习器。Relief是其中著名的代表性算法,它使用一个“相关统计量”来度量特征的重要性,该统计量是一个向量,其中每个分量代表着相应特征的重要性,因此我们最终可以根据这个统计量各个分量的大小来选择出合适的特征子集。
易知Relief算法的核心在于如何计算出该相关统计量。对于数据集中的每个样例
x
i
x_{i}
xi,Relief首先找出与
x
i
x_{i}
xi同类别的最近邻与不同类别的最近邻,分别称为猜中近邻(near-hit)
x
i
,
n
h
x_{i,nh}
xi,nh与猜错近邻(near-miss)
x
i
,
n
m
x_{i,nm}
xi,nm,接着便可以分别计算出相关统计量中的每个分量。对于
j
j
j分量:
直观上理解:对于猜中近邻,两者
j
j
j属性的距离越小越好,对于猜错近邻,
j
j
j属性距离越大越好。更一般地,若
x
i
x_{i}
xi为离散属性,diff取海明距离,即相同取0,不同取1;若
x
i
x_{i}
xi为连续属性,则diff为曼哈顿距离,即取差的绝对值。分别计算每个分量,最终取平均便得到了整个相关统计量。
标准的Relief算法只用于二分类问题,后续产生的拓展变体Relief-F则解决了多分类问题。对于
j
j
j分量,新的计算公式如下:
其中,
p
ι
p\iota
pι为第
L
L
L类样本在数据集
D
D
D中所占比例。
ii)包裹式
拉斯维加斯算法:假如有一把锁,给我100把钥匙,只有1把是对的。于是我每次随机拿1把钥匙去试,打不开就再换1把。我试的次数越多,打开(正确解)的机会就越大,但在打开之前,那些错的钥匙都是没有用的。这个试钥匙的算法,就是拉斯维加斯的——尽量找最好的,但不保证能找到。
LVW算法的具体流程如下所示,其中比较特别的是停止条件参数
T
T
T的设置,即在每一轮寻找最优特征子集的过程中,若随机
T
T
T次仍没找到,算法就会停止,从而保证了算法运行时间的可行性。