【机器学习笔记】13 降维

降维概述

维数灾难

维数灾难(Curse of Dimensionality):通常是指在涉及到向量的计算的问题中,随着维数的增加,计算量呈指数倍增长的一种现象。在很多机器学习问题中,训练集中的每条数据经常伴随着上千、甚至上万个特征。要处理这所有的特征的话,不仅会让训练非常缓慢,还会极大增加搜寻良好解决方案的困难。这个问题就是我们常说的维数灾难。
在这里插入图片描述
维数灾难涉及数字分析、抽样、组合、机器学习、数据挖掘和数据库等诸多领域。在机器学习的建模过程中,通常指的是随着特征数量的增多,计算量会变得很大,如特征达到上亿维的话,在进行计算的时候是算不出来的。有的时候,维度太大也会导致机器学习性能的下降,并不是特征维度越大越好,模型的性能会随着特征的增加先上升后下降。

降维

降维(Dimensionality Reduction)是将训练数据中的样本(实例)从高维空间转换到低维空间,该过程与信息论中有损压缩概念密切相关。同时要明白的,不存在完全无损的降维。有很多种算法可以完成对原始数据的降维,在这些方法中,降维是通过对原始数据的线性变换实现的。

  • 为什么要降维
    高维数据增加了运算的难度
    高维使得学习算法的泛化能力变弱(例如,在最近邻分类器中,样本复杂度随着维度成指数增长),维度越高,算法的搜索难度和成本就越大。
    降维能够增加数据的可读性,利于发掘数据的有意义的结构
  • 降维的作用
    1.减少冗余特征,降低数据维度
    假设我们有两个特征:
    𝑥1:长度用厘米表示的身高;𝑥2:是用英寸表示的身高。
    这两个分开的特征𝑥1和𝑥2,实际上表示的内容相同,这样其实可以减少数据到一维,只有一个特征表示身高就够了。
    很多特征具有线性关系,具有线性关系的特征很多都是冗余的特征,去掉冗余特征对机器学习的计算结果不会有影响。
    2.数据可视化
    t-distributed Stochastic Neighbor Embedding(t-SNE)
    t-SNE(TSNE)将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似度由“学生t分布”表示。虽然Isomap,LLE和variants等数据降维和可视化方法,更适合展开单个连续的低维的manifold。但如果要准确的可视化样本间的相似度关系,如对于下图所示的S曲线(不同颜色的图像表示不同类别的数据),t-SNE表现更好。因为t-SNE主要是关注数据的局部结构

降维的优缺点

  • 降维的优点:
    • 通过减少特征的维数,数据集存储所需的空间也相应减少,减少了特征维数所需的计算训练时间;
    • 数据集特征的降维有助于快速可视化数据;
    • 通过处理多重共线性消除冗余特征。
  • 降维的缺点:
    • 由于降维可能会丢失一些数据;
    • 在主成分分析(PCA)降维技术中,有时需要考虑多少主成分是难以确定的,往往使用经验法则
    在这里插入图片描述

SVD(奇异值分解)

**奇异值分解 (Singular Value Decomposition,以下简称 SVD)**是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。

  • SVD可以将一个矩阵 𝐴分解为三个矩阵的乘积:
    一个正交矩阵 𝑈(orthogonal matrix),
    一个对角矩阵𝛴 (diagonal matrix),
    一个正交矩阵𝑉的转置。

