八、西瓜书——特征选择与稀疏学习

news2024/11/23 22:48:35

1.子集搜索与评价

        对于1个学习任务来说,给定属性集,其中有些属性可能很关键、很有用,另一些属性则可能没什么用,我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature).从给定的特征集合中选择出相关特征子集的过程称为“特征选择”(feature selection).

进行特征选择的原因:

        有两个很重要的原因:

  • 首先,我们在现实任务中经常会遇到维数灾难问题,这是由于属性过多而造成的,若能从中选择出重要的特征,使得后续学习过程仅需在一部分特征上构建模型,则维数灾难问题会大为减轻.
  • 第二个原因是,去除不相关特征往往会降低学习任务的难度。

特征选择有两个环节,第一个环节是子集搜索,第二个环节是子集评价。 

        子集搜索是一种在特征选择中常用的策略,主要目的是从初始的特征集合中选取一个包含了所有重要信息的特征子集。这种策略的背景在于,当面对大量的特征时,如果直接对所有可能的特征子集进行遍历,可能会遭遇组合爆炸的问题,即需要评估的特征子集数量过于庞大,导致计算成本过高。

        为了解决这个问题,子集搜索采用了一种贪心的策略。这种策略并不追求全局最优解,而是在每一步选择中都采取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。在特征选择中,这种贪心策略表现为每次从候选特征子集中选择出最优的一个或多个特征加入已选特征子集,或者从已选特征子集中删除最不重要的一个或多个特征。

        子集搜索的具体实现方式有很多种,其中比较典型的有前向搜索和后向搜索。

  • 前向搜索是从空集开始,逐渐添加特征到特征子集中,直到达到某个停止条件。
  • 后向搜索则是从全集开始,逐渐删除特征,直到达到某个停止条件。

        这两种搜索方式都可以根据评价函数的结果来调整特征子集的选择。 

        总的来说,子集搜索是一种有效的特征选择策略,它可以在降低计算成本的同时,尽可能地保留重要的特征信息。但是需要注意的是,由于贪心策略的存在,子集搜索可能会陷入局部最优解,而无法得到全局最优解。因此,在使用子集搜索时,需要根据具体的问题和数据情况来选择合适的搜索方式和评价函数。

        子集评价可采用决策树的信息增益评价方法,即:

 

        将特征子集搜索机制与子集评价机制相结合,即可得到特征选择方法.例如将前向搜索与信息熵相结合,这显然与决策树算法非常相似.事实上,决策树可用于特征选择,树结点的划分属性所组成的集合就是选择出的特征子集.其他的特征选择方法未必像决策树特征选择这么明显,但它们在本质上都是显式或隐式地结合了某种(或多种)子集搜索机制和子集评价机制.
        常见的特征选择方法大致可分为三类: 过滤式(flter)、包式(wrapper)和嵌入式(embedding) 

2.过滤式选择

        过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关.这相当于先用特征选择过程对初始特征进行“过滤”,再用过滤后的特征来训练模型.

        Relief是一种著名的过滤式特征选择方法,Relief算法设计了一个“相关统计量”来度量特征的重要性。这个统计量实际上是一个向量,它的每个分量都对应着一个特征,而该分量的值就代表着对应特征的重要性。对于数据集中的每个样例,Relief会首先找到与它同类别的最近邻样本(称为“猜中近邻”)和与它不同类别的最近邻样本(称为“猜错近邻”)。然后,基于这些近邻样本的信息,Relief会计算出每个特征的相关统计量分量。具体来说,对于某个特征,如果它与猜中近邻在该特征上的距离较小,而与猜错近邻在该特征上的距离较大,那么这个特征就被认为是重要的。

 

        在实际应用中,可以根据相关统计量分量的大小来选择特征。例如,可以设定一个阈值,只选择那些相关统计量分量大于该阈值的特征;或者指定想要选择的特征个数k,然后选择相关统计量分量最大的k个特征。

        Relief算法不仅适用于二分类问题,还可以通过扩展来处理多分类问题和回归问题。例如,针对多分类问题,可以为每个类别都找到对应的猜错近邻,并据此计算相关统计量;针对回归问题,可以考虑将目标属性视为连续值来处理。

 

3.包裹式选择 

        与过滤式特征选择不考虑后续学习器不同,包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价准则. 换言之包裹式特征选择的目的,就是为给定学习器选择最有利于其性能、“量身定做”的特征子集。

        一般而言,由于包裹式特征选择方法直接针对给定学习器进行优化。因此从最终学习器性能来看,包裹式特征选择比过滤式特征选择更好,但另一方面,由于在特征选择过程中需多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择大得多.
        LVW(Las Vegas Wrapper)[Liu and Setiono,1996] 是一个典型的包裹式特征选择方法,它在拉斯维加斯方法(Las Vegas method)框架下使用随机策略来进行子集搜索,并以最终分类器的误差为特征子集评价准则。

