【机器学习】 奇异值分解 (SVD) 和主成分分析 (PCA)

一、说明

        在机器学习 (ML) 中,一些最重要的线性代数概念是奇异值分解 (SVD) 和主成分分析 (PCA)。收集到所有原始数据后,我们如何发现结构?例如,通过过去 6 天的利率,我们能否了解其构成以发现趋势?

        对于高维原始数据,这变得更加困难。这就像大海捞针。SVD允许我们提取和解开信息。在本文中,我们将详细介绍 SVD 和 PCA。我们假设您具有基本的线性代数知识,包括秩和特征向量。如果您在阅读本文时遇到困难,我建议您先刷新这些概念。在文章的最后,我们将回答上面的利率示例中的一些问题。本文还包含可选部分。请根据您的兴趣水平随意跳过它。

二、误解(初学者可选)

        我意识到非初学者可能会问的一些常见问题。让我先谈谈房间里的大象。PCA尺寸是否减小?PCA减少了尺寸,但它远不止于此。我喜欢 Wiki 的描述(但如果你不知道 PCA,这只是胡言乱语):

主成分分析 (PCA) 是一种统计过程,它使用正交变换将一组可能相关的变量(每个实体都具有各种数值)的观测值转换为一组线性不相关的变量值,称为主成分。

        从简化的角度来看,PCA 将数据线性转换为彼此不相关的新属性。对于ML,将PCA定位为特征提取可能使我们能够比降维更好地探索其潜力。

        SVD 和 PCA 有什么区别?SVD 为您提供了将矩阵对角化为易于操作和分析的特殊矩阵的整个九码。它为将数据解开为独立组件奠定了基础。PCA 跳过不太重要的组件。显然,我们可以使用 SVD 通过截断原始 SVD 矩阵中不太重要的基向量来查找 PCA。

四、矩阵对角化

        在关于特征值和特征向量的文章中,我们描述了一种将 n × n 方阵 A 分解为

例如

        如果 A 是方阵,A 具有 n 个线性独立的特征向量,则矩阵可以对角化。现在,是时候使用 SVD 为所有矩阵开发解决方案了。

五、奇异向量和奇异值

        矩阵AATATA在线性代数中非常特殊。考虑任何m×n矩阵A,我们可以将其与AT相乘,分别形成AATATA。这些矩阵是

  • 对称
  • 广场
  • 至少为正半定(特征值为零或正),
  • 两个矩阵具有相同的正特征值,并且
  • 两者都具有与 A 相同的等级 r

        此外,我们在 ML 中经常使用的协方差矩阵采用这种形式。由于它们是对称的,我们可以选择其特征向量是正交的(以单位长度彼此垂直)——这是对称矩阵的基本属性。

        让我们介绍一些SVD中经常使用的术语。我们将 AAT 的特征向量命名为 ui  ATA 为 vi,并将这些特征向量集 u 和 称为 A 的奇异向量。两个矩阵具有相同的正特征值。这些特征值的平方根称为奇异值

        到目前为止没有太多的解释,但让我们先把所有东西放在一起,接下来会解释。我们将向量 ui 连接成 U将 vi 连接到 以形成正交矩阵。

        由于这些向量是正交的,因此很容易证明 U 和 V 服从

六、SVD

        让我们先从困难的部分开始。SVD 指出任何矩阵 A 都可以分解为:

        其中 U 和 V 是正交矩阵,正交特征向量分别从 AAT 和 ATA 中选择。S 是一个对角矩阵,其中 r 元素等于 AAT 或 AT A 的正特征值的根(无论如何,两个矩阵具有相同的正特征值)。对角线元素由奇异值组成。

i.e. an m× n matrix can be factorized as:

        我们可以按不同的顺序排列特征向量以产生 U 和 V。为了标准化解决方案,我们对特征向量进行排序,使特征值较高的向量优先于特征值较小的向量。

        与特征分解相比,SVD 适用于非平方矩阵。U 和 V 对于 SVD 中的任何矩阵都是可逆的,它们是我们喜欢的正交矩阵。如果没有证据,我们还告诉您奇异值比特征值更稳定。

示例(示例来源)

在走得太远之前,让我们用一个简单的例子来演示它。这将使事情变得非常容易理解。

我们计算:

这些矩阵至少是正半定的(所有特征值都是正数或零)。如图所示,它们具有相同的正特征值(25 和 9)。下图还显示了它们对应的特征向量。