假设矩阵 𝐴 是一个 𝑚 × 𝑛 的矩阵,通过SVD是对矩阵进行分解,那么我们定义矩阵 𝐴 的 SVD 为:在这里插入图片描述

  • 符号定义
    𝐴 = 𝑈𝛴𝑉T = 𝑢1𝜎1𝑣1T + ⋯ + 𝑢𝑟𝜎𝑟𝑣𝑟T
    其中𝑈是一个𝑚 × 𝑚的矩阵,每个特征向量𝑢𝑖叫做𝐴 的左奇异向量。
    𝛴是一个𝑚 × 𝑛的矩阵,除了主对角线上的元素以外全为 0,主对角线上的每个元素都称为奇异值 𝜎。
    𝑉是一个𝑛 × 𝑛的矩阵,每个特征向量𝑣𝑖叫做 𝐴 的右奇异向量。
    𝑈 和 𝑉都是酉矩阵,即满足:𝑈T𝑈 = 𝐼, 𝑉T𝑉 = 𝐼。
    𝑟为矩阵𝐴的秩(rank)。

  • SVD求解 𝑈矩阵求解
    方阵𝐴𝐴T为𝑚 × 𝑚的一个方阵,那么我们就可以进行特征分解,得到的特
    征值和特征向量满足下式:
    在这里插入图片描述
    可以得到矩阵𝐴𝐴T的 𝑚 个特征值和对应的 𝑚个特征向量𝑢了。
    将𝐴𝐴T的所有特征向量组成一个 𝑚 × 𝑚的矩阵𝑈,就是我们 𝑆𝑉𝐷 公式里面的𝑈 矩阵了。
    一般我们将𝑈中的每个特征向量叫做𝐴 的左奇异向量
    注意:𝐴𝐴T = (𝑈𝛴VT)(𝑈𝛴VT)T = 𝑈(𝛴𝛴T)UT
    上式证明使用了𝑉T𝑉 = 𝐼, 𝛴T = 𝛴。可以看出的𝐴𝐴T特征向量组成的矩阵就是我们 SVD 中的 𝑈矩阵。

  • 𝑉矩阵求解
    如果我们将 𝐴 的转置和 𝐴 做矩阵乘法,那么会得到𝑛 × 𝑛 的一个方阵𝐴T𝐴。既然𝐴T𝐴是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:
    在这里插入图片描述
    这样我们就可以得到矩阵𝐴T𝐴的 𝑛个特征值和对应的𝑛个特征向量𝑣了。
    将𝐴T𝐴的所有特征向量组成一个 𝑛 × 𝑛 的矩阵𝑉,就是我们 SVD 公式里面的 𝑉 矩阵了。一般我们将 𝑉中的每个特征向量叫做 𝐴 的右奇异向量。
    注意:𝐴𝐴T = (𝑈𝛴VT)T (𝑈𝛴VT)=V(𝛴T𝛴)VT
    上式证明使用了UTU = 𝐼, 𝛴T = 𝛴。可以看出的𝐴𝐴T特征向量组成的矩阵就是我们 SVD 中的 V矩阵。
    在这里插入图片描述
    在这里插入图片描述

SVD计算案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SVD分解可以将一个矩阵进行分解,对角矩阵对角线上的特征值递减存放,而且奇异值的减少特别的快,在很多情况下,前 10%甚至 1%的奇异值的和就占了全部的奇异值之和的 99%以上的比例。
也就是说,对于奇异值,它跟我们特征分解中的特征值类似,我们也可以用最大的 𝑘 个的奇异值和对应的左右奇异向量来近似描述矩阵。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PCA(主成分分析)

主成分分析(Principal Component Analysis,PCA)是一种降维方法,通过将一个大的特征集转换成一个较小的特征集,这个特征集仍然包含了原始数据中的大部分信息,从而降低了原始数据的维数。
减少一个数据集的特征数量自然是以牺牲准确性为代价的,但降维的诀窍是用一点准确性换取简单性。因为更小的数据集更容易探索和可视化,并且对于机器学习算法来说,分析数据会更快、更容易,而不需要处理额外的特征。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 如何得到这些包含最大差异性的主成分方向呢?
    通过计算数据矩阵的协方差矩阵
    然后得到协方差矩阵的特征值特征向量
    选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。
    这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。

PCA的算法两种实现方法

(1) 基于SVD分解协方差矩阵实现PCA算法

PCA 减少𝑛维到𝑘维:
设有𝑚条𝑛维数据,将原始数据按列组成𝑛行𝑚列矩阵𝑋
第一步是均值归一化。我们需要计算出所有特征的均值,然后令 𝑥𝑗 = 𝑥𝑗 − 𝜇𝑗。(𝜇𝑗为均值)。如果特征是在不同的数量级上,我们还需要将其除以标准差 𝜎2
第二步是计算协方差矩阵(covariance matrix)𝛴:
在这里插入图片描述

