一、特征选择原因

  1. 避免维数灾难
  2. 去除不相关特征可以降低学习难度

二、特征选择方法

常见的特征选择方法主要有三种:过滤式(Filter)、包裹式(Wrapper)、嵌入式(Embedding)

1. 过滤式选择

先对特征进行选择,然后再训练学习器,这里介绍一个著名的过滤式选择方法:Relief
训练集{(x1,y1),(x2,y2),...,(xm,ym)}\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\},对每个xix_i,在xix_i的同类样本中找到最近的样本xi,nhx_{i,nh},称为猜中近邻(near-hit),在xix_i的异类样本中找到最近的样本xi,nmx_{i,nm},称为猜错近邻(near-miss)。属性j的相关统计量大小根据如下公式计算:
i=1mdiff(xij,xi,nhj)2+diff(xij,xi,nmj)2\sum_{i=1}^m-diff(x_i^j,x_{i,nh}^j)^2+diff(x_i^j,x_{i,nm}^j)^2
其中xijx_i^j表示xix_i在属性j上的值,如果xijx_i^j是离散的,当xij=xi,nhjx_i^j =x_{i,nh}^jdiff(xij,xi,nhj)=0diff(x_i^j,x_{i,nh}^j)=0,当xijxi,nhjx_i^j ≠x_{i,nh}^jdiff(xij,xi,nhj)=1diff(x_i^j,x_{i,nh}^j)=1。如果xijx_i^j是连续的,先将xijx_i^j归一化,diff(xij,xi,nhj)=xijxi,nhjdiff(x_i^j,x_{i,nh}^j)=|x_i^j-x_{i,nh}^j|
计算出所有属性对应的相关统计量大小后,最后只需要指定一个阈值ξ\xi,然后选择比ξ\xi大的属性作为特征来训练学习器即可。

2. 包裹式选择

先训练学习器,然后根据学习器的效果来选择特征,是直接针对特定的学习器的,从最终学习器的性能看,包裹式选择的效果比过滤式选择的效果好,但是开销也更大,这里同样介绍一个著名的包裹式选择方法:LVW
特征选择与稀疏学习

3. 嵌入式选择

将特征选择和训练学习器结合,两者同时进行,这个是本章的重点内容,也是用的最多的方法,嵌入式选择最常用的两种方法分别是L1正则化和L2正则化。
线性回归为例,优化目标为
minwi=1m(yiwTxi)2\underset{w}{min}\sum_{i=1}^m(y_i-w^Tx_i)^2
加入L1范数后(称为LASSO回归),优化目标变为
minwi=1m(yiwTxi)2+λw1\underset{w}{min}\sum_{i=1}^m(y_i-w^Tx_i)^2+\lambda||w||_1
加入L2范数后(称为岭回归),优化目标变为
minwi=1m(yiwTxi)2+λw22\underset{w}{min}\sum_{i=1}^m(y_i-w^Tx_i)^2+\lambda||w||_2^2
L1范数和L2范数都能降低过拟合的风险(因为它们都能通过限制w的大小,使得模型更简单,从而提高泛化能力),但是L1范数更容易得到一个稀疏解,即它求得的w有更多的零分量。

相关文章: