【机器学习】特征选择与稀疏学习基础概念

【机器学习】特征选择与稀疏学习

子集搜索与评价

特征选择:从给定的特征集合中选择出相关特征(对学习任务有用的属性)子集的过程

进行特征选择的原因:

  1. 后续学习过程仅需要在一部分特征上构建模型,减轻“维数灾难”问题
  2. 降低学习任务的难度

需要注意的是,特征选择过程必须确保不丢失重要特征,否则后续学习会因重要信息缺失而无法获得好的性能

一个可行的做法:产生一个候选子集,然后评价其好坏,给予评价结果产生下一个候选子集,重复这个过程直到无法找到更好的候选子集。

上述做法存在两个关键问题:1.如何根据评价结果选择下一个候选特征子集?2.如何评价候选子集

针对第一个问题,书中介绍了三种贪心策略:

  1. 前向搜索:初始将每个特征当做一个候选特征子集,然后从当前所有的候选子集中选择出最佳的特征子集;接着在上一轮选出的特征子集中添加一个新的特征,同样地选出最佳特征子集;最后直至选不出比上一轮更好的特征子集。
  2. 后向搜索:初始将所有特征作为一个候选特征子集;接着尝试去掉上一轮特征子集中的一个特征并选出当前最优的特征子集;最后直到选不出比上一轮更好的特征子集。
  3. 双向搜索:将前向搜索与后向搜索结合起来,即在每一轮中既有添加操作也有剔除操作。

针对第二个问题,书中介绍了根据信息增益评价候选特征子集的方法:

假设样本属性均为离散型,对于属性子集 A A A,根据其取值将 D D D划分为 V V V个子集,于是可以计算属性子集 A A A的信息增益:
G a i n ( A ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) E n t ( D ) = − ∑ i = 1 ∣ Y ∣ p k l o g 2 p k Gain(A)=Ent(D)-\sum^{V}_{v=1}\frac{|D^v|}{|D|}Ent(D^v)\\ Ent(D)=-\sum^{|\boldsymbol Y|}_{i=1}p_klog_2p_k Gain(A)=Ent(D)v=1VDDvEnt(Dv)Ent(D)=i=1Ypklog2pk

第二个式子是信息熵定义,从式子中可以看出, p k → 1 或 p k → 0 p_k\rightarrow1或p_k\rightarrow0 pk1pk0时信息熵越小,这时的数据集中的样本越纯

第一个式子是信息增益定义,通过划分前的信息熵和划分之后各子集信息熵加权和之差来评价划分,差值越大(更偏向与划分前熵大,划分后熵小),表示划分越有效

将上述的子集搜索和子集评价相结合,就得到了特征选择方法,另外不难看出,信息增益和前向搜索相结合的方法与决策树算法非常类似。

常见的特征选择方法:过滤式、包裹式、嵌入式

过滤式选择

过滤式方法先用特征选择过程对初始特征进行过滤,然后用过滤后的特征训练模型

代表方法:Relief

该方法使用一个“相关统计量”来度量特征的重要性,该统计量是一个向量,其中每个分量代表着相应特征的重要性,因此我们最终可以设定阈值 τ \tau τ,选择大于阈值的分量对应的特征;或者指定特征选取个数 k k k,然后选择分量最大的 k k k个特征

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,然后计算出相关统计量中的每个分量:

