特征选择与稀疏学习

本章参考周志华《机器学习》第11章编写
同时参考了博文 https://blog.csdn.net/u011826404/article/details/72860607

在机器学习中,特征选择是一个重要的“数据预处理(data preprocessing)”过程,即试图从数据集的所有特征中挑选出来能够很好的支持学习器的子特征;而稀疏学习则是围绕着系数矩阵的优良性质,来完成相关的学习任务。

11.1 子集搜索与评价

举一个栗子。如果要预测一个人的收入,那么有些特征比如学历/年龄/专业就是非常重要的特征,但是有些例如身高/体重就不是对目标有很大影响的特征了。所以如何选择这些重要特征,就是我们做子集搜索所要完成的工作。
其实,特征选择和降维一样是可以解决维数灾难问题的。具体来说:降维从一定程度起到了提炼优质低维属性和降噪的效果,特征选择则是直接剔除与学习任务无关的属性,从而选出最佳特征子集。
至于如何选择特征子集,若果按照直接遍历所有可能组合的方法,那时间消耗是非常大的。如果按照从候选特征子集中不断迭代生成更优子集的方式,该问题就是可解的。
这时候涉及到两个问题:1.如何生成候选子集;2.如何评价候选子集的好坏
首先对于选择特征子集,书上介绍了贪心算法,给出了三种策略:

  • 前向搜索:初始将每个特征当做一个候选特征子集,然后从当前所有的候选子集中选择出最佳的特征子集;接着在上一轮选出的最佳特征子集中添加一个新的特征,重新迭代生成最优,直到不能生成更优的子集;
  • 后向搜索:初始将所有特征当做一个候选子集,接着尝试去掉上一轮特征子集中的一个特征并选出当前最优的特征子集,直到选不出更优的;
  • 双向搜索:上面二者的叠加,每一轮中既有添加操作又有提出操作。
    然后,对于特征子集的评价,书上给出了一些想法以及基于信息熵的方法。假设数据集的属性皆为离散属性,这样给定一个特征子集,就可以通过这个特征子集的取值来讲数据集划分,然后像决策树那样来计算信息增益,通过信息增益来评价该子集划分的好坏。
    特征选择与稀疏学习_第1张图片

    此时,信息增益越大表示该属性子集包含有助于分类的特征越多。使用上述的子集搜索和评价机制相结合,就可以得到特征选择的方法。可以发现,有趣的一点是,前向搜索策略和信息增益结合在一起,跟我们前面介绍过的决策树十分相似。实际上,决策树也是可以用来做特征选择的,树节点划分属性组成的集合便是选择出的特征子集。
    常见的特征选择的方法大致可以分为3类:过滤式(filter)、包裹式(Wrapper)、嵌入式(Embedding).下面具体介绍一下每个方法。

11.2 过滤式选择

过滤式选择将特征选择和学习器的训练看做是两个独立的步骤。首先对数据集进行特征选择,再根据选择的结果来训练学习器。这相当于,先对数据集进行“过滤”,然后再用过滤的结果来训练模型。
其中最著名的 “Relief” 算法提出,用一个“相关统计量”来代表某个属性的重要程度(其实跟之前我们说的权值是一样的的),该相关统计量是一个向量,其中每个分量代表相应特征的重要性,最终根据每个特征的重要性来做相关的过滤,从而筛选出特征子集。
所以,显而易见的是,如何确定相关统计量是该算法最重要的问题。这里,对于一个给定的样本 x_i,算法首先在 x_i 的同类样本中寻找最近邻的样本和异类中最近邻的样本,分别称作 猜中近邻(near hit)猜错近邻(near miss),之后根据下面公式来计算其属性的权重:

这个公式怎么理解呢?这里我们把 diff 理解成为距离,对于一个样本,如果其在该属性上的取值距离同类样本的距离小于异类样本的距离,说明该属性对于区分同类异类样本有正作用,所以权值给越大越好;反之给小。最终,每个属性的相关统计量分量是由所有样本取均值来求的。至此,相关统计量就可以得出。
实际上,relief 方法不需要对整个数据集上都取平均,只用对需要做的数据集取平均即可。而且,该算法O(n)的算法,运行效率较高,时间复杂度线性增长。
标准的 Relief 方法适用于 二分类问题,后续有很多变体。比如 Relief-F 方法可以解决多分类问题,对于属性的相关统计量,公式变为:


其中pl表示第l类样本在数据集中所占的比例,易知两者的不同之处在于:标准Relief 只有一个猜错近邻,而Relief-F有多个猜错近邻。

11.3 包裹式选择

与之前说的过滤式选择不同,包裹式选择在做特征选择的时候,将后面的学习器训练也考虑进来。其目的就是,为给定的学习器选择一个最有利于其特征的“量身定做”的特征子集。从理论上来看,包裹式选择方法最有利于最终学习器的性能,但是由于在特征选择阶段就要考虑后续学习器的需求,这里的时间消耗往往会大得多。
LW(Las Vegas Wrapper)是一个典型的包裹式特征选择方法,它在拉斯维加斯方法(Las Vegas Method)框架下,使用随机策略来进行自己搜索,并以最终分类器的误差为特征子集评价准则。
这里,拉斯维加斯方法和蒙特卡洛方法,我们做一下介绍:

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

这里根据参考博文中的一个例子来理解上面说的两种算法。
加入筐子里有100个苹果,让我每次闭眼睛拿1个,挑出最大的。 于是我随机拿1个,再随机拿1个跟它比,留下大的,再随机拿1个...如此迭代,我可以保证每一次拿出来的苹果都比上一次的大,但是除非我做到100次,不能保证拿到最大的。这种挑苹果的算法,就是蒙特卡洛算法。
下面看拉斯维加斯算法,给我100把钥匙,只有1把是对的。于是我每次都随机拿1把钥匙去试,打不开就换一把。我试的次数越多,打开(得到正确解)的机会就越大。但是,在打开之前,我那些错的钥匙都是没有任何意义的。这就是拉斯维加斯算法--尽量找最好的,但是不保证可以找到。

Las Wrapper算法的流程如下,其中比较特别的是停止参数T的设置,即在每一轮寻找最优特征子集的过程中,若随机T次都没有找到,算法就会停止,从而保证算法运行时间的可行性。
特征选择与稀疏学习_第2张图片

所谓的考虑后续的学习器,就是在第8、9步,通过交叉验证学习算法的误差来判断特征子集的去留。
具体解释见书上。

11.4 嵌入式选择与 L1 正则化

前面我们提到了分离式的Filter方法、考虑后续学习器的 Wrapper 方法。而这里要说的嵌入式(Embedding)则是将特征选择与学习器训练完全融合的特征选择方法,即在学习器训练中,自动进行了特征选择
我们之前讲过L1正则化,明白LASSO回归对应的更加稀疏的解。这里的稀疏解意味着,初始的d个特征中,仅有对应着 非零的特征才会出现在最终模型中
这里书上说了一句“求解L1范数正则化的结果,就是得到了仅仅采用一部分初始特征的模型。也就是说,基于L1正则化的学习方法就是一种嵌入式的学习方法,这就叫做特征选择过程与学习器的训练过程融为一体,同时完成。

11.5 稀疏表示与字典学习

首先来说,高度的稀疏性可以使许多问题变得线性可分,同时对于系数矩阵我们有很多高效的存储方法,当一个样本数据是稀疏矩阵时候,学习任务变得更加简单。本小节的稀疏表示和字典学习就是从这一个原则出发,企图找到样本数据的稀疏化表示。
给定一个数据集,字典学习(dictionary learning)就是通过一个字典,给出源数据的一种合适的稀疏化表示。所以,算法的最终目的就是求得该 字典 和 每一个样本的稀疏表示 \alpha。



后面的求解,我们采用 KSVD 的方法对该问题进行求解,先固定字典B,求每个样本 x_i 的稀疏表示 \alpha_i ;再以稀疏表示为初值更新B,迭代

11.6 压缩感知

据说压缩感知是前几年非常火的领域。压缩感知与前面说的稀疏表示有一点类似,但是不同的是:压缩感知如其名,关注的是通过欠采样信息来获取全部信息。比如我们通原中的奈奎斯特采样。
需要注意的是:压缩感知的前提是已知的信息具有稀疏表示。

这一章先写这么多。

你可能感兴趣的:(特征选择与稀疏学习)