概述
第十一章:特征选择与稀疏学习
- 11.1 子集搜索与评价
- 子集搜索
- 特征子集评价
- 11.2 过滤式选择
- Relief的相关统计量
- 11.3 包裹式选择
- 拉斯维加斯方法和蒙特卡罗方法:
- 11.4 嵌入式选择与L1正则化
- 11.5 稀疏表示与字典学习
- 稀疏性
- 11.6 压缩感知
11.1 子集搜索与评价
一般情况下,我们可以用很多属性/特征描述一个示例,而对于特定的学习任务,我们会发现已知的所有属性中,有些特征是与该学习任务的目标无关的(如预测一个人的收入,年龄/学历/专业可能很大程度上影响了收入,身高/体重这些外貌属性也有较小的可能性影响收入,但像是否是一个地地道道的吃货这种属性就八杆子打不着了),称之为无关特征,对当前学习任务有用的属性称之为相关特征。
我们只需要对学习任务有用的相关特征,特征选择便是从给定的特征集合中选出相关特征子集的过程。
显然,特征选择的过程同样也实现了降维的效果,也可以有效解决维数灾难的问题。具体而言:
- 降维从一定程度上起到了提炼优质低维属性和降噪的效果
- 特征选取直接剔除那些与学习任务无关的属性选取出最佳特征子集
要从初始的特征集合中选取一个包含所有重要信息的特征子集,若直接遍历所有特征子集,在维数过多时则会遭遇指数爆炸。可行的做法是产生一个候选子集,评价出它的好坏,基于评价结果产生下一个候选子集,再对其进行评价,…这个过程持续进行下去,直至无法找到更好的候选子集为止。这就极大地降低了复杂度。早期的特征选择常用方法涉及两个关键环节:
- 如何根据评价结果获取下一个候选特征子集?
- 如何评价候选特征子集的好坏?
子集搜索
书上介绍了贪心算法,分为三种策略:
前向搜索:初始将每个特征当做一个候选特征子集,然后从当前所有的候选子集中选择出最佳的特征子集;接着在上一轮选出的特征子集中添加一个新的特征,同样地选出最佳特征子集;最后直至选不出比上一轮更好的特征子集。
后向搜索:初始将所有特征作为一个候选特征子集;接着尝试去掉上一轮特征子集中的一个特征并选出当前最优的特征子集;最后直到选不出比上一轮更好的特征子集。
双向搜索:将前向搜索与后向搜索结合起来,即在每一轮中既有添加操作也有剔除操作。
以上的策略由于都基于贪心算法,故都是仅考虑了使本轮选定集最优,故有几率得不到全局最优解。遗憾的是,若不进行穷举,这样的问题无法避免。
特征子集评价
书中给出了一些想法及基于信息熵的方法。假设数据集的属性皆为离散属性,这样给定一个特征子集,便可以通过这个特征子集的取值将数据集合划分为V个子集。例如:A1={男,女},A2={本科,硕士}就可以将原数据集划分为2*2=4个子集,其中每个子集的取值完全相同。这时我们就可以像决策树选择划分属性那样,通过计算信息增益来评价该属性子集的好坏。
信息增益Gain(A)越大,意味着特征子集A包含的有助于分类的特征越多。故对于每个候选特征子集,我们可以基于训练数据集D来计算其信息增益,以此作为评价准则。
以上,将特征子集搜索机制和子集评价机制相结合,即可得到特征选择方法。值得一提的是,若将前向搜索和信息熵相结合,则与ID3决策树算法非常相似。事实上,决策树可用于特征选择,树结点的划分属性所组成的集合就是选择出的特征子集。
常见的特征选择方法大致可分为三类:
- 过滤式(filter):过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。
- 包裹式(wrapper):直接把最终将要使用的学习器的性能作为特征子集的评价准则。其目的就是为给定学习器选择最有利于其性能的特征子集。
- 嵌入式(embedding):将特征选择过程与学习器的训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练的过程中自动地进行了特征选择。
11.2 过滤式选择
过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。
Relief(Relevant Features)是一种著名的过滤式特征选择方法,该方法设计了一个相关统计量,其每个分量分别对应于一个初始特征,而特征子集的重要性由子集中每个特征所对应的相关统计量分量之和决定。最终有两种方法选择特征:
- 指定一个阈值t,然后选择比t大的相关统计量分量所对应的特征即可
- 指定欲选取的特征个数k,然后选择相关统计量分量最大的k个特征
Relief的相关统计量
Relief的关键在于如何确定相关统计量。对于训练集的每个示例
x
i
x_i
xi,Relief先在
x
i
x_i
xi的同类样本中寻找其最近邻
x
i
,
n
h
x_{i,nh}
xi,nh,称为“猜中近邻”(near-hit),再从
x
i
x_i
xi的异类样本中寻找其最近邻
x
i
,
n
m
x_{i,nm}
xi,nm,称为“猜错近邻”(near-miss)。于是,相关统计量对应于特征
j
j
j的分量为:
直观上理解:对于near-hit,两者
j
j
j属性的距离越小越好,对于near-miss,
j
j
j属性距离越大越好。
标准Relief算法只适用于二分类问题,后续产生的拓展变体Relief-F则解决了多分类问题。对于 j j j分量,新的计算公式为:
其中,
p
l
p_l
pl为第
l
l
l类样本在数据集D中的所占的比例
Relief-F先在第 k k k类的样本中寻找 x i x_i xi的最近邻示例near-hit,然后在第 k k k类之外的每个类中找到一个 x i x_i xi的最近邻near-miss,即只有一个near-hit,有多个near-miss
11.3 包裹式选择
与过滤式选择不同的是,包裹式选择直接把最终将要使用的学习器的性能作为特征子集的评价准则。其目的就是为给定学习器选择最有利于其性能的特征子集。
由于在每一轮迭代中都要训练学习器,因此在获得较好性能的同时也产生了较大的开销。包裹式特征选择比过滤式特征选择计算开销要大得多。书中主要介绍的是一种经典的包裹式特征选择方法:LVW,它在拉斯维加斯框架下使用随机策略来进行特征子集的搜索,并以最终分类器的误差为特征子集评价准则。
拉斯维加斯方法和蒙特卡罗方法:
以下引用于:文章链接
蒙特卡罗算法:采样越多,越近似最优解,一定会给出解,但给出的解不一定是正确解;
拉斯维加斯算法:采样越多,越有机会找到最优解,不一定会给出解,且给出的解一定是正确解。
举个例子,假如筐里有100个苹果,让我每次闭眼拿1个,挑出最大的。于是我随机拿1个,再随机拿1个跟它比,留下大的,再随机拿1个……我每拿一次,留下的苹果都至少不比上次的小。拿的次数越多,挑出的苹果就越大,但我除非拿100次,否则无法肯定挑出了最大的。这个挑苹果的算法,就属于蒙特卡罗算法——尽量找较好的,但不保证是最好的。
而拉斯维加斯算法,则是另一种情况。假如有一把锁,给我100把钥匙,只有1把是对的。于是我每次随机拿1把钥匙去试,打不开就再换1把。我试的次数越多,打开(正确解)的机会就越大,但在打开之前,那些错的钥匙都是没有用的。这个试钥匙的算法,就是拉斯维加斯的——尽量找最好的,但不保证能找到。
11.4 嵌入式选择与L1正则化
过滤式中特征选择与后续学习器完全分离,包裹式则是使用学习器作为特征选择的评价准则;嵌入式是一种将特征选择与学习器训练完全融合的特征选择方法,即将特征选择融入学习器的优化过程中。
在之前《经验风险与结构风险》中:经验风险指的是模型与训练数据的契合度,结构风险则是模型的复杂程度。机器学习的核心任务就是:在模型简单的基础上保证模型的契合度。例如:对于简单的线性回归模型,以平方误差为损失函数,则优化目标为:
岭回归就是加上了L2范数的最小二乘法,有效地解决了奇异矩阵、过拟合等诸多问题。
下面的嵌入式特征选择则是在损失函数后加上了L1范数:
注:正则化参数
λ
>
0
lambda>0
λ>0
L1范数和L2范数正则化都有助于降低过拟合风险。
除此之外,L1范数比L2范数更易于获得稀疏解,即它求得的
w
w
w有更多零分量(原本最自然的是要使用L0范数,但是L0范数不连续,难以优化求解,因此使用L1范数来近似)
即采用L1范数比L2范数更易于得到稀疏解。
w
w
w取得稀疏解意味着初始的
d
d
d个特征中仅有对应着
w
w
w的非零分量的特征才会出现在最终的模型中。于是求解L1正则化的结果是得到了仅采用一部分特征的模型。(既最小化又降维,即学习器训练过程与特征选择过程融为一体)
换言之,基于L1正则化的学习方法就是一种嵌入式特征选择方法,其特征选择过程与学习器训练过程融为一体,同时完成。
总的来说:L1范数会趋向产生少量的特征,其他特征的权值都是0;L2会选择更多的特征,这些特征的权值都会接近于0。这样L1范数在特征选择上就十分有用,而L2范数则具备较强的控制过拟合能力。
L1正则化的求解可用近端梯度下降(PGD)来求解:
11.5 稀疏表示与字典学习
稀疏性
特征选择所考虑的问题是特征具有稀疏性,即矩阵中的许多列与当前学习任务无关,通过特征选择去除这些列,则学习器训练过程仅需在较小的矩阵上进行,学习任务的难度可能有所降低,涉及的计算和存储开销会减少,学得的模型可解释性也会提高。
另一种稀疏性可比喻为:每个文档作为一个样本,每一列为字典中的字,则这样形成的矩阵中,每行有大量的零元素,且对于每个文档样本,每列零元素出现的位置往往很不相同。
当样本具有这样的稀疏表达形式时,对学习任务来说有不少的好处。如线性支持向量机之所以能在文本数据上有很好的性能,恰是由于文本数据在使用上述的字频表示后具有高度的稀疏性,使大多数问题变得线性可分。
同时,由于稀疏矩阵有许多高效的存储方法,故并不会造成存储上的巨大负担。
于是,在一般的学习任务中,我们也可以学习出这样一个字典,使得普通稠密表达的样本找到合适的字典,将样本转化为合适的稀疏表示形式,简化任务,降低模型复杂度,我们称之为稀疏编码(sparse coding)或字典学习(dictionary learning)。
给定一个数据集,字典学习/稀疏编码指的便是通过一个字典将原数据转化为稀疏表示,因此最终的目标就是求得字典矩阵B及稀疏表示α,书中使用变量交替优化的策略能较好地求得解。
第一步:固定字典B,参照LASSO的解法求解下式,从而为每个样本
x
i
x_i
xi找到相应的
α
i
alpha_i
αi:
第二步:以
α
i
alpha_i
αi为初值更新字典B,此时可将式(11.15)写为:
11.6 压缩感知
压缩感知关注的是通过欠采样信息来恢复全部信息。在实际问题中,为了方便传输和存储,我们一般将数字信息进行压缩,这样就有可能损失部分信息,如何根据已有的信息来重构出全部信号,这便是压缩感知的来历,压缩感知的前提是已知的信息具有稀疏表示。
压缩感知的背景:
最后
以上就是爱笑鱼为你收集整理的西瓜书学习笔记——第十一章:特征选择与稀疏学习11.1 子集搜索与评价11.2 过滤式选择11.3 包裹式选择11.4 嵌入式选择与L1正则化11.5 稀疏表示与字典学习11.6 压缩感知的全部内容,希望文章能够帮你解决西瓜书学习笔记——第十一章:特征选择与稀疏学习11.1 子集搜索与评价11.2 过滤式选择11.3 包裹式选择11.4 嵌入式选择与L1正则化11.5 稀疏表示与字典学习11.6 压缩感知所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复