4.嵌入式选择与L1正则化

        嵌入式特征选择是一种将特征选择过程与学习器训练过程融为一体的方法,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择。这种方法有助于在学习过程中直接确定哪些特征对于模型的预测性能最为重要。

        L1正则化是一种在损失函数中引入的范数,用于降低过拟合的风险。与L2范数相比,L1范数更易于获得“稀疏”解,即它求得的权重向量会有更少的非零分量。这种稀疏性意味着初始特征中仅有对应着非零权重的特征才会出现在最终模型中。因此,L1正则化可以被视为一种嵌入式特征选择方法,它在学习过程中自动地进行了特征选择。

        正如上图所示,L2正则化的超平面可以看做一个圆形,而L1可以看做一个菱形,L1正则化的最优解往往在坐标轴上取得,即分量为0。

5.稀疏表示与字典学习

        当样本具有这样的稀疏表达形式时,对学习任务来说会有不少好处,例如线性支持向量机之所以能在文本数据上有很好的性能,恰是由于文本数据在使用上述的字频表示后具有高度的稀疏性,使大多数问题变得线性可分.同时,稀疏样本并不会造成存储上的巨大负担,因为稀疏矩阵已有很多高效的存储方法。

        字典学习在稀疏表示中扮演着关键角色,其目标是从原始数据中构建一个过完备的字典(比原始数据空间更高维度),使得该字典能够稀疏地表示这些原始数据。这个字典是由一系列基本信号或原子组成的,这些原子可以视为数据空间中的基向量。原始信号则可以通过这些原子的线性组合来近似表示。

        字典学习的过程实际上是一个优化问题,其核心思想是通过迭代优化算法不断更新字典和相应的稀疏表示,以达到最小化重构误差和满足稀疏性约束的目的。在这个过程中,重构误差反映了用字典中的原子线性组合来表示原始信号时的准确度,而稀疏性约束则要求这种表示尽可能简洁,即只有少量的原子被用于表示每个原始信号。

6.压缩感知

        压缩感知在机器学习的理论中,可以被视为一种将经典机器学习理论与数据压缩技术结合的新兴方法,旨在提高机器学习的性能。这种方法主要利用信号在某个变换域上的稀疏性,通过选择合适的变换基进行信号的变换,使信号在该变换域上的表示变得稀疏。然后,通过较低的采样率对信号进行采样,获取较少的采样数据。最后,利用这些采样数据和信号在变换域上的稀疏表示,通过优化算法恢复原始信号。        

        

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xilinx 7系列FPGA配置(ug470)

Xilinx 7系列FPGA配置(ug470) 配置模式串行配置模式接口从-连接方式主-连接方式串行菊花链(非同时配置)串行配置(同时配置)时序 主SPI配置模式SPIx1/x2 连接图SPIx1模式时序SPIx4 连接图SPI操作指令操作fla…

【工作记录】Threejs学习笔记-引入OrbitControls

前言 前一篇文章我们介绍了three.js中的基础概念,并给出了展示整体流程的一个简单示例, 本文我们继续研究。 问题 我们在很多3d效果图上都能看到鼠标移动或者缩进实现旋转或者放大缩小的效果,这个在three.js中是通过OrbitControls这个组件…

计网面试题整理上

1. 计算机网络的各层协议及作用? 计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。 OSI七层模型:大而全,但是比较复杂、而且是先有了理论模型,没有实际应用。TCP/IP四层模型&#xff1a…

应急响应实战笔记03权限维持篇(6)

第6篇:三大渗透测试框架权限维持技术 0x00 前言 在渗透测试中,有三个非常经典的渗透测试框架----Metasploit、Empire、Cobalt Strike。 那么,通过漏洞获取到目标主机权限后,如何利用框架获得持久性权限呢? 0x01 MS…

【递归搜索回溯专栏】专题一递归:快速幂

本专栏内容为:递归,搜索与回溯算法专栏。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:递归搜索回溯专栏 🚚代码仓库:小小unicorn的代…

折线图 温度变化曲线图

代码详情介绍 导入必要的库: matplotlib.pyplot:用于绘图。 matplotlib.font_manager:用于设置中文字体。 datetime:用于处理日期和时间。 random:用于生成随机数。 numpy:用于生成arange函数的刻度。 设置…

