第十一章:特征选择与稀疏学习

  • 11.1 子集搜索与评价
    • 子集搜索
    • 特征子集评价
  • 11.2 过滤式选择
    • Relief的相关统计量
  • 11.3 包裹式选择
    • 拉斯维加斯方法和蒙特卡罗方法:
  • 11.4 嵌入式选择与L1正则化
  • 11.5 稀疏表示与字典学习
    • 稀疏性
  • 11.6 压缩感知

11.1 子集搜索与评价

一般情况下,我们可以用很多属性/特征描述一个示例,而对于特定的学习任务,我们会发现已知的所有属性中,有些特征是与该学习任务的目标无关的(如预测一个人的收入,年龄/学历/专业可能很大程度上影响了收入,身高/体重这些外貌属性也有较小的可能性影响收入,但像是否是一个地地道道的吃货这种属性就八杆子打不着了),称之为无关特征,对当前学习任务有用的属性称之为相关特征

我们只需要对学习任务有用的相关特征,特征选择便是从给定的特征集合中选出相关特征子集的过程

显然,特征选择的过程同样也实现了降维的效果,也可以有效解决维数灾难的问题。具体而言:

  • 降维从一定程度上起到了提炼优质低维属性和降噪的效果
  • 特征选取直接剔除那些与学习任务无关的属性选取出最佳特征子集

要从初始的特征集合中选取一个包含所有重要信息的特征子集,若直接遍历所有特征子集,在维数过多时则会遭遇指数爆炸。可行的做法是产生一个候选子集,评价出它的好坏,基于评价结果产生下一个候选子集,再对其进行评价,…这个过程持续进行下去,直至无法找到更好的候选子集为止。这就极大地降低了复杂度。早期的特征选择常用方法涉及两个关键环节:

  1. 如何根据评价结果获取下一个候选特征子集?
  2. 如何评价候选特征子集的好坏?

子集搜索

书上介绍了贪心算法,分为三种策略:

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

以上的策略由于都基于贪心算法,故都是仅考虑了使本轮选定集最优,故有几率得不到全局最优解。遗憾的是,若不进行穷举,这样的问题无法避免。

特征子集评价

书中给出了一些想法及基于信息熵的方法。假设数据集的属性皆为离散属性,这样给定一个特征子集,便可以通过这个特征子集的取值将数据集合划分为V个子集。例如:A1={男,女},A2={本科,硕士}就可以将原数据集划分为2*2=4个子集,其中每个子集的取值完全相同。这时我们就可以像决策树选择划分属性那样,通过计算信息增益来评价该属性子集的好坏。



信息增益Gain(A)越大,意味着特征子集A包含的有助于分类的特征越多。故对于每个候选特征子集,我们可以基于训练数据集D来计算其信息增益,以此作为评价准则

以上,将特征子集搜索机制子集评价机制相结合,即可得到特征选择方法。值得一提的是,若将前向搜索和信息熵相结合,则与ID3决策树算法非常相似。事实上,决策树可用于特征选择,树结点的划分属性所组成的集合就是选择出的特征子集

常见的特征选择方法大致可分为三类:

  • 过滤式(filter):过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。
  • 包裹式(wrapper):直接把最终将要使用的学习器的性能作为特征子集的评价准则。其目的就是为给定学习器选择最有利于其性能的特征子集
  • 嵌入式(embedding):将特征选择过程与学习器的训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练的过程中自动地进行了特征选择。

11.2 过滤式选择

过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关。

Relief(Relevant Features)是一种著名的过滤式特征选择方法,该方法设计了一个相关统计量,其每个分量分别对应于一个初始特征,而特征子集的重要性由子集中每个特征所对应的相关统计量分量之和决定。最终有两种方法选择特征:

  1. 指定一个阈值t,然后选择比t大的相关统计量分量所对应的特征即可
  2. 指定欲选取的特征个数k,然后选择相关统计量分量最大的k个特征

Relief的相关统计量

Relief的关键在于如何确定相关统计量。对于训练集的每个示例xix_ixi,Relief先xix_ixi的同类样本中寻找其最近邻xi,nhx_{i,nh}xi,nh,称为“猜中近邻”(near-hit),再xix_ixi的异类样本中寻找其最近邻xi,nmx_{i,nm}xi,nm,称为“猜错近邻”(near-miss)。于是,相关统计量对应于特征jjj的分量为:


直观上理解:对于near-hit,两者jjj属性的距离越小越好,对于near-miss,jjj属性距离越大越好。

标准Relief算法只适用于二分类问题,后续产生的拓展变体Relief-F则解决了多分类问题。对于jjj分量,新的计算公式为:


其中,plp_lpl为第lll类样本在数据集D中的所占的比例

Relief-F先在第kkk类的样本中寻找xix_ixi的最近邻示例near-hit,然后在第kkk类之外的每个类中找到一个xix_ixi的最近邻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范数更易于获得稀疏解,即它求得的www有更多零分量(原本最自然的是要使用L0范数,但是L0范数不连续,难以优化求解,因此使用L1范数来近似)

采用L1范数比L2范数更易于得到稀疏解www取得稀疏解意味着初始的ddd个特征中仅有对应着www的非零分量的特征才会出现在最终的模型中。于是求解L1正则化的结果是得到了仅采用一部分特征的模型。(既最小化又降维,即学习器训练过程与特征选择过程融为一体)

换言之,基于L1正则化的学习方法就是一种嵌入式特征选择方法,其特征选择过程与学习器训练过程融为一体,同时完成

总的来说:L1范数会趋向产生少量的特征,其他特征的权值都是0;L2会选择更多的特征,这些特征的权值都会接近于0。这样L1范数在特征选择上就十分有用,而L2范数则具备较强的控制过拟合能力。

L1正则化的求解可用近端梯度下降(PGD)来求解:


11.5 稀疏表示与字典学习

稀疏性

特征选择所考虑的问题是特征具有稀疏性,即矩阵中的许多列与当前学习任务无关,通过特征选择去除这些列,则学习器训练过程仅需在较小的矩阵上进行,学习任务的难度可能有所降低,涉及的计算和存储开销会减少,学得的模型可解释性也会提高。

另一种稀疏性可比喻为:每个文档作为一个样本,每一列为字典中的字,则这样形成的矩阵中,每行有大量的零元素,且对于每个文档样本,每列零元素出现的位置往往很不相同。

当样本具有这样的稀疏表达形式时,对学习任务来说有不少的好处。如线性支持向量机之所以能在文本数据上有很好的性能,恰是由于文本数据在使用上述的字频表示后具有高度的稀疏性,使大多数问题变得线性可分

同时,由于稀疏矩阵有许多高效的存储方法,故并不会造成存储上的巨大负担

于是,在一般的学习任务中,我们也可以学习出这样一个字典,使得普通稠密表达的样本找到合适的字典,将样本转化为合适的稀疏表示形式,简化任务,降低模型复杂度,我们称之为稀疏编码(sparse coding)或字典学习(dictionary learning)。

给定一个数据集,字典学习/稀疏编码指的便是通过一个字典将原数据转化为稀疏表示,因此最终的目标就是求得字典矩阵B及稀疏表示α,书中使用变量交替优化的策略能较好地求得解。


第一步:固定字典B,参照LASSO的解法求解下式,从而为每个样本xix_ixi找到相应的αi\alpha_iαi

第二步:以αi\alpha_iαi为初值更新字典B,此时可将式(11.15)写为:

11.6 压缩感知

压缩感知关注的是通过欠采样信息来恢复全部信息。在实际问题中,为了方便传输和存储,我们一般将数字信息进行压缩,这样就有可能损失部分信息,如何根据已有的信息来重构出全部信号,这便是压缩感知的来历,压缩感知的前提是已知的信息具有稀疏表示。

压缩感知的背景:

