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

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

11.1 子集搜索与评价

我们将属性称为“特征”(feature),对当前学习任务有用的属性称为“相关特征”(relevant feature)、没什么用的属性称为“无关特征”(irrelevant feature)。从给定的特征集合中选择出相关特征子集的过程,称为“特征选择”(feature selection)。

特征选择是一个重要的“数据预处理”(data preprocessing)过程,在现实机器学习任务中,获得数据之后通常先进行特征选择,此后再训练学习器。

特征选择过程必须确保不丢失重要特征,否则后续学习过程会因为重要信息的缺失而无法获得好的性能。给定数据集,若学习任务不同,则相关特征很可能不同,因此,特征选择中所谓的“无关特征”是指与当前学习任务无关。有一类特征称为“冗余特征”(redundant feature),它们所包含的信息能从其他特征中推演出来。

冗余特征在很多时候不起作用,去除它们会减轻学习过程的负担。但有时冗余特征会降低学习任务的难度,例如若学习目标是估算立方体的体积,则“底面积”这个冗余特征的存在将使得体积的估算更容易;更确切地说,若某个冗余特征恰好对应了完成学习任务所需的“中间概念”,则该冗余特征是有益的。

对于子集搜索问题,有三种基于贪心的策略:

前向搜索:将每个特征当做一个候选子集,然后从当前所有的候选子集中选择出最佳的特征子集;接着在上一轮选出的特征子集中添加一个新的特征,同样地选出最佳特征子集;最后直至选不出比上一轮更好的特征子集。

后向搜索:类似于前向搜索,但是每次是去掉一个无关特征。

双向搜索:把前向和后向结合,每次增加相关特征,去除无关特征。

对于子集评价问题,给定数据集 D D D,假定 D D D中第 i i i类样本所占的比例为 p i ( i = 1 , 2 , . . . , ∣ Y ∣ ) p_i(i=1,2,...,|Y|) pi(i=1,2,...,Y)。为便于讨论,假定样本属性均为离散型。对属性子集 A A A,假定根据其取值将 D D D分成了 V V V个子集 { D 1 , D 2 , . . . , D V } \{D^1,D^2,...,D^V\} {D1,D2,...,DV},每个子集中的样本在 A A A上取值相同,于是我们可计算属性子集 A A A 的信息增益
G a i n ( A ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(A)=Ent(D)-∑^V_{v=1}{|D^v|\over |D|}Ent(D^v) Gain(A)=Ent(D)v=1VDDvEnt(Dv)
其中信息熵定义为
E n t ( D ) = − ∑ i = 1 ∣ Y ∣ p k l o g 2 p k Ent(D)=-∑^{|Y|}_{i=1}p_klog_2p_k Ent(D)=i=1Ypklog2pk
信息增益 G a i n ( A ) Gain(A) Gain(A)越大,意味着特征子集 A A A包含的有助于分类的信息越多。于是,对每个候选特征子集,我们可基于训练数据集 D D D来计算其信息增益,以此作为评价准则。

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

常见的特征选择方法大致可分为三类:过滤式(6lter)、包裹式(wrapper)和嵌入式(embedding)。

11.2 过滤式选择

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

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

显然,Relief的关键是如何确定相关统计量。给定训练集 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … 。, ( x m , y m ) } \{(x_1,y_1),(x_2,y_2),…。,(x_m,y_m)\} {(x1,y1)(x2,y2)。,(xm,ym)},对每个示例 x i x_i xi,Relief先在 x i x_i xi的同类样本中寻找其最近邻 x i , n h x_{i,nh} xi,nh,称为“猜中近邻”(near-hit),再从KaTeX parse error: Expected group after '_' at position 2: x_̲的异类样本中寻找其最近邻 x i , n m x_{i,nm} xi,nm,称为“猜错近邻”(near-miss),然后,相关统计量对应于属性j的分量为
δ j = ∑ i − d i f f ( x i j , x i , n h j ) 2 + d i f f ( x i j , x i , n m j ) 2 \delta ^j=\sum_{i}-diff(x_i^j,x_{i,nh}^j)^2+diff(x_i^j,x_{i,nm}^j)^2 δj=idiff(xij,xi,nhj)2+diff(xij,xi,nmj)2