第三步是计算协方差矩阵𝛴的特征向量(eigenvectors),可以利用奇异值分解(SVD)来求解。
在这里插入图片描述

(2) 基于特征值分解协方差矩阵实现PCA算法

  • 背景知识
    (1) 特征值与特征向量
    如果一个向量𝑣是矩阵𝐴的特征向量,将一定可以表示成下面的形式:𝐴𝑣 = 𝜆𝑣
    其中,𝜆是特征向量𝐴对应的特征值,一个矩阵的一组特征向量是一组正交向量。
    (2)特征值分解矩阵
    对于矩阵𝐴 ,有一组特征向量𝑣 ,将这组向量进行正交化单位化,就能得到一组正交单位向量。特征值分解,就是将矩阵𝐴分解为如下式:𝐴 = 𝑃𝛴𝑃−1
    其中,𝑃是矩阵𝐴的特征向量组成的矩阵, 𝛴则是一个对角阵,对角线上的元素就是特征值。
    备注:对于正交矩阵𝑃,有𝑃−1= 𝑃T

在这里插入图片描述

PCA的算法案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PCA算法优缺点

  • PCA算法优点
    1.仅仅需要以方差衡量信息量,不受数据集以外的因素影响
    2.各主成分之间正交,可消除原始数据成分间的相互影响的因素
    3.计算方法简单,主要运算时特征值分解,易于实现
    4.它是无监督学习,完全无参数限制的
  • PCA算法缺点
    1.主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强
    2.方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响

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

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

相关文章

【Linux】git操作 - gitee

1.使用 git 命令行 安装 git yum install git 2.使用gitee 注册账户 工作台 - Gitee.com 进入gitee,根据提示注册并登录 新建仓库 仓库名称仓库简介初始换仓库 3.Linux-git操作 进入仓库,选择“克隆/下载” 复制下面的两行命令进行git配置 然后将仓库clo…

教师专业发展的五个阶段

每当人们谈论教师,总会联想到“传道授业解惑”的崇高形象。但教师的专业成长,绝非一蹴而就。今天,就让我们一起探秘教师专业发展的五个阶段,看看一位普通教师是如何历练成为教育行家的。 阶段一:新手摸索期 初入教育行…

走进科学系列之遭遇鬼打墙的OUTLOOK

网管小贾 / sysadm.cc 正值春运,车站里熙熙攘攘、人头攒动。 鲍勃和约瑟夫正在候车室,等待检票。 “嗨!约瑟夫!快来看看,我的电脑出问题了!” “得了吧,马上就要检票上车了,你就不…

调用接口时不时出现 Error: socket hang up

项目场景: 提示:这里简述项目相关背景: 今天采用golang创建了一个http服务,准备对若干接口进行测试。 问题描述 提示:这里描述项目中遇到的问题: 在测试第一个接口时,发现采用postman调用接口…

Ansible yum模块 主要用于软件安装

目录 选项 实例 安装一个tree实例卸载一个 tree 选项 name   #所安装的包的名称 state  #present—>安装, latest—>安装最新的, absent—> 卸载软件。 update_cache  #强制更新yum的缓存 conf_file  #指定远程yum安装时所依赖的配置文件&…

5G车载路由器引领无人驾驶车联网应用

随着无人驾驶技术的不断发展,车联网正逐渐成为实现智能交通的重要组成部分。5G车载路由器将在车联网的应用中起到至关重要的作用,它能够满足无人驾驶应用的低时延、高速率和实时控制等需求,进一步推动无人驾驶车联网技术。 5G路由器具备低时延…

从 AGP 4.1.2 到 7.5.1——XmlParser、GPathResult、QName 过时

新年首发, 去年的问题,今年解决~ 问题 & 排查 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task :app:processCommonReleaseManifest. > org.xml.sax.SAXParseException; lineNumber: 1; columnNu…

【申请体验Sora】OpenAI Red Teaming Network application