在这里插入图片描述
其中 x i j x_i^j xij表示样本 x i x_i xi在属性 j j j上的取值,若 j j j的类型为离散值:
d i f f ( x a j , x b j ) = { 0 x a j = x b j 1 x a j ≠ x b j diff(x_a^j,x_b^j)=\left\{ \begin{aligned} 0 && x_a^j=x_b^j\\ 1 && x_a^j\neq x_b^j\\ \end{aligned} \right. diff(xaj,xbj)={ 01xaj=xbjxaj=xbj
若为连续型( x a j , x b j x_a^j,x_b^j xaj,xbj已规范化到 [ 0 , 1 ] [0,1] [0,1]区间):
d i f f ( x a j , x b j ) = ∣ x a j − x b j ∣ diff(x_a^j,x_b^j)=|x_a^j-x_b^j| diff(xaj,xbj)=xajxbj

diff操作衡量样本之间的距离,上式中如果样本与猜中近邻距离小于与猜错近邻的距离,说明属性 j j j对于区分样本类别是有益的,对于统计量分量起到增大作用,反之说明属性 j j j对于区分样本类别是不利的,对于统计量分量起到减小作用。从而可以根据分量的值来衡量对应属性的分类能力。

Relief的时间开销随采样次数和原始特征数线性增长

扩展变体Relief-F能处理多分类问题

在这里插入图片描述

包裹式选择

包裹式选择直接将后续的学习器的性能作为特征子集的评价准则。目的就是为给定学习器选择量身定做的特征子集,所以最终的学习器性能而言,包裹式要好于过滤式,但是计算开销通常大得多

典型方法:LVW

LVW在拉斯维加斯方法框架下使用随机策略进行子集搜索,并最终以分类器误差为特征子集评价标准,算法描述如下:

蒙特卡罗算法:采样越多,越近似最优解,一定会给出解,但给出的解不一定是正确解;

拉斯维加斯算法:采样越多,越有机会找到最优解,不一定会给出解,但给出的解一定是正确解。

在这里插入图片描述

算法第八行,使用对于学习器的交叉验证作为评价标准

算法第九行,学习器误差更小或者误差不变,但是特征数减少都会成为更新特征子集的标准

算法中给出了停止条件参数T,如前面所说的,拉斯维加斯算法有可能不会给出解

嵌入式选择与L1正则化

之前的两种特征选择方法,学习器训练过程与特征选择过程是区别开来的,而嵌入式特征选择是将两个过程融为一体,在同一个优化过程中完成(学习器训练过程中自动进行了特征选择)

以线性回归模型为例,优化目标为最小化平方误差和,为缓解过拟合问题,可以引入 L 2 L_2 L2范数正则化(也称作“岭回归”),如果采用 L 1 L_1 L1范数:
m i n w ∑ i = 1 m ( y i − w T x i ) 2 + λ ∣ ∣ w ∣ ∣ 1 (1) min_w\sum^{m}_{i=1}(y_i-\boldsymbol w^T\boldsymbol x_i)^2+\lambda||\boldsymbol w||_1 \tag 1 minwi=1m(yiwTxi)2+λw1(1)
( 1 ) (1) (1)式被称为LASSO,其中 λ > 0 \lambda > 0 λ>0

L 1 L_1 L1范数趋向于产生少量特征,其他特征权值为0(更容易获得稀疏解),因此 L 1 L_1 L1范数正则化的结果是仅采用一部分初始特征,所以这种学习方法就是一种嵌入式特征选择方法
在这里插入图片描述

求解留个坑,补

稀疏表示与字典学习

如果样本数据是一个稀疏矩阵,那么对学习任务来说会有不少好处,这是稀疏表示与字典学习的基本出发点。

如果对于给定的稠密表达的样本,通过某种方法将样本转化为合适的稀疏表示形式,从而简化学习任务,这被称作“字典学习”或者"稀疏编码"

给定数据集 { x 1 , x 2 , . . . , x m } \{x_1,x_2,...,x_m\} { x1,x2,...,xm},字典学习最简单的形式为:
m i n B , α i ∑ i = 1 m ∣ ∣ x i − B α i ∣ ∣ 2 + λ ∑ i = 1 m ∣ ∣ α i ∣ ∣ 1 min_{\boldsymbol B,\boldsymbol \alpha_i}\sum^{m}_{i=1}||\boldsymbol x_i - \boldsymbol B\boldsymbol \alpha_i||^2+\lambda\sum^{m}_{i=1}||\boldsymbol \alpha_i||_1 minB,αii=1mxiBαi2+λi=1mαi1

上式表达的意思是希望样本 x i \boldsymbol x_i xi的稀疏表示 α i \boldsymbol\alpha_i αi与字典 B \boldsymbol B B重构之后和样本原始表示尽量相似,后边的 L 1 L_1 L1范数是为了使得到的表示更加稀疏

参考

周志华《机器学习》

猜你喜欢

转载自blog.csdn.net/i0o0iW/article/details/108331370