Relief是为二分类问题设计的,其扩展变体Relief-F能处理多分类问题。假定数据集 D D D中的样本来自 ∣ Y ∣ |Y| Y个类别。对示例KaTeX parse error: Expected group after '_' at position 2: x_̲,若它属于第 k k k ( k ∈ { 1 , 2 , . . . , ∣ Y ∣ } (k∈\{1,2,...,|Y|\} (k{1,2,...,Y},则Relief-F先在第 k k k类的样本中寻找 x i x_i xi的最近邻示例 x i , n h x_{i,nh} xi,nh并将其作为猜中近邻,然后在第 k k k类之外的每个类中找到一个 x i x_i xi的最近邻示例作为猜错近邻,记为 x i , n m x_{i,nm} xi,nm ( l = 1 , 2 , . … , ∣ Y ∣ ; l ≠ k ) (l=1,2,.…,|Y|;l≠k) (l=1,2,.,Y;l=k)。于是,相关统计量对应于属性 j j j的分量为
δ j = ∑ i − d i f f ( x i j , x i , n h j ) 2 + ∑ l ≠ k ( p l ∗ d i f f ( x i j , x i , n m j ) 2 ) \delta ^j=\sum_{i}-diff(x_i^j,x_{i,nh}^j)^2+\sum_{l\neq k}(p_l*diff(x_i^j,x_{i,nm}^j)^2) δj=idiff(xij,xi,nhj)2+l=k(pldiff(xij,xi,nmj)2)

11.3 包裹式选择

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

一般而言,由于包裹式特征选择方法直接针对给定学习器进行优化,因此从最终学习器性能来看,包裹式特征选择比过滤式特征选择更好,但另一方面由于在特征选择过程中需多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择大得多。

LVW是一种典型的包裹式特征选择方法。其在拉斯维加斯框架下使用随即策略来进行自己搜索,并以最终分类器的误差为特征子集的评价准则。其算法描述如下图所示:

在这里插入图片描述
需注意的是,由于 LVW 算法中特征子集搜索采用了随机策略,而每次特征子集评价都需训练学习器,计算开销很大,因此算法设置了停止条件控制参数T。然而,整个 LVW 算法是基于拉斯维加斯方法框架,若初始特征数很多(即4|很大)、T设置较大,则算法可能运行很长时间都达不到停止条件。换言之若有运行时间限制,则有可能给不出解。

11.4 嵌入式选择与 L 1 L_1 L1正则化

在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别;与此不同,嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择。

给定数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x m , y m ) D={(x_1,y_1),(x_2,y_2),⋯,(x_m,y_m)} D=(x1,y1)(x2,y2)(xm,ym),其中 x ∈ R d , y ∈ R x∈R^d,y∈R xRdyR, 我们考虑最简单的线性回归模型,以平方误差为损失函数,则优化目标为
m i n w ∑ i = 1 m ( y i − w T x i ) 2 min_w∑^m_{i=1}(yi−w^Txi)^2 minwi=1m(yiwTxi)2
当样本特征很多,而样本数相对较少时,很容易陷入过拟合。为了缓解过拟合问题,可对引入正则化项。若使用 L 2 L_2 L2范数正则化,则有
m i n w ∑ i = 1 m ( y i − w T x i ) 2 + λ ∣ ∣ w ∣ ∣ 2 2 min_w∑^m_{i=1}(yi−w^Tx_i)^2+λ||w||^2_2 minwi=1m(yiwTxi)2+λ∣∣w22

可以使用别的 L p L_p Lp范数来替代原本的 L 2 L_2 L2范数,如 L 1 L_1 L1范数。那么可以得到:
m i n w ∑ i = 1 m ( y i − w T x i ) 2 + λ ∥ w ∥ 1 min_w∑^m_{i=1}(yi−w^Tx_i)^2+λ∥w∥_1 minwi=1m(yiwTxi)2+λw1
该式称为LASSO。

11.5 稀疏表示与字典学习

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

现在我们来考虑另一种稀疏性:D所对应的矩阵中存在很多零元素,但这些零元素并不是以整列、整行形式存在的。

若给定一个稠密矩阵,我们能通过某种方法找到其合适的稀疏表示,可以使得学习任务更加简单高效,我们称之为稀疏编码或字典学习。

给定一个数据集,字典学习最简单的形式为:
m i n B , α i ∑ i = 1 m ∥ x i − B α i ∥ 2 2 + λ ∑ i = 1 m ∥ α i ∥ 1 min_{B,αi}∑^m_{i=1}∥x_i−Bα_i∥^2_2+λ∑^m_{i=1}∥α_i∥_1 minB,αii=1mxiBαi22+λi=1mαi1

11.6 压缩感知

在现实任务中,我们常希望根据部分信息来恢复全部信息。例如在数据通讯中要将模拟信号转换为数字信号,根据奈奎斯特(Nyquist)采样定理,令采样频率达到模拟信号最高频率的两倍,则采样后的数字信号就保留了模拟信号的全部信息;换言之,由此获得的数字信号能精确重构原模拟信号。然而,为了便于传输、存储,在实践中人们通常对采样的数字信号进行压缩,这有可能损失一些信息,而在信号传输过程中,由于信道出现丢包等问题,又可能损失部分信息。那么,接收方基于收到的信号,能否精确地重构出原信号呢?压缩感知(compressed sensing)为解决此类问题提供了新的思路。

与特征选择、稀疏表示不同,压缩感知关注的是如何利用信号本身所具有的稀疏性,从部分观测样本中恢复原信号。通常认为,压缩感知分为“感知测量”和“重构恢复”这两个阶段。“感知测量”关注如何对原始信号进行处理以获得稀疏样本表示,这方面的内容涉及傅里叶变换、小波变换以及 11.5节介绍的字典学习、稀疏编码等,不少技术在压缩感知提出之前就已在信号处理等领域有很多研究:“重构恢复”关注的是如何基于稀疏性从少量观测中恢复原信号,这是压缩感知的精髓,当我们谈到压缩感知时,通常是指该部分。

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

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

相关文章

UART通信实现与验证(RS485)

前言 UART是一种常用的串行通信协议,RS485则是一种用于长距离和抗干扰的物理层标准。结合UART和RS485可以实现可靠的数据传输,特别是在多点通信和长距离应用中。通过合适的硬件连接、软件配置和验证测试,可以确保这一通信系统的稳定性和数据完…

【刷题笔记】二叉树2

1 二叉树的层序遍历 上一期我们讲了关于二叉树的前序、中序以及后序遍历的相关内容。然而,还存在一种遍历方式,这种方式非常符合我们人类的正常思维,可以求解很多树相关的问题,比较暴力——二叉树的层序遍历。 二叉树的层序遍历与…

读软件开发安全之道:概念、设计与实施01基础

1. 基础 1.1. 实现软件安全既需要运用逻辑,又是一项艺术 1.1.1. 一项仰赖直觉来做出判断的艺术 1.1.2. 需要践行者对当代数字系统有所掌 1.1.3. 需要他们对人与系统之间的交互有所体悟 1.2. 需要准确地思考一下何谓安全 1.2.1. 安全定义的主观性颇强&#xff0…

HarmonyOS开发:跨应用数据共享详解

目录 前言跨应用数据共享的重要性HarmonyOS的数据共享能力相关的基本概念跨应用数据共享的数据管理具体实现跨应用数据共享延伸:数据共享的安全和隐私结语 前言 现在的移动操作系统中,应用之间的数据共享已成为提升用户体验和实现功能互补的重要手段&a…

watch 和 watchEffect 的隐藏点 --- 非常细致

之前有一篇文章讲述了 watch 和 watchEffect 的使用,但在实际使用中,仍然存在一些“隐藏点”,可能会影响开发,在这补充一下。 1. watch 的隐藏点 1.1 性能陷阱:深度监听的影响 当在 watch 中使用 deep: true 来监听…

[MRCTF2020]套娃1

打开题目,查看源代码,有提示 有两层过滤 1.过滤"_"与"%5f" 。 这里要求的参数必须是"b_u_p_t"但是不能检测出"_"。这里看着很作弄人。其实这里要用到php里非法参数名的问题。可以参考一下博客 ?b.u.p.t2333…

Python爬虫技术与K-means算法的计算机类招聘信息获取与数据分析

有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 目录 摘要.... 1 Abstract 2 1 引言.... 3 1.1 研究背景... 3 1.2 国内外研究现状... 4 1.3 研究目的... 5 1.4 研究意义... 7 2 关键技术理论介绍... 7 2.1 Python爬虫... 7 2.1 K-means…

微软开源库 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C软件异常排查从入门到精通…

VMware虚拟机下安装Ubuntu22.04以及汉化配置保姆级教程

目录 一.VMware和Ubuntu下载 二.在VMware中创建Ubuntu 1.点击 创建新的虚拟机 2.选择典型 3.选择Ubuntu镜像包(自定义存放的位置) 4.创建个人信息(密码一定要牢记) 5.选择虚拟机的安装位置 6.其他配置项(默认下…

Unity Obfuscator 使用说明

一、Assembly - Settings 1. 核心Unity程序集(Assembly-CSharp) Obfuscate Assembly-CSharp: 开启 这是Unity的核心程序集,所有没有存储在程序集定义文件(assembly definition file)中的代码都会被存储在这里。大多数…

C++多态详解

1. 多态的概念 多态就是函数调用的多种形态,使用多态能够使得不同的对象去完成同一件事时,产生不同的动作和结果。 举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买…

yolov5网络初始化问题

当你打印detect层的三个特征层时,发现有三种不同的长和宽,如下图所示: 我提出三个问题: 为什么不一样呢,输入有什么含义吗? 为什么网络初始化四次(forward)? 下面来逐个击破 1. torc…

uniapp 微信小程序生成水印图片

效果 源码 <template><view style"overflow: hidden;"><camera device-position"back" flash"auto" class"camera"><cover-view class"text-white padding water-mark"><cover-view class"…

【笔记】泰山派环境配置遇到E: Unable to locate package repo

答案来自通义千问&#xff0c;解决了我的问题&#xff0c;做一些记录 你尝试在Ubuntu或Debian系统上使用apt命令安装repo工具&#xff0c;但是遇到了问题&#xff0c;因为repo不是直接在软件源中作为一个独立的包提供的。repo是Google的一个Git仓库管理工具&#xff0c;通常用…

EasyCVR视频汇聚平台:打造全栈视频监控系统的基石,解锁可视化管理与高效运维

随着科技的飞速发展&#xff0c;视频监控已成为现代社会不可或缺的一部分&#xff0c;广泛应用于社区、公共场所、工业领域等多个场景。EasyCVR视频汇聚平台&#xff0c;作为一款高性能的视频汇聚管理平台&#xff0c;凭借其强大的视频处理、汇聚与融合能力&#xff0c;在构建全…

数据结构——关于栈

1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出的原则 比如&#xff1a;羽毛球桶&#xff0c;弹夹等等 压…

苍穹外卖项目DAY05

苍穹外卖项目DAY05 1、店铺营业状态设置 1.1、Redis入门 Redis简介 Redis是一个基于内存的key-value结构数据库 基于内存存储&#xff0c;读写性能高适合存储热点数据&#xff08;热点商品、咨询、新闻&#xff09;企业应用广泛 中文网&#xff1a;https://www.redis.net…

【Java学习】Stream流详解

所属专栏&#xff1a;Java学习 Stream流是JDK 8引入的一个概念&#xff0c;它提供了一种高效且表达力强的方式来处理数据集合&#xff08;如List、Set等&#xff09;或数组。Stream API可以以声明性方式&#xff08;指定做什么&#xff09;来处理数据序列。流操作可以被分为两大…

[C++][opencv]基于opencv实现photoshop算法灰度化图像

测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 BlackWhite.hpp #ifndef OPENCV2_PS_BLACKWHITE_HPP_ #define OPENCV2_PS_BLACKWHITE_HPP_#include "opencv2/core.hpp"namespace cv {class BlackWhite { public:float red; //红色的灰度系…

阿里云ubuntu系统安装mysql8.0

一、安装mysql8.0 1.已安装其他版本的mysql&#xff0c;需要删除 若没有不需要此操作 1 #卸载MySQL5.7版本 2 apt remove -y mysql-client5.7* mysql-community-server5.7* 4 # 卸载5.7的仓库信息 5 dpkg-l | grep mysql | awk iprint $2} | xargs dpkg -P2.更新仓库 apt u…