西瓜书学习笔记——第十一章:特征选择与稀疏学习相关推荐

  1. 《机器学习》周志华(西瓜书)学习笔记 第十一章 特征选择与稀疏学习

    机器学习 总目录 第十一章 特征选择与稀疏学习 11.1 子集搜索与评价 给定属性集,其中有些属性可能很关键.很有用,另一些 属性则可能没什么用.我们将属性称为"特征" (feat ...

  2. 机器学习入门-西瓜书总结笔记第十一章

    西瓜书第十一章-特征选择与稀疏学习 一.子集搜索与评价 二.过滤式选择 三.包裹式选择 四.嵌入式选择与 L 1 L_1 L1​正则化 五.稀疏表示与字典学习 六.压缩感知 一.子集搜索与评价 将属性 ...

  3. 周志华《Machine Learning》学习笔记(13)--特征选择与稀疏学习

    上篇主要介绍了经典的降维方法与度量学习,首先从"维数灾难"导致的样本稀疏以及距离难计算两大难题出发,引出了降维的概念,即通过某种数学变换将原始高维空间转变到一个低维的子空间,接着分 ...

  4. 机器学习----第十一章特征选择与稀疏学习 学习笔记

    目录 子集搜索与评价 过滤式选择 包裹式选择 嵌入式选择与L1正则化 稀疏表示与字典学习 压缩感知 子集搜索与评价 我们先来理解以下概念: 相关特征:对当前学习任务有用的属性: 无关特征:对当前学习任 ...

  5. 机器学习(周志华) 第十一章特征选择与稀疏学习

    关于周志华老师的<机器学习>这本书的学习笔记 记录学习过程 本博客记录Chapter11 文章目录 1 子集搜索与评价 2 过滤式选择 3 包裹式选择 4 嵌入式选择与L1正则化 5 稀疏 ...

  6. 《机器学习》第十一章 特征选择与稀疏学习

    特征选择从多个特征中选出对学习有用的特征以实现降低维度,增加准确率的目的. 选择子集和对子集进行评价是重要的两步,本章主要介绍了过滤式选择,包裹式选择以及嵌入式选择等方法: 过滤式选择利用相关统计量在 ...

  7. 第十一章 特征选择与稀疏学习

    11.1 子集搜索与评价 我们将属性称为特征,对当前学习任务有用的属性称为相关特征.没什么用的属性称为无关特征.还有一类特征称为冗余特征,它们所包含的信息能从其他特征中推演出来,冗余特征在很多时候不起 ...

  8. 机器学习第11章 特征选择与稀疏学习

    第十一章 特征选择与稀疏学习 11.1 子集搜索与评价 ​ 对当前学习任务有用的属性称为"相关特征 ".没什么用的属性称为"无关特征".从给定的特征集合中选择出 ...

  9. 《西瓜书》笔记-第0章-引言

    本人为某985学生,想在CSDN上发表一些自己的阅读笔记.阅读体会,一方面是为了整理自己所学知识,达到重新梳理,复习的作用,一方面是可能在一定程度上能够帮助网友们,非常希望志同道合的朋友们能发表一些意 ...

  10. 《Go语言圣经》学习笔记 第十一章 测试

    <Go语言圣经>学习笔记 第十一章 测试 目录 go test 测试函数 测试覆盖率 基准测试 剖析 示例函数 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语 ...

最新文章

  1. oracle中的柱状图,详解Oracle中XMI开发UML图表技术
  2. MySQL调优(七):滴滴一面二面题,服务器参数设置,redolog两阶段提交
  3. 阿里小二的日常工作要被TA们“接管”了!
  4. 02-print的用法
  5. 面试精讲之面试考点及大厂真题 - 分布式专栏 10 Redis雪崩,穿透,击穿三连问
  6. svn与eclipse的集成(第三方插件与eclipse的集成)
  7. java面向对象的六大原则
  8. 机器人码垛搬运编程程序_一条指令搞定机器人搬运程序
  9. Linux入门学习教程:在Ubuntu 14.04中安装使用搜狗拼音输入法
  10. 中美两本有影响力数理统计学教材的对比及其启示(龚凤乾)
  11. PE启动盘安装操作系统
  12. oracle数据库架构视频教程,Oracle数据库体系架构_oracle架构_oracle学习视频_oracle数据库_课课家...
  13. 在Centos操作系统下安装mysql8.0
  14. 重温经典:Windows1.0系统体验和尝试自己编写Windows1.0系统
  15. 工作两年前端经验分享
  16. cv2.VideoCapture.get()用法
  17. 系统辨识与自适应控制matlab程序_杂志精选 | 自适应声反馈抑制技术及其应用
  18. 计算机监控系统在地铁中的应用有哪些,地铁综合监控
  19. /dev/tty、/dev/ttyS/、/dev/ttyUSB区别
  20. 解决显卡驱动错误43

热门文章

  1. 免费DNS服务器有哪些?
  2. 甜齁你的情人节糖果促销海报设计
  3. MySQL生成32位UUID
  4. 春天来啦:Spring框架概述
  5. android模拟器webservice,计数值显示在Android模拟器上,通过soap webservice
  6. Python GPU编程实例(最简单, 入门版)
  7. Power BI--DAX函数进阶
  8. 在工作中如何保持稳定的情绪
  9. websocket 前后端交互实战
  10. git基础教程(22)回退提交push到远端的提交--git revert 详解