机器学习--稀疏学习
前置知识:
通常学习一次模型的过程如下:我们普遍为了获取更好的模型效果,直接对原始数据学习,会造成过拟合、需要特征提取;
而若特征提取完后依旧有很多特征,还是会容易过拟合。这时候就需要特征降维和特征选择。
其中:
特征降维:相当于将高维数据映射到低维空间(会改变数据的表示,低维空间映射后的特征不容易解释)
特征选择:根据特征的重要权重,不会改变维度,单纯提取部分更合适的特征来使用。(是一种舍弃不重要特征)
特征:
有关特征: 对学习任务有用的特征(保留);
无关特征: 对学习任务无用的特征(舍弃);
特征选择目的:
1. 减轻特征灾难,2. 降低学习难度
特征选择的常用方法:
1. 前向搜索:先确定一个特征集合和最优子集,依次从特征集合中选出最优特征,将最优特征移入最优子集,迭代此过程直到当前特征不再优于上一轮最优子集结束。
2. 后向搜索:先将整个特征集合作为候选子集,依次去除不相关特征;直到当特征子集不再优于上轮子集结束。
3. 双向搜索:前向和后向结合;在每轮迭代中,一次选出最优和最差特征,将最优特征移入最优子集,最差特征从候选子集去掉。
子集评价
核心:属性子集的信息增益:
当我们不断的往最优子集追加特征时,我们需要不断的计算是否带来了信息增益:
例如:我们判断一个人成绩是否合格,当没有任何特征时,是最混乱的,我们无从猜测。(也就是Ent(D)信息熵值最大),当我们引入了他对这门课程的累计投入学习时长(特征)时,我们就有了一定的了解(降低了我们的混乱程度)。随着不断的引入其他特征,我们愈发的能更大概率的确认该学生是否成绩合格。
其中:D^v是特征子集,|D|是权重。Ent(D)是当前子集划分下的信息熵; Gain(A)是信息增益。v是特征子集对结果的划分集合;
特征选择
过滤式
过滤式方法是一种将特征选择与学习器训练相分离的特征选择技术。
1)、先将相关特征挑选出来;
2)、再使用选择出的数据子集来训练学习器。
选择--Relief算法:
为解决二分类问题
算法思想:
使用一个“相关统计量”来度量特征的重要性,该统计量是一个向量,其中每个分量代表着相应特征的重要性,因此我们最终可以根据这个统计量各个分量的大小来选择出合适的特征子集。
对于数据集中的每个样例xi,首先找出与xi同类别的最近邻与不同类别的最近邻,分别称为猜中近邻(near-hit)与猜错近邻(near-miss),接着便可以分别计算出相关统计量中的每个分量。对于j分量:
直观上理解:对于猜中近邻,两者j特征属性的距离越小越好,对于猜错近邻,j属性距离越大越好。更一般地,若xi为离散属性,diff取海明距离,即相同取0,不同取1;若xi为连续属性,则diff为曼哈顿距离,即取差的绝对值,Xa在属性j三的取值均规范化到[0,1],分别计算每个分量,最终取平均便得到了整个相关统计量。
迭代选取xi过程m次,根据更新j权重,最后得到各特征的平均权重。特征值越大的分类能力越强。
算法特点:时间开销随采样次数以及原始数据特征线性增长,运行效率高。
Relief-F:多分类问题
对于j分量,新的计算公式如下:
其中pl表示第l类样本在数据集中所占的比例权重,易知两者的不同之处在于:标准Relief 只有一个猜错近邻,而Relief-F有多个猜错近邻。
Relief算法只是在数据集上采样计算,而不是针对整个训练集估计特征权重,属于是高效的过滤式特征选择算法。
包裹式选择
直接把最终将要学习的学习器的性能作为特征子集的评价准则。(将特征选择和模型训练融合)
包裹方法是一种为给定学习器选择最有利于其性能的特征子集(量身定做)。
比过滤式的特征选择效果更好。
LVW包裹式算法:拉斯维加斯框架下采用随机策略进行子集搜索,以最终很累起的误差为特征自己的评价准则;
LVW拉斯维加斯方法 | 蒙特卡罗方法 | |
算法思路 | 1. 随机产生特征子集; 2. 使用交叉验证推断当前子集误差 3. 多次循环,选择误差最小的子集作为最终子集。 | 1. 基于概率的方式,随机从特征池中选取一定数量特征 2. 训练模型,得到模型的性能 3. 选取新的随机特征,以获取最佳特征子集。 |
有时间限制下 | 可能给出也可能不给出解 | 一定有解 |
无时间限制下 | 有解 | 有解 |
解的特点 | 采样越多,越有机会得到最优解,有解必最优 | 采样越多,解越优,不一定得出最优解 |
算法特点 | 训练开销大 | 容易过拟合,训练开销大 |
嵌入式
过滤式中特征选择与后续学习器完全分离;包裹式则是使用学习器作为特征选择的评价准则;
嵌入式选择:一种将特征选择与学习器训练完全融合的特征选择方法,即将特征选择融入学习器的优化过程中。
机器学习的核心任务就是:在模型简单的基础上保证模型的契合度(经验风险指的是模型与训练数据的契合度,结构风险则是模型的复杂程度)。
岭回归ridge regression:
加上了L2范数的最小二乘法,有效地解决了奇异矩阵、过拟合等诸多问题,下面的嵌入式特征选择则是在损失函数后加上了L2范数。
而加上了L1范数
L1范数会趋向产生少量的特征(稀疏解),其求得的w会有更少的非零分量;
L2会选择更多的特征,这些特征的权值都会接近于0;
这样L1范数在特征选择上就十分有用,而L2范数则具备较强的控制过拟合能力。可以从下面两个方面来理解:
(1)下降速度:L1范数按照绝对值函数来下降,L2范数按照二次函数来下降。因此在0附近,L1范数的下降速度大于L2范数,故L1范数能很快地下降到0,而L2范数在0附近的下降速度非常慢,因此较大可能收敛在0的附近。
(2)空间限制:L1范数与L2范数都试图在最小化损失函数的同时,让权值W也尽可能地小。我们可以将原优化问题看做为下面的问题,即让后面的规则都小于某个阈值。这样从图中可以看出:L1范数相比L2范数更容易得到稀疏解。
稀疏表示与字典学习
稀疏性表现1:数据集D矩阵中,去除很多表示特征的列;
稀疏性表现2:数据集D矩阵中存在很多0元素,且没有出现在同一列中;
当样本数据是一个稀疏矩阵时,对学习任务来说会有不少的好处,例如很多问题变得线性可分,储存更为高效等。这便是稀疏表示与字典学习的基本出发点。
稀疏编码(sparse coding)/字典学习(dictionary learning)/码书(codebook)学习:对于一个给定的稠密矩阵,若能通过某种方法找到其合适的稀疏(恰当稀疏)表示,则可以使得学习任务更加简单高效.
给定一个数据集,字典学习/稀疏编码指的便是通过一个字典将原数据转化为稀疏表示,因此最终的目标就是求得字典矩阵B及稀疏表示α,书中受LASSO的启发,使用变量交替优化的策略能较好地求解。
字典学习:
稀疏学习侧重于对样本进行稀疏性表达的过程;
字典学习侧重于学得字典的过程;
压缩感知
从长度为M的离散信号x, 用奈奎斯特采样定理采样得到长度为N的信号y。N<<M时不能还原x。
但是若存在某种线性变化满足: 时,即可以近乎完美的还原x。
压缩感知关注的问题:
利用信号本身的稀疏性,从部分观测样本y中恢复原始信号x。
扩展:形象易懂讲解算法II——压缩感知 - 知乎