前言
在机器学习中,对原始数据特征的处理和选择是一个非常重要的环节,Andrew NG
大佬曾经说过这么一句话:数据和特征决定了机器学习的上限,而机器学习算法和模型只是逼近这个上限而已。
特征选择的重要性和分类
首先,我们在现实任务中经常会遇到维数灾难问题,这是由于属性(特征)过多造成的,若能从中选择出重要的特征,使得后续的学习过程仅需要在一部分特征上构建模型,则维数灾难问题会大为减轻。从这个意义上说,特征选择与特征降维有相似的动机;事实上,它们是处理高维数据的两大主流技术。第二个原因是,取出不相关特征往往会降低学习任务的难度,这就像侦探破案一样,若将纷繁复杂的因素抽丝剥茧,只留下关键因素,则真相往往更易看清。
需要注意的是,特征选择过程必须确保不丢失重要特征,否则后续学习过程会因为重要信息的缺失而无法获得好的性能。给定数据集,若学习任务不同,则相关特征很可能不同,因此,特征选择中所谓的“无关特征”是指与当前学习任务无关的特征。有一类特征被称为“冗余特征”(redundant feature),它们所包含的信息能从其它特征中推演出来。例如,考虑立方体对象,若已有特征“底面长”、“底面宽”,则“底面积”是冗余特征,因为它能从“底面长”与“底面宽”得到。冗余特征在很多时候不起作用。取出它们会减轻学习过程中的负担。但有时冗余特征会降低学习任务的难度,例如,若学习目标是估算立方体的体积,则“底面积”这个冗余特征的存在将使得体积的估算更加容易;更确切的说,若某个冗余特征恰好对应了完成学习任务所需的“中间概念”,则该冗余特征是有益的。机器学习中我们往往更加关注的是无关特征。
将特征子集搜索机制与子集评价机制相结合,即可得到特征选择方法。例如将前向搜索与信息熵相结合,这显然与决策树算法非常相似。事实上,决策树可用于特征选择,树节点的划分属性所组成的集合就是特征选择出的特征子集。其它的特征选择方法未必像决策树特征选择这么明显,但它们在本质上都是显式或隐式的结合了某种(或多种)子集搜索机制和子集评价机制。
常见的特征选择方法大致可分为三类:过滤式(filter)、包裹式(wrapper)和嵌入式(embedding)。
一、特征选择之过滤式
过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关,这相当于先用特征选择过程对初始特征进行“过滤”,再用过滤后的特征来训练模型。
常用的过滤式方法有:
- 方差选择法:将低方差特征过滤掉;
- 相关系数法:皮尔逊相关系数、斯皮尔曼秩相关系数,将相关性较强的特征过滤出来做进一步处理(删除,或者合成新的特征)。
二、特征选择之包裹式
与过滤式特征选择不考虑后续学习器不同,包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价准则。换言之,包裹式特征选择的目的就是为给定学习器选择最有利于其性能、“量身定做”的特征子集。
常见的包裹式方法:LVW(Las Vegas Wrapper),它在拉斯维加斯方法(Las Vegas method)框架下使用随机策略来进行子集搜索,并以最终分类器的误差作为特征子集的评价准则。
三、特征选择之嵌入式
在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别;与此不同,嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动的进行了特征选择。
常见的嵌入式方法:
- 决策树:信息熵、信息增益;
- 正则化: L 1 L_1 L1、 L 2 L_2 L2 正则化等;
- 深度学习:卷积等。
给定数据集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
m
,
y
m
)
}
D=\{(x_1, y_1), (x_2, y_2), \dots, (x_m, y_m)\}
D={(x1,y1),(x2,y2),…,(xm,ym)} ,其中
x
∈
R
d
,
y
∈
R
x \in \mathbb{R}^d, y \in \mathbb{R}
x∈Rd,y∈R 。我们考虑最简单的线性回归模型,以平方误差为损失函数,则优化目标为:
min
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
⋯
⋯
①
\min_{w} \sum_{i=1}^m (y_i - w^Tx_i)^2 \quad \quad \text{$\cdots \cdots$①}
wmini=1∑m(yi−wTxi)2⋯⋯①
当样本特征很多,而样本数相对较少时,式①很容易陷入过拟合。为了缓解过拟合问题,可对式①引入正则项。若使用
L
2
L_2
L2 范数正则化,则有:
min
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
2
2
⋯
⋯
②
\min_{w} \sum_{i=1}^m (y_i - w^Tx_i)^2 + \lambda ||w||_2^2 \quad \quad \text{$\cdots \cdots$②}
wmini=1∑m(yi−wTxi)2+λ∣∣w∣∣22⋯⋯②
其中正则化参数
λ
>
0
\lambda \gt 0
λ>0 。式②称为“岭回归”(ridge regression),通过引入
L
2
L_2
L2 范数正则化,确实能显著降低过拟合的风险。
那么,能否将正则化项中的
L
2
L_2
L2 范数替换为
L
1
L_1
L1 范数?答案是肯定的,若令
p
=
1
p=1
p=1 ,即采用
L
1
L_1
L1 范数,则有:
min
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
1
⋯
⋯
③
\min_{w} \sum_{i=1}^m (y_i - w^Tx_i)^2 + \lambda ||w||_1 \quad \quad \text{$\cdots \cdots$③}
wmini=1∑m(yi−wTxi)2+λ∣∣w∣∣1⋯⋯③
其中正则化参数
λ
>
0
\lambda \gt 0
λ>0 ,式③称为LASSO(Least Absolute Shrinkage and Selection Operator,最小绝对收缩选择算子)。
L
1
L_1
L1 范数和
L
2
L_2
L2 范数正则化都有助于降低过拟合风险,但前者还会带来一个额外的好处:它比后者更易获得“稀疏”(sparse)解,即它求得的
w
w
w 会有更少的非零分量。
为了理解这一点,我们来看一个直观的例子。假定
x
x
x 仅有两个属性(特征),于是无论是式②还是式③解出的
w
w
w 都只有两个分量,即
w
1
,
w
2
w_1, w_2
w1,w2 ,我们将其作为两个坐标轴,然后在图中绘制出式②与式③的第一项的“等高线”,即在
(
w
1
,
w
2
)
(w_1, w_2)
(w1,w2) 空间中平方误差项取值相同的点的连线,再分别绘制出
L
1
L_1
L1 范数和
L
2
L_2
L2 范数的等高线,即在
(
w
1
,
w
2
)
(w_1, w_2)
(w1,w2) 空间中
L
1
L_1
L1 范数取值相同的点的连线,以及
L
2
L_2
L2 范数取值相同的点的连线,如下图所示:
式②与式③的解要在平方误差项与正则化项之间折中,即出现在图中平方误差项等高线与正则化项等高线相交处。由上图可以看出,采用
L
1
L_1
L1 范数时平方误差项等高线与正则化项等高线的交点常出现在坐标轴上,即
w
1
w_1
w1 或
w
2
w_2
w2 为
0
0
0 ;而在采用
L
2
L_2
L2 范数时,两者的交点常出现在某个象限中,即
w
1
w_1
w1 或
w
2
w_2
w2 均非
0
0
0 ;换言之,采用
L
1
L_1
L1 范数比
L
2
L_2
L2 范数更易于得到稀疏解。
注意到
w
w
w 取得稀疏解意味着初始的
d
d
d 个特征中仅有对应着
w
w
w 的非零分量的特征才会出现在最终模型中,于是,求解
L
1
L_1
L1 范数正则化的结果是得到了仅采用一部分初始特征的模型;换言之,基于
L
1
L_1
L1 正则化的学习方法就是一种嵌入式特征选择方法,其特征选择过程与学习器训练过程融为一体,同时完成。
四、稀疏(sparsity)的好处
① 大家对稀疏规则化趋之若鹜的一个关键原因在于它能实现特征的自动选择。一般来说,样本的大部分属性(也就是特征)都是和最终的输出值没有关系或者不提供任何信息的,在最小化目标函数的时候考虑样本的这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确目标值的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为 0 0 0。
② 另一个青睐于稀疏规则化的理由是,模型更容易解释(Interpretability)。例如患某种病的概率是
y
y
y ,然后我们收集到的数据
x
x
x 是
1000
1000
1000 维的,也就是我们需要寻找这
1000
1000
1000 种因素到底是怎么影响患上这种病的概率的。假设我们这个问题是一个分类问题:
y
=
w
1
x
1
+
w
2
x
2
+
⋯
+
w
1000
x
1000
+
b
y=w_1x_1 + w_2x_2 + \dots + w_{1000}x_{1000} + b
y=w1x1+w2x2+⋯+w1000x1000+b
当然了,为了让
y
y
y 的取值范围被限定在
[
0
,
1
]
[0,1]
[0,1] ,一般还得加个 Logistic
函数。通过学习,如果最后学习到的最优解参数
w
∗
w^*
w∗ 就只包含很少的非零元素,例如只有
8
8
8 个非零的
w
i
w_i
wi ,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这
8
8
8 个因素有关,那医生就好分析多了。但如果是
1000
1000
1000 个
w
i
w_i
wi 都非
0
0
0 ,医生面对这
1000
1000
1000 种因素则很难找到决定性的影响因素。
③ 当然,稀疏的特征更易于模型去学习,因为此种情况下的样本数据大概率下是线性可分的,模型的学习难度会有所降低。
④ 稀疏的特征和稀疏的解更易于存储,因为数据中的零元素更多,可使用算法减少存储数据时的空间(稀疏矩阵就是这样的一种稀疏数据的存储方法)。
参考文献:
① 机器学习–周志华【P247-253】
② https://www.jianshu.com/p/8025b6c9f6fa