机器学习——第十一章 特征选择与稀疏学习

11.1 子集搜索与评价

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

为什么要进行特征选择:

  • 减轻维数灾难问题(与降维的原因相同)
  • 去除不相关特征往往会降低学习任务的难度

        我们不能直接用排列组合进行遍历所有可能子集,这样会遭遇组合爆炸。所以我们选择产生一个“候选子集”,评价它的好坏,然后根据评价结果产生下一个候选特征子集,再进行评价,持续进行直到无法找到一个更好的子集为止。 

如何根据评价结果获取下一个候选特征子集?

  • 前向搜索:初始将每个特征当做一个候选特征子集,然后从当前所有的候选子集中选择出最佳的特征子集;接着在上一轮选出的特征子集中添加一个新的特征,同样地选出最佳特征子集;最后直至选不出比上一轮更好的特征子集。
  • 后向搜索:从完整的特征集合开始,每次尝试去掉一个无关特征。
  • 双向搜索:前向后向结合,每一轮逐渐增加选定相关特征,同时减少无关特征(前面增加的特征不会被去除)。
  • 优点:思路简单,速度快,不用全部情况都遍历一遍。
  • 缺点:使用贪心算法,不从总体上考虑其它可能情况,每次选取局部最优解,不再进行回溯处理,结果不一定是最好的。

如何评价候选特征子集的好坏?

\(\mathrm{Gain}(A)=\mathrm{Ent}(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}\mathrm{Ent}(D^v)\)

        信息熵定义为:

\(\mathrm{Ent}(D)=-\sum_{i=1}^{|\mathcal{Y}|}p_k\log_2p_k\)

        信息增益Gain(A)越大,特征子集A包含的有助于分类的信息越多。对每个候选特征子集,可基于训练数据集D来计算其信息增益,以此作为评价准则。信息熵也是同理,只要能判断两个划分差异的机制都能用于特征子集评价。

        将特征子集搜索机制和子集评价机制相结合,即可得到特征选择方法。 

11.2 过滤式选择(Relief) 

        过滤式方法是一种将特征选择与学习器训练相分离的特征选择技术,即首先将相关特征挑选出来,再使用选择出的数据子集来训练学习器。Relief是其中著名的代表性算法,它使用一个“相关统计量”来度量特征的重要性,该统计量是一个向量,其中每个分量代表着相应特征的重要性,因此我们最终可以根据这个统计量各个分量的大小来选择出合适的特征子集。 

        Relief算法的关键是如何确定相关统计量。对于数据集中的每个样例xi,Relief首先找出与xi同类别的最近邻与不同类别的最近邻,分别称为猜中近邻(near-hit)猜错近邻(near-miss),接着便可以分别计算出相关统计量中的每个分量。对于j分量:

\(\delta^j=\sum_i-\mathrm{diff}(x_i^j,x_{i,\mathrm{nh}}^j)^2+\mathrm{diff}(x_i^j,x_{i,\mathrm{nm}}^j)^2\)

        直观上理解:对于猜中近邻,两者j属性的距离越小越好,对于猜错近邻,j属性距离越大越好。更一般地,若xi为离散属性,diff取海明距离,即相同取0,不同取1;若xi为连续属性,则diff为曼哈顿距离,即取差的绝对值。分别计算每个分量,最终取平均便得到了整个相关统计量。

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

\(\delta^{j}=\sum_{i}-\mathrm{diff}(x_{i}^{j},x_{i,\mathrm{nh}}^{j})^{2}+\sum_{l\neq k}\left(p_{l}\times\mathrm{diff}(x_{i}^{j},x_{i,l,\mathrm{nm}}^{j})^{2}\right)\)

        其中\(p_l\)表示第\(l\)类样本在数据集中所占的比例,易知两者的不同之处在于:标准Relief 只有一个猜错近邻,而Relief-F有多个猜错近邻。 