奇异值是正特征值的平方根,即 5 和 3。因此,SVD 组成是

七、证明(可选)

        为了证明 SVD,我们希望用以下公式求解 U、S  V

我们有 3 个未知数。希望我们能用上面的 3 个方程来解决它们。A 的转置是

会意

我们计算 ATA

最后一个方程等效于矩阵 (ATA) 的特征向量定义。 我们只是将所有特征向量放在一个矩阵中。

与 VS² 等于

V 保存 ATA 的所有特征向量 viS 保存 ATA 所有特征值的平方根。我们可以对AAT重复相同的过程,并返回类似的等式。

        现在,我们只需求解 U、V  S

        并证明定理。

八、回顾

        以下是 SVD 的回顾。

哪里

九、重新制定 SVD

        由于矩阵 V 是正交的,因此 VTV 等于 I。我们可以将 SVD 方程重写为:

        这个等式在uivi之间建立了重要的关系。

        召回

应用 AV = US

这可以概括为

等同于

SVD分解可以识别为ui和vi的一系列外积

SVD的这种公式化是理解A的组成部分的关键。它提供了一种将 m × n 个纠缠数据数组分解为 r 个组件的重要方法。由于 ui 和 vi 是单位向量,我们甚至可以忽略奇异值 σi 非常小的项 (σiuiviT)。(我们稍后会回到这个问题。

让我们首先重用之前的示例并展示它是如何工作的。

上面的矩阵 A 可以分解为

十、列空间、行空间、左空空间和空空间(可选 - 适用于高级用户)

        接下来,我们将看看U&V由什么组成。假设 A 是秩 r 的 m × n 矩阵。ATA 将是一个 n×n 对称矩阵。所有对称矩阵都可以选择 n 个正交特征向量 vj。由于 Avi = σiui  vj 是 ATA 的正交特征向量,我们可以将 uiTuj 的值计算为

        它等于零。即 UI  uj 彼此正交。如前所述,它们也是AAT的特征向量。

        从 Avi = σui,我们可以认识到 ui 是 A 的列向量

        因为 A 的秩为 r,我们可以选择这些 r ui 向量作为正交向量。那么AAT剩余的m-r正交特征向量是什么?由于 A 的左零空间与列空间正交,因此选择它们作为剩余的特征向量是很自然的。(左边的零点 NAT) 是 ATx=0 中 x 的空间跨度。类似的参数也适用于 ATA 的特征向量。因此

        回到以前的 SVD 方程,从

        我们只是将特征向量放回左零空间和零空间中。

十一、摩尔-彭罗斯伪逆

        对于线性方程组,我们可以计算方阵 A 的逆函数来求解 x

        但并非所有矩阵都是可逆的。此外,在 ML 中,在数据中存在噪声的情况下,不太可能找到精确的解决方案。我们的目标是找到最适合数据的模型。为了找到最合适的解决方案,我们计算了一个伪逆

        这最大限度地减少了下面的最小二乘误差。

        x的解可以估计为,

        在线性回归问题中,x 是我们的线性模型,A 包含训练数据,b 包含相应的标签。我们可以通过以下方式解决 x

下面是一个示例。

十二、方差和协方差

        在 ML 中,我们识别模式和关系。我们如何识别数据中属性的相关性?让我们从一个例子开始讨论。我们对 12 人的身高和体重进行抽样并计算他们的平均值。我们通过用其平均值减去原始值来将其归零。例如,下面的矩阵 A 保存调整后的零中心高度和体重。

        当我们绘制数据点时,我们可以认识到身高和体重是正相关的。但是,我们如何量化这种关系呢?

        首先,房产有何不同?我们可能从高中开始学习差异。让我们介绍一下它的表弟。样本方差定义为:

        请注意,它在方差中除以 n-1 而不是 n。在样本大小有限的情况下,样本均值存在偏差并与样本相关。与该均值的平均平方距离将小于与一般总体的平均平方距离。样本协方差 S² 除以 n-1 补偿较小的值,并且可以证明是方差 σ² 的无偏估计。(证明不是很重要,所以我在这里简单地提供一个证明的链接。

十三、协方差矩阵

        方差衡量变量在自身之间如何变化,而协方差在两个变量(a 和 b)之间变化。

        我们可以将所有这些可能的协方差组合保存在一个称为协方差矩阵 Σ 的矩阵中。

我们可以用简单的矩阵形式重写它。

对角元素保存各个变量(如高度)的方差,非对角元素保存两个变量之间的协方差。现在让我们计算样本协方差。

正样本协方差表示体重和身高呈正相关。如果它们负相关,则为负,如果它们是独立的,则为零。

协方差矩阵和SVD

我们可以使用 SVD 来分解样本协方差矩阵。由于σ₂与σ相比相对较小,我们甚至可以忽略σ₂项。当我们训练 ML 模型时,我们可以对体重和身高执行线性回归以形成一个新属性,而不是将它们视为两个分离且相关的属性(纠缠数据通常会使模型训练更加困难)。

U₁ 具有一个重要的重要性。它是 S 的主要成分。

SVD 上下文中的样本协方差矩阵有几个属性:

  • 数据的总方差等于样本协方差矩阵 S 的迹线,该迹线等于 S 奇异值的平方和。有了这个,我们可以计算如果我们去掉较小的σi项,损失的方差比率。 这反映了如果我们消除它们会丢失多少信息。

  • S 的第一个特征向量 u₁ 指向数据最重要的方向。在我们的示例中,它量化了体重和身高之间的典型比例。

垂直最小二乘法

  • 误差计算为从采样点到 u₁ 的垂直平方距离之和,是使用 SVD 时的最小值。

财产

协方差矩阵不仅是对称的,而且是正半定的。由于方差为正或零,因此下面的uTVu始终大于或等于零。通过能量测试,V是正半定的。

因此

通常,在一些线性变换 A 之后,我们想知道转换后数据的协方差。这可以使用转换矩阵 A 和原始数据的协方差来计算。

相关矩阵

相关矩阵是协方差矩阵的缩放版本。相关矩阵将变量标准化(缩放)为标准差为 1。

如果变量的尺度非常不同,则将使用相关矩阵。不良缩放可能会损害梯度下降等 ML 算法。

十四、可视化

        到目前为止,我们有很多方程式。让我们可视化 SVD 的作用并逐步开发洞察力。SVD 将矩阵 A 分解为 USVT。 将 A 应用于矢量 x (Ax) 可以可视化为在 x 上执行旋转 (VT)、缩放 (S) 和另一个旋转 (U)。

如上所示,V 的特征向量 vi 转换为:

或以全矩阵形式

演示 r = m < n

十五、SVD的见解

如前所述,SVD 可以表述为

由于 ui 和 vi 具有单位长度,因此决定每个项的重要性的最主要因素是奇异值 σi。我们特意按降序对σi进行排序。如果特征值变得太小,我们可以忽略剩余的项(+σiuiviT + ...)。

这种公式化有一些有趣的含义。例如,我们有一个矩阵,其中包含不同投资者交易的股票收益率的回报。

作为基金经理,我们可以从中得到什么信息?寻找模式和结构将是第一步。也许,我们可以确定收益率最高的股票和投资者的组合。SVD 将 n × n 个矩阵分解为 r 个分量,奇异值 σi 表明其显著性。将此视为一种将纠缠和相关属性提取到较少的主方向上且没有相关性的方法。

如果数据高度相关,我们应该期望许多σi值很小并且可以忽略。

在我们前面的示例中,体重和身高高度相关。如果我们有一个包含 1000 人的体重和身高的矩阵,SVD 分解中的第一个分量将占主导地位。u₁ 矢量确实展示了我们之前讨论过的这 1000 人中体重和身高之间的比率。

十六、主成分分析

        从技术上讲,SVD 分别在方差最大的方向上提取数据。PCA 是将 m 维输入特征映射到 k 维潜在因子(k 个主成分)的线性模型。如果我们忽略不太重要的项,我们将删除不太关心的组件,但保留具有最高方差(最大信息)的主方向。

考虑下面显示为蓝点的三维数据点。它可以很容易地用飞机近似。

您可能很快意识到,我们可以使用 SVD 来查找矩阵 W。考虑下面位于二维空间上的数据点。

SVD 选择最大化其输出方差的投影。因此,如果方差较高,PCA 将选择蓝线而不是绿线。

As indicated below, we keep the eigenvectors that have the top kth highest singular value.

利率

让我们通过追溯来自美国财政部的利率数据来更深入地说明这个概念。9种不同利率的基点(从3个月,6个月,...至 20 年)收集连续 6 个工作日以上,A 存储与前一个日期的差额。在此期间,A 的元素也已经减去其平均值。即它是以零为中心的(跨其行)。

样本协方差矩阵等于 S = AAT/(5–1)。

现在我们有了想要分解的协方差矩阵 S。SVD 分解为

从 SVD 分解中,我们意识到我们可以专注于前三个主组件。

        如图所示,第一个主成分与所有到期期限的每日变化的加权平均值相关。第二个主成分调整对债券到期期限敏感的每日变化。(第三个主成分可能是曲率——二阶导数。

        我们在日常生活中非常了解利率变化与到期日之间的关系。因此,主要成分再次证实了我们对利率行为的看法。但是,当我们看到不熟悉的原始数据时,PCA对于提取数据的主要组成部分以找到底层信息结构非常有帮助。这可能会回答一些关于如何在大海捞针中找到针的问题。

十七、技巧

        在执行 SVD 之前缩放要素。

        比如说,我们想保留 99% 的方差,我们可以选择 k 这样

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

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

相关文章

华为OD机试真题 JavaScript 实现【小朋友排队】【2023 B卷 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、JavaScript算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试&am…

Vue引入

1. vue引入 第一种方法&#xff1a;在线引入 <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 第二种方法&#xff1a;本地引入 2. 语法学习 el用于绑定id&#xff0c;data用于定义数据如下例题 <!DOCTYPE html> <html…

GFS分布式文件系统概述以及集群部署

目录 一、GlusterFS简介 二、GlusterFS特点 1、扩展性和高性能 2、高可用性 3、全局统一命名空间 4、弹性卷管理 5、基于标准协议 三、GlusterFS术语 四、GlusterFS构成 五、后端存储如何定位文件 六、GFS支持的七种卷 1、分布式卷&#xff08;Distribute volume&a…

JAVA- SQL注入案例(黑马程序员)和避免 超级详细

文章目录 sql注入准备1.创建应该新的数据库用于测试&#xff1b;2.修改配置3.启动jar包4.打开网页测试5.测试sql注入 sql注入避免1. java中的登录逻辑代码2.演示sql注入3.原因5.参数化查询-PreparedStatement SQL注入是什么&#xff1f; SQL 注入&#xff08;SQL Injection&…

Kubernetes系列

文章目录 1 详解docker,踏入容器大门1.1 引言1.2 初始docker1.3 docker安装1.4 docker 卸载1.5 docker 核心概念和底层原理1.5.1 核心概念1.5.2 docker底层原理 1.6 细说docker镜像1.6.1 镜像的常用命令 1.7 docker 容器1.8 docker 容器数据卷1.8.1 直接命令添加1.8.2 Dockerfi…

cocosCreator 之 2D物理

版本&#xff1a; v3.4.0 简介 cocosCreator 内置了 2D 物理系统 和 3D 物理系统&#xff0c;开发者可以通过项目 -> 项目设置 -> 功能裁切来配置物理系统相关&#xff1a; 本文仅对2D 物理系统 做下说明和遇到的问题汇总。该物理系统在cocosCreator的功能裁切中&#x…

android 如何分析应用的内存(十三)——perfetto

android 如何分析应用的内存&#xff08;十三&#xff09; 本篇文章是native内存的最后一篇文章——perfetto perfetto简介 从2018年始&#xff0c;android开发者峰会正式推出perfetto工具。从此perfetto成为安卓最重要的工具之一。在2018年以前&#xff0c;android使用syst…

微信小程序tab加列表demo

一、效果 代码复制即可使用&#xff0c;记得把图标替换成个人工程项目图片。 微信小程序开发经常会遇到各种各样的页面组合&#xff0c;本demo为list列表与tab组合&#xff0c;代码如下&#xff1a; 二、json代码 {"usingComponents": {},"navigationStyle&q…

matlab使用教程(6)—线性方程组的求解

进行科学计算时&#xff0c;最重要的一个问题是对联立线性方程组求解。在矩阵表示法中&#xff0c;常见问题采用以下形式&#xff1a;给定两个矩阵 A 和 b&#xff0c;是否存在一个唯一矩阵 x 使 Ax b 或 xA b&#xff1f; 考虑一维示例具有指导意义。例如&#xff0c;方程 …

20.3 HTML 表格

1. table表格 table标签是HTML中用来创建表格的元素. table标签通常包含以下子标签: - th标签: 表示表格的表头单元格(table header), 用于描述列的标题. - tr标签: 表示表格的行(table row). - td标签: 表示表格的单元格(table data), 通常位于tr标签内, 用于放置单元格中的…

奥迪A3:最新款奥迪A3内饰设计及智能科技应用

奥迪A3一直以来都是奥迪的入门级车型&#xff0c;但这并不意味着它在科技和内饰方面会有所退步。最新款奥迪A3的内饰设计和智能科技应用让人们再次惊叹奥迪的创新能力。 内饰设计 奥迪A3最新款的内饰设计引入了奥迪最新的设计元素&#xff0c;比如8.8英寸的中控显示屏&#xf…

干货 ,ChatGPT 4.0插件Review Reader,秒杀一切选品神器

Hi! 大家好&#xff0c;我是专注于AI项目实战的赤辰&#xff0c;今天继续跟大家介绍另外一款GPT4.0插件Review Reader&#xff08;评论阅读器&#xff09;。 做电商领域的小伙伴们&#xff0c;都知道选品分析至关重要&#xff0c;可以说选品决定成败&#xff0c;它直接关系到产…

【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文

13 Apr 2022 论文&#xff1a;https://arxiv.org/abs/2112.10752 代码&#xff1a;https://github.com/CompVis/latent-diffusion 文章目录 PS基本概念运作原理 AbstractIntroductionRelated WorkMethodPerceptual Image CompressionLatent Diffusion Models Conditioning Mec…

申请软件著作权都有什么好处?

随着社会的发展&#xff0c;知识产权保护意识对于公司而言尤为重要&#xff0c;对自己的权利进行最大限度的保护&#xff0c;以防止被别有用心的人侵权。那么&#xff0c;申请软著的好处到底是什么?软著有什么用呢? 无形资产软著是一种无形的知识产权&#xff0c;是开发者智慧…

Spark-对RDD的理解

RDD是分布式弹性数据集。 RDD有五大特性&#xff1a; 一组分区&#xff0c;每个RDD都会被分为多个分区&#xff0c;这些分区运行在集群的不同节点上&#xff0c;分区数决定并行计算的数量。一个计算每个分区的函数&#xff0c;就是计算逻辑。RDD之间的依赖关系&#xff0c;就…

大数据技术之Clickhouse---入门篇---数据类型、表引擎

星光下的赶路人star的个人主页 今天没有开始的事&#xff0c;明天绝对不会完成 文章目录 1、数据类型1.1 整型1.2 浮点型1.3 布尔型1.4 Decimal型1.5 字符串1.6 枚举类型1.7 时间类型1.8 数组 2、表引擎2.1 表引擎的使用2.2 TinyLog2.3 Memory2.4 MergeTree2.4.1 Partition by分…

简单分享婚宴预订小程序怎么做

婚宴预订小程序需要具备一些功能&#xff0c;通过这些功能&#xff0c;新人可以更方便地选择婚宴场地、预订服务&#xff0c;并且更好地规划自己的婚礼。 1. 场地浏览与选择 婚宴预订小程序可以展示多个婚宴场地的照片和详细信息&#xff0c;包括容纳人数、场地设施、价格等。…

无涯教程-Lua - Arrays(数组)

数组是对象的有序排列&#xff0c;可以是包含行集合的一维数组&#xff0c;也可以是包含多行和多列的多维数组。 在Lua中&#xff0c;数组是使用带有整数的索引表实现的。数组的大小不是固定的&#xff0c;并且可以根据无涯教程的要求(取决于内存限制)来增长。 一维数组 一维…

8.1作业

文件IO函数实现拷贝文件。子进程先拷贝后半部分&#xff0c;父进程再拷贝前半部分&#xff0c;允许使用sleep函数 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<head.h> int main(int argc, const char *argv[]) {pid_t cpidfo…

指针初阶(1)

文章目录 目录1. 指针是什么2. 指针变量的类型2.1 指针变量-整数2.2 指针变量的解引用 3. 野指针3.1 野指针成因3.2 如何规避野指针 4. 指针运算4.1 指针-整数4.2 指针-指针4.3 指针的关系运算 附&#xff1a; 目录 指针是什么指针变量的类型野指针指针运算指针和数组二级指针…