网址:https://openai.com/form/red-teaming-network 使用Gmail , 国家选美国 两个问题: Why are you interested in joining the OpenAI Red Teaming Network? I’m eager to experience the powerful allure of Sora, which I believe wi…

postgresql 文件结构(一) 数据库、表对应的文件

1、问题 甲方要求提供数据库数据量大小,由于各个业务数据库共用一个postgres,因此想把每个数据库占用的空间都统计一下。 2、查找物理存储文件目录 如下图所示,可以查询表、库的物理存储文件名称 -- 查询表对应的文件 select oid,relname…

leetcode 01背包问题

典型的01背包问题可以暴力求解,直接将所有可能全部遍历然后挑选符合条件的即可,但这样时间复杂度过高,有2的n次方。 所以我们在这里采用动态规划的方式来做,并且,我们可以采用二维数组或者一维数组来做。 二维数组&a…

供水管网管道爆管事故发生原因及控制措施

经济的快速发展及城镇化的不断推进使得我国的城镇数量及规模都在不断地扩大。供水系统是城镇基础设施中 的重要的一环。现今在我国各城市中已经建立了相对完善的城市供水管网体系。但是在供水管网运行过程中爆管问题时 有发生,从而对城市用水的正常供应以及民众的正…

Redis 缓存(Cache)

什么是缓存 缓存(cache)是计算机中的一个经典的概念在很多场景中都会涉及到。 核心思路就是把一些常用的数据放到触手可及(访问速度更快)的地方,方便随时读取。 这里所说的“触手可及”是个相对的概念 我们知道,对于硬件的访问速度来说,通常…

vue3实现瀑布流布局组件

先看效果图 直接上代码 utils.js // 用于模拟接口请求 export const getRemoteData (data 获取数据, time 2000) > {return new Promise((resolve) > {setTimeout(() > {console.log(模拟获取接口数据, data)resolve(data)}, time)}) }// 获取数组随机项 export…

给label-studio 配置sam(segment anything)ml 记录

给label-studio 配置sam(segment anything)ml 后端记录 配置ml后台下载代码下载模型文件创建环境模型转换后端服务启动 配置label-studio 前端配置模型后端连接配置标注模板标注界面使用 参考链接 配置ml后台 下载代码 git clone https://github.com/H…

AT24C02(I2C总线)通信的学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、存储器介绍二、AT24C02芯片二、I2C总线I2C电路规范I2C时序结构I2C数据帧AT24C02数据帧 总结 前言 学习AT24C02(I2C总线)芯片 一、存储器介绍 RAM&#xf…

QT-地形3D

QT-地形3D 一、 演示效果二、关键程序三、下载链接 一、 演示效果 二、关键程序 #include "ShaderProgram.h"namespace t3d::core {void ShaderProgram::init() {initializeOpenGLFunctions();loadShaders(); }void ShaderProgram::addShader(const QString &fil…

计算机二级C语言的注意事项及相应真题-5-程序修改

目录 41.累加链表结点数据域中的数据作为函数值返回42.根据整型形参m,计算如下公式的值43.删除数列中值为x的元素44.从N个字符串中找出最长的那个串,并将其地址作为函数值返回45.将两个长度相等的纯数字字符串当作两个加数,求其代表的数值之和…

欢迎来到IT时代----盘点曾经爆火全网的计算机电影

计算机专业必看的几部电影 计算机专业必看的几部电影,就像一场精彩的编程盛宴!《黑客帝国》让你穿越虚拟世界,感受高科技的魅力;《社交网络》揭示了互联网巨头的创业之路,《源代码》带你穿越时间解救世界,这…

【动态规划】【字符串】2167移除所有载有违禁货物车厢所需的最少时间

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 动态规划汇总 LeetCode2167移除所有载有违禁货物车厢所需的最少时间 给你一个下标从 0 开始的二进制字符串 s ,表示一个列车车厢序列。s[i] ‘0’ 表示第 i 节车厢 不 含违…

第五次作业(防御安全)

需求: 1.办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP 不能用来转换) 2.分公司设备可以通过总公司的移动链路和电信链路访问到DMZ区的http服务器 3.分公司内部的客户端可以通过公网地址访问到内部的服务…