11.3 包裹式选择(LVW) 

        与过滤式选择不同的是,包裹式选择将后续的学习器也考虑进来作为特征选择的评价准则。因此包裹式选择可以看作是为某种学习器量身定做的特征选择方法,由于在每一轮迭代中,包裹式选择都需要训练学习器,因此在获得较好性能的同时也产生了较大的开销。

        拉斯维加斯方法和蒙特卡罗方法是两个以著名赌城名字命名的随机化方法.两者的主要区别是:若有时间限制,则拉斯维加斯方法或者给出满足要求的解,或者不给出解,而蒙特卡罗方法一定会给出解,虽然给出的解未必满足要求;若无时间限制,则两者都能给出满足要求的解。

        LVW(Las Vegas Wrapper),它在拉斯维加斯框架下使用随机策略来进行特征子集的搜索,并以最终分类器的误差为特征子集评价准则。

  1. 初始化:
    1. \(E\):算法误差,初始化为无穷大
    2. \(d\):特征子集的特征(属性)个数,初始化为特征集的特征个数
    3. \(A^*\):特征子集,初始化为特征集
    4. \(t\):连续没有优化效果的特征子集数,初始化为0
  2. 循环部分:
    1. 随机产生一个特征子集\(A'\),用\(A'\)的特征个数更新\(d\)
    2. 使用交叉验证法计算学习器\(\mathfrak{L}\)在\(A'\)下的误差
    3. \(\left.\left\{\begin{array}{l}\text{更新}t,E,d,A^*;\text{ 较目前最好的算法误差}E\text{小或者精度无提升但特征数变少}\\t=t+1, else\end{array}\right.\right.\)
  3. 重复循环部分,直到满足停止条件控制参数,输出当前最好的特征子集\(A^*\)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

World of Warcraft [CLASSIC] 80 WLK [Gundrak] BUG

World of Warcraft [CLASSIC] 80 WLK [Gundrak] BUG 魔兽世界怀旧版,80级,5人副本古达克,科技队伍(BUG队伍) 副本有两个门口 这样看,是不是觉得很怪。是的,和图1刚好相反的。 因此应该翻转180…

Ubuntu视频工具

1. VLC VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光…

《学会 SpringBoot · 优雅停机方案》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

深入了解ISO 10012测量管理体系:从认证流程到实施周期

ISO 10012测量管理体系是国际标准化组织(ISO)推出的一项关键标准,旨在帮助企业确保测量过程的精确性和一致性。这个标准对需要精密测量的行业,如制造业、科学研究等领域尤为重要。了解ISO 10012的认证流程和实施周期,对…

Python数据可视化案例——折线图

目录 json介绍: Pyecharts介绍 安装pyecharts包 构建一个基础的折线图 配置全局配置项 综合案例: 使用工具对数据进行查看 : 数据处理 json介绍: json是一种轻量级的数据交互格式,采用完全独立于编程语言的文…

R的行和列命名和类型的转换

下面内容摘录自: 4章8节:用R做数据重塑,行列命名和数据类型转换-CSDN博客 欢迎订阅我们专栏 一、行和列命名 在数据科学和统计分析中,命名是组织和管理数据的一个重要部分。尤其是在处理复杂的多维数据集时,为行和列命…

HAProxy负载均衡详细解释

目录 1、HAProxy的负载均衡 1.1socat工具的使用 1.1.1对于单进程 1.1.2对于多进程处理方法(对haproxy做热处理) 2、Haproxy的算法 2.1静态算法 <1>static-rr <2>first 2.2动态算法 <1>roundrobin <2>leastconn <3>random 2.3其他算…

OpenGL3.3_C++_Windows(35)

PBR_IBL漫反射 IBL图像的光照(Image based lighting&#xff09;&#xff1a;非直接光源&#xff0c;它是一种更精确的环境光照输入格式&#xff0c;甚至也可以说是一种全局光照的粗略近似。环境光照&#xff1a;获取每个wi光源辐射率&#xff0c;求辐照度&#xff1a;将周围环…

手机IP地址:是根据网络还是设备决定的?

在日益数字化的今天&#xff0c;手机已经成为我们日常生活中不可或缺的一部分。它不仅是我们沟通的桥梁&#xff0c;更是我们获取信息、享受娱乐和完成工作的得力助手。然而&#xff0c;在使用手机上网的过程中&#xff0c;你是否曾经好奇过手机的IP地址是如何被分配的&#xf…

浅谈C语言位段

1、位段的定义 百度百科中是这样解释位段的: 位段&#xff0c;C语言允许在一个结构体中以位为单位来指定其成员所占内存长度&#xff0c;这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。 以下&#xff0c;我们均在VS2022的…

Llama 3.1中文微调数据集已上线,超大模型一键部署

7 月的 AI 圈真是卷完小模型卷大模型&#xff0c;精彩不停&#xff01;大多数同学都能体验 GPT-4o、Mistral-Nemo 这样的小模型&#xff0c;但 Llama-3.1-405B 和 Mistral-Large-2 这样的超大模型让很多小伙伴犯了难。 别担心&#xff01;hyper.ai 官网在教程板块为大家提供了…

创建第一个Qt项目

创建第一个QT项目 创建工程名称一般不要有特殊符号&#xff0c;不要有中文 项目工程保存路径可修改&#xff0c;路径不要带中文 Base class中的三个选项 QMainWindow:主窗口类&#xff0c;包括菜单栏、工具栏、状态栏。 QWidget:可以创建一个空白的窗口&#xff0c;是所有界…

SQL Server 2022的索引

《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;》图书介绍-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) 10.1 索引的含义…

【C++ 面试 - 基础题】每日 3 题(十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

C# Winform序列化和反序列化

在NET Framework 4.7.2中不能用Newtonsoft.Json进行序列化和反序列化&#xff0c;为解决此问题&#xff0c;采用System.Text.Json进行序列化&#xff0c;注意要添加System.Memory的引用。 1、创建测试类 using System; using System.Collections.Generic; using System.Linq; …

《剑指offer》题目 C++详细题解

JZ15 二进制中1的个数 核心考点&#xff1a;二进制计算 思路一&#xff1a;使用一个循环&#xff0c;因为我们知道整型变量只有32位&#xff0c;所以循环结束的条件就是到32&#xff0c;从最低位开始&#xff0c;逐位检查数字 n 的二进制表示&#xff0c;利用位运算中的与运算…

如何检查端口占用:netstat和lsof指令

在网络故障排查和系统管理中&#xff0c;检查端口占用情况是一项常见且重要的任务。本文将详细介绍如何使用 netstat 和 lsof 这两个强大的工具来检查端口占用和相关服务。 1. 使用 netstat 查看端口占用 netstat (network statistics) 是一个用于显示网络连接、路由表、接口…

前端react集成OIDC

文章目录 OpenID Connect (OIDC)3种 授权模式 【服务端】express 集成OIDC【前端】react 集成OIDCoidc-client-js库 原生集成react-oidc-context 库非组件获取user信息 OAuth 2.0 协议主要用于资源授权。 OpenID Connect (OIDC) https://openid.net/specs/openid-connect-core…

【案例44】Oracle启用“_optimizer_skip_scan_enabled” 参数导致NC系统卡死问题

问题现象 客户反映系统卡顿&#xff0c;很多操作耗时都比较长&#xff0c;通过nmc监控&#xff0c;线程耗时主要集中在数据库上。 问题分析 首先监控数据库服务器资源使用情况&#xff0c;CPU、内存使用正常&#xff0c;没有达到峰值。 监控磁盘IO情况&#xff0c;发现磁盘最…

WPF篇(11)-ToolTip控件(提示工具)+Popup弹出窗口

ToolTip控件 ToolTip控件继承于ContentControl&#xff0c;它不能有逻辑或视觉父级&#xff0c;意思是说它不能以控件的形式实例化&#xff0c;它必须依附于某个控件。因为它的功能被设计成提示信息&#xff0c;当鼠标移动到某个控件上方时&#xff0c;悬停一会儿&#xff0c;…