递推与递归DFS

;例题引入: 在跳楼梯问题中,我们假设每次可以跳1级或2级。如果我们想跳到第N级台阶,那么我们的最后一次跳跃只能是1级或2级。 如果我们最后一次跳1级,那么我们必须先跳到第N-1级台阶。由于跳到第N-1级台阶有f(N-1)种方…

【web安全】实战 批量横扫springboot命令执行漏洞

天命:这次目标批量横扫,但是没完全成功,也没完全失败 步骤1:磨刀准备 这次先针对漏洞来寻找目标,所以寻找这种 springboot 的目标 利用CVE漏洞,进行命令执行攻击 先找靶场训练一波,叠加反弹sh…

【Linux】Linux网络故障排查与解决指南

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 检查网络连接状态: 检查路由表: 检查DNS配置: 检查网络连接状态: 检查防火墙设…

用python和pygame库实现刮刮乐游戏

用python和pygame库实现刮刮乐游戏 首先,确保你已经安装了pygame库。如果没有安装,可以通过以下命令安装: pip install pygame 示例有两个。 一、简单刮刮乐游戏 准备两张图片,一张作为背景bottom_image.png,一张作…

C++ 链表OJ

目录 1、2. 两数相加 2、24. 两两交换链表中的节点 3、143. 重排链表 4、23. 合并 K 个升序链表 5、25. K 个一组翻转链表 解决链表题目常用方法: 1、画图 2、引入虚拟"头”结点 便于处理边界情况方便我们对链表操作 3、大胆定义变量,减少连接…

使用nvidia-ml-py事实监控GPU状态

平时监控GPU状态最常用的是watch配合nvidia-smi指令,但有时可能不仅仅需要监控,还需要记录状态数据,比如GPU的显存变化以及利用率变化等等。本文提供了一个使用nvidia-ml-py包编写的简易Demo,该Demo能够实现简易版的nvidia-smi功能…

Linux网络隧道协议IPIP认知(基于Linux network namespace 的 IPIP 隧道通信)

写在前面 博文内容为 Linux 隧道通信 IPIP认知内容涉及:ipip 介绍,一个 ipip 通信 Demo 以及数据帧流转分析理解不足小伙伴帮忙指正 某些人和事,哪怕没有缘分,是路边的风景,可是只要看一眼,依然会让人觉得…

Java中使用Jsoup实现网页内容爬取与Html内容解析并使用EasyExcel实现导出为Excel文件

场景 Pythont通过request以及BeautifulSoup爬取几千条情话: Pythont通过request以及BeautifulSoup爬取几千条情话_爬取情话-CSDN博客 Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本: Node-RED中使用html节点爬取HTML网页资料之爬…

mybatis单表curd笔记(尚硅谷

Mybatis 11111ibatis和mybatis不同 查询文档mybatis的日志输出id赋值输入(向sql语句传入数据单个简单类型单个实体对象多个简单类型map类型 输出数据的指定单个简单类型单个实体类型输出map类型输出list输出类型主键回显(自增长类型主键回显(…

强大的ps 命令 -o 自定义输出内容选项

强大的ps 命令 -o 自定义输出内容选项 1、ps命令介绍和作用2、问题描述 1、ps命令介绍和作用 ps 是一个 Unix 和类 Unix 操作系统中常用的命令,用于显示当前运行的进程信息。ps 命令的作用包括: 查看进程信息: ps 命令可以列出当前系统中正…

【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM

BitNet:用1-bit Transformer训练LLM 《BitNet: Scaling 1-bit Transformers for Large Language Models》 论文地址:https://arxiv.org/pdf/2310.11453.pdf 相关博客 【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM 【自然语言…

Matlab梁单元有限元编程 | 铁木辛柯梁 | 欧拉梁 | Matlab源码 | 理论文本

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

【网络安全】漏洞挖掘入门教程(非常详细),小白是如何挖漏洞(技巧篇)0基础入门到精通!

温馨提示: 初学者最好不要上手就去搞漏洞挖掘,因为漏洞挖掘需要很多的系统基础知识和一些理论知识做铺垫,而且难度较大…… 较合理的途径应该从漏洞利用入手,不妨分析一些公开的CVE漏洞。很多漏洞都有比较好的资料,分…

手写分布式配置中心(四)增加实时刷新功能(长轮询)

上一篇文章中实现了短轮询,不过短轮询的弊端也很明显,如果请求的频率较高,那么就会导致服务端压力大(并发高);如果请求的频率放低,那么客户端感知变更的及时性就会降低。所以我们来看另一种轮询…