2023.10.21学习-特征选择
特征选择(Feature Selection):从给定的特征集合中选择出相关特征子集,是数据预处理(Data Preprocessing)的一部分。
为什么要进行特征选择:
(1)维度灾难:特征维度太大,训练过程漫长或无法进行
(2)特征之间存在相互关联关系,可能会导致解的空间不稳定,致使模型的泛化能力弱
特征选择的目标:降低特征数量,去除无关特征(Irrelevant Feature),保留对学习有用的相关特征(Relevant Feature)。
步骤:
①子集搜索(Subset Search):包括前向搜索、后向搜索、双向搜索,都属于贪心算法,只能找到局部最优,无法穷举搜索而找到全局最优。不过全局最优也不一定泛化能力最好,因为有可能会过拟合。
②子集评价(Subset Evaluation):信息增益越大,包含有助于分类的信息越多
信息增益:
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\limits^V\limits_{v=1}\frac {|D^v|} {|D|}Ent(D^v)
Gain(A)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
(A表示特征选择中的子集,根据该子集的属性取值决定将数据集D划分为V类(比如对于特征集合{a1, a2, … ad},子集选定为{a2},若a2的属性为{青绿、乌黑、浅白},则意味着该子集将D划分为了3类),Dv/D即表示第v类数据在D中的占比)
信息熵:
E
n
t
(
D
)
=
−
∑
i
=
1
∣
γ
∣
p
k
l
o
g
2
p
k
Ent(D)=-\sum\limits^{|\gamma|}\limits_{i=1}p_klog_2p_k
Ent(D)=−i=1∑∣γ∣pklog2pk
(γ表示在数据集D中共有几类样本,比如在鸢尾花数据集中便是3类样本)
将不同的子集搜索机制与子集评价机制结合起来,形成了以下常见的三种特征选择方法:
(1)过滤式选择(Filter):选择的特征和分类结果无关。
典型代表:Relief(Relevant Features),通过“相关统计量”来度量特征的重要性。
相关统计量:
δ
j
=
∑
i
−
d
i
f
f
(
x
i
j
,
x
i
,
n
h
j
)
2
+
d
i
f
f
(
x
i
j
,
x
i
,
n
m
j
)
2
\delta^j = \sum \limits_i-diff(x_i^j,x_{i, nh}^j)^2+diff(x_i^j,x_{i, nm}^j)^2
δj=i∑−diff(xij,xi,nhj)2+diff(xij,xi,nmj)2
解释:上标 j 统一表示在某一个属性 j 上,下标 i 表示第几个样本;diff(xa, xb)为某种距离的量测,对于离散量,若xa = xb,则diff(xa, xb) = 0,否则为1,对于连续量,则diff(xa, xb) = |xa - xb|(已归一化);xnh即near-hit猜中近邻,xnm即near-miss猜错近邻。
相关统计量反映了特征 j 对最终分类效果的影响,从几何的角度来思考,即所选样本 xi 的类别与猜中近邻越靠近(δj 越大),其属性 j 是有益的,那么就要增大属性 j 的统计量分量;基于不同样本得到的估计结果进行平均,就得到了属性 j 的最终统计量分量,分量值越大,说明该属性的分类能力越强(分量值大说明不同类别的数据分的很开,混杂在一起的少)。
Relief处理的是二分类问题的特征选择,数据只有0/1两类;若要处理多分类问题的特征选择,可以使用其扩展变体Relief-F,其相关统计量:
δ
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 \limits_i-diff(x_i^j,x_{i, nh}^j)^2+\sum\limits_{l\neq k}(p_l×diff(x_i^j,x_{i, l,nm}^j)^2)
δj=i∑−diff(xij,xi,nhj)2+l=k∑(pl×diff(xij,xi,l,nmj)2)
解释:对于第k类数据,选定样本xi,先在第k类样本中找到其猜中近邻xnh,再在除了第k类样本之外的其他种类样本找到猜错近邻xl,nm;pl 为第l类样本在数据集D中所占的比例。
缺点:不考虑所选择的特征是否适用于后续的学习器。
(2)包裹式选择(Wrapper):选择和模型评价(学习器的性能)有关,让所选择的数据集的特征尽可能最适合模型的特点。
子集搜索:随机搜索(蒙特卡洛算法或拉斯维加斯算法)。
子集评价:使用交叉验证法估计学习器使用该数据子集 A‘ 时的误差,若比当前特征子集 A*上的误差更小,或误差相当但A’中包含的特征数更少,则将 A‘ 保留下来(A* = A’);接着进行随机搜索和交叉验证,最后到预设的停止条件为止
缺点:计算开销较大,每次特征子集评价都需要训练学习器。
(3)嵌入式选择(Embedding):在模型训练时选择特征,及特征选择过程与学习器训练过程在同一个优化过程中完成,在学习器训练过程中自动地进行了特征选择。
假定选择线性回归模型,损失函数为平方误差,即优化目标:
m
i
n
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
\mathop{min}_w \sum \limits^m\limits_{i= 1}(y_i-w^Tx_i)^2
minwi=1∑m(yi−wTxi)2
为了防止过拟合,常常引入正则化项:
L2范数正则化(岭回归):
m
i
n
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
2
2
\mathop{min}_w \sum \limits^m\limits_{i= 1}(y_i-w^Tx_i)^2+\lambda||w||^2_2
minwi=1∑m(yi−wTxi)2+λ∣∣w∣∣22
L1范数正则化(LASSO回归):
m
i
n
w
∑
i
=
1
m
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
1
\mathop{min}_w \sum \limits^m\limits_{i= 1}(y_i-w^Tx_i)^2+\lambda||w||_1
minwi=1∑m(yi−wTxi)2+λ∣∣w∣∣1
当使用L1范数的时候,会更易于获得稀疏解,即求得的w的非零分量较少。
求得了稀疏解,就意味着原本有d个特征,最终只有对应w的非零分量的特征出现在最终模型,所以,基于L1范数正则化的学习就是一种嵌入式特征选择,将特征选择与学习器训练融合在一起完成。