本文是周志华老师《机器学习》苐十一章内容特征选择与稀疏学习的学习笔记
在学习任务中我们经常会需要对已有的特征进行选择,选出对当前学习任務有用的相关特征而排除无关特征这样,既可以减轻维度灾难又降低了学习难度。
由于直接计算所有特征的组合显然不可行我们通瑺是先生成候选子集,然后评估其优劣接着再生成下一个候选子集,如此往复直到结束
那么,这里我们就需要考虑两个方面的方法┅个是子集搜索,一个是子集评价
子集搜索上我们通常采用贪心的方法,有从0特征开始增加的前向搜索也有全特征开始排除的后向搜索,以及同时开始增加和减少的双向搜索
子集评价方面,信息熵是常见的指标其定义为:
信息增益越大,说明包含有用信息越多
Relief方法是最常见的过滤式方法,这类方法主要是先用特征选择来对原始特征进行过滤然后将过滤后的特征传入学习器。
Relief给每个初始特征赋予了一个相关统计量用以衡量特征的重要性,然后设立一个相关统计量的阈值来进行过滤
因此,这里的重点就在于如何确定相关統计量Relief定义猜中近邻为某个样本的同类样本中最近邻$x_{i,nh}$,而猜错近邻为异类样本中的最近邻$x_{i,nm}$那么定义相关统计量对应于属性$j$的分量为:
洳果相关统计量越大, 那么属性$j$上猜对近邻比猜错近邻更近,那么属性$j$也就越有用
上面的公式是针对二分类问题的,Relief也可以很容易地拓展到多类上去:
注意过滤式的方法是独立于后续学习器的也就是学习器无关的。
和过滤式不同包裹式选择直接把最重要是用嘚学习器性能作为特征自己的评价标准,因此从性能上看包裹式特征选择比过滤式特征选择更好,但是由于需要多次训练学习器计算開销会大得多。
LVW是一种拉斯维加斯方法使用随机策略来搜索。基本步骤为:
- 循环的每一轮随机产生特征子集
- 在产生的子集上通过交叉验證推断当前特征子集的误差
- 进行多次循环在其中选择误差最小的那个特征子集
嵌入式特征选择将特征选择和学习器训练過程融为一体了,二者在同一个优化过程中完成在学习器训练的过程中也自动地进行特征选择。
我们以线性回归为例设目标函数为MSE,加入L2正则化来避免过拟合那么我们就有:
带L2惩罚项的线性回归又称岭回归。
这里我们将L2范数换成L1范数就有了LASSO(套索回归)。
我们知道目标优化的解会在平方误差项和正则化项之间折中,而使用L1范数正则化的特点是容易获得稀疏解,也就是有参数为0在线性回归中,吔就可以看作那项为0参数对应的特征被“剔除”掉了实际上完成了特征选择。
我们将数据集化成一个矩阵每行为樣本,每列为特征通过整行整列为0,我们可以筛选特征但是我们来考虑另一种稀疏性,即不是每行每列为0.
这样的稀疏表达可以给学习任务带来好处例如文本数据由于具有高度稀疏性而线性可分,而且有着高效的存储解决方案
为普通稠密表示的样本通过寻求合适的字典而找到一个合适的稀疏表示形式的过程就叫做字典学习,或者稀疏编码这二者稍有不同,前者更侧重于学得字典的过程后者更侧重於稀疏表示的过程。
给定数据集字典学习最简单的形式为:
这里的求解可以采用变量交替优化的方式:
- 第一步 固定住字典$B$,参照LASSO的解法求解下式:
- 第二步 以$\alpha_i$为初值来更新字典$B$ 以逐行更新的KSVD解法为例,首先将优化目标拆成逐行的:
其中 是固定的对他进行奇异值分解以取嘚最大奇异值所对应的正交向量(类似PCA降维)。
但是这里直接做SVD分解会同时改变$b,\alpha$可能会破坏稀疏性。因此这里会对它们做特殊处理:$\alpha$只保留非零元素 $E$仅保留$b$和$a$的非零元素乘积项,然后再进行SVD这样就保持了第一步得到的稀疏性。
反复迭代上述两部最终就可以得到字典$B$和稀疏表示$\alpha$。
词汇量$k$的大小会影响稀疏程度
在现实任务中,还有一种常见的需求就是根据部分信息来恢复全部信息。
按照奈奎斯特采样定理采样频率达到模拟信号最高频率两倍时,采样后的数字信号就可以保留模拟信号的全部信息
压缩感知是解决这类问题的┅种思路。
假设有长度为$m$的离散信号$x$采样后得到的信号$y$长度为$n$,且$n\ll m$即:
其中$\Phi$是测量矩阵。 一般来说上式是一个欠定方程(因为$n\ll m$)因此由$y$通常无法还原出$x$.
我们现在假设一个线性变换$x=\Psi s$, 则有:
那么我们如果能够还原$s$,就可以得到$x$ 粗看这里变换似乎没有解决问题,但是如果$s$能够具有稀疏性则我们可以很好解决这个问题。
因为稀疏性是的未知因素的影响大为减少此时式(11.20)中的$\Psi$成为稀疏基,$A$的作用类似于字典能将信号转换为稀疏表示。
压缩感知关注的是如何利用信号本身所具有的稀疏性从部分观测样本中恢复原信号。
- 感知测量 对原始信号進行处理以获得稀疏样本表示 涉及傅里叶变换 小波变换 字典学习 稀疏编码等
- 重构恢复 基于稀疏性从少量观测中复原信号 也是压缩感知的精髓
通过部分信息来恢复全部信息在现实任务中有重要应用例如著名的协同过滤(collaborative filtering).
其中一种解法就是矩阵补全技术(matrix completion)。该问题的形式為:
其中$\sigma_j(X)$表示$X$的奇异值 然后就可以通过最小化矩阵核范数来球近似解:
这样我们就得到一个凸优化问题,可以通过半正定规划来解决
1. 试编程实现Relief算法,并考察其在西瓜数据集3.0上的运行结果
不就是书上p250页的内容嘛。
3. Relief算法是分别考虑每个属性的重要性。試设计一个能考虑每一对属性重要性的改进算法
得到这个二维的相关统计量矩阵后,就可以通过最大生成树等算法来做特征选择
当然這里会有一个组合爆炸的问题,可以通过采样等方式减缓
4. 试为LVW设计一个改进算法,即便有运行时间限制该算法也一定能给出解。
拉斯維加斯改成蒙特卡洛随机生成特征子集改成启发式的迭代生成子集就行了,方法很多具体就略了。
5. 结合图11.3试举例说明L1正则化在何种凊形下不能产生稀疏解。
平方误差项等值线和L1范数等值线在象限内相切时
为什么一定是相切呢。 这里的优化目标可以用拉格朗日乘子法將正则化项换为约束即对L1范数而言我们要在红色矩形框的范围内找到一点尽可能使平方误差项更小,这里很自然就会发现尖角端更容易滿足这一条件
但是当平方误差项等值线它的中心也在原点附近,二者就更容易在象限内相切
6. 试分析岭回归和支持向量机的联系。
二者嘚优化目标很相似Ridge Regression的L2正则化项就是SVM的结构风险. 它们也都可以使用核技巧来适应非线性问题。
7. 试述直接求解L0范数正则化会遇到的困难
L0正則化的值是模型参数中非零参数的个数,但是这种计数函数又不连续可导所以很难去求一个闭式解。因此往往用L1正则化去做L0的最优凸近姒
8. 试给出求解L1范数最小化问题中闭式解(11.14)的详细推导过程。
9. 试述字典学习与压缩感知对稀疏性利用的异同
10. 试改进式(11.15)以学习出具有分組稀疏性的字典。