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

news2024/9/25 9:38:26

一、说明

        在机器学习 (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.coloradmin.cn/o/796694.html

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

相关文章

Java后端开发 —— 记录一个spring入门案例

前言 最近荔枝在转技术栈呢&#xff0c;后端Java零零散散也学了半个月&#xff0c;在一边总结blog输出的同时一遍实操项目。最近学完JavaSE部分的重点之后荔枝来入手spring框架&#xff0c;说起spring其实大家耳熟能详的就想起IoC和AOP了&#xff0c;但在这篇文章荔枝主要还是梳…

Ubuntu22.04 安装Anaconda

文章目录 1.下载Anaconda2.安装Anaconda3.启动环境4.常用命令4.1创建虚拟环境4.2查询当前系统conda虚拟环境4.3挂载虚拟环境4.4退出虚拟环境4.5查看已安装的工具包4.6删除虚拟环境 1.下载Anaconda &#xff08;1&#xff09;下载地址&#xff1a;https://mirrors.tuna.tsinghu…

低代码开发重要工具:jvs-flow(流程引擎)审批功能配置说明

流程引擎场景介绍 流程引擎基于一组节点与执行界面&#xff0c;通过人机交互的形式自动地执行和协调各个任务和活动。它可以实现任务的分配、协作、路由和跟踪。通过流程引擎&#xff0c;组织能够实现业务流程的优化、标准化和自动化&#xff0c;提高工作效率和质量。 在企业…

无涯教程-jQuery - jQuery.ajax( options )方法函数

jQuery.ajax(options)方法使用HTTP请求加载远程页面。 $.ajax()返回它创建的XMLHttpRequest。在大多数情况下&#xff0c;您不需要该对象直接进行操作&#xff0c;但是如果您需要手动中止请求&#xff0c;则可以使用该对象。 jQuery.ajax( options ) - 语法 $.ajax( options…

Talk | 卡内基梅隆大博士生侯博涵:MLC-LLM-机器学习编译与在大语言模型上的应用

本期为TechBeat人工智能社区第516期线上Talk&#xff01; 北京时间7月26日(周三)20:00&#xff0c; 卡内基梅隆大博士生—侯博涵的Talk已经准时在TechBeat人工智能社区开播了&#xff01; 他与大家分享的主题是: “MLC-LLM-机器学习编译与在大语言模型上的应用”&#xff0c;与…

服务器VNC软件与服务器中Sentaurus TCAD软件相关问题汇总(持续更新中)

目录 license失效问题个人端口的VNC无法连接/系统页面失效&#xff08;无最小化、关闭等&#xff09;也可以用该方法重启VNC后端口发生混乱/断电后个人端口无法连接操作的步骤在Centos环境下给Sentaurus TCAD安装编辑器jeditSSH重启VNC rootCentos查看NETMASK,GATWAY,DNS licen…

基于vue3.0实现vr全景编辑器

随着社会的不断发现&#xff0c;现实生活中有很多时候会使用到全景现实&#xff0c;比如房地产行业vr看房&#xff0c;汽车行业vr看车之类的&#xff0c;全景可视化真实还原了现场的场景&#xff0c;真正做到沉浸式体验。 现在我们基于vue3.0版本开发出了一款沉浸式的编辑器&a…

拿捏 ---> 水仙花数+变种水仙花数

文章目录 题目描述(水仙花数)思路代码示例方法一方法二 题目描述&#xff08;变种水仙花数&#xff09;思路代码示例 题目描述(水仙花数) 求出0&#xff5e;1000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和确好等于该数本身&a…

ThinkPHP8知识详解:ThinkPHP8特性和功能介绍

ThinkPHP8 是一个开源的 PHP 框架&#xff0c;采用了面向对象编程和 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;提供了丰富的功能和易于使用的 API&#xff0c;是一个适用于 web 应用开发的高效框架。 ThinkPHP8具有许多强大的特性和功能&#xf…

k8s容器日志收集方案

背景 由于以下容器本身特性和现有日志采集工具的缺陷&#xff0c;开发者在收集Kubernetes分布式集群日志时常常遇到困扰&#xff1a; 容器本身特性&#xff1a; 采集目标多&#xff1a;容器本身的特性导致采集目标多&#xff0c;需要采集容器内日志、容器stdout。对于容器…

三分钟带你了解音频转文字哪个好用

在数字世界的角落里&#xff0c;有一项神奇的技术——音频转文字。它隐藏着巨大的力量和惊人的能力。它如同一位神奇的文字解码师&#xff0c;能够将听觉的旋律转化为视觉的符号&#xff0c;让语言的美妙之音在屏幕上跃然纸上。接下来&#xff0c;让我带你进入这个充满奇迹的数…

常用程序分段,编译流程

实际这些概念也要根据不同编译器有些微的区分&#xff0c;常用的结构模型应该就是LINUX程序分段以及GNU编译链的编译留成。 先看编译流程 程序分段: 堆存储和栈存储的区别 堆和栈的区别主要有五大点&#xff0c;分别是&#xff1a; 1、申请方式的不同。栈由系统自动分配&…

tinkerCAD案例:13.Ruler - Cm 标尺 - 厘米

tinkerCAD案例&#xff1a;13.Ruler - Cm 标尺 - 厘米 原文 While it’s fun to create things at any size you wish, sometimes you need to measure an exact distance. In this lesson you will learn to create an accurate ruler that measures centimeters. 虽然创建任…

六、代理模式

文章目录 一、代理模式1、代理模式的好处和缺点1.1 代理模式理解加深 一、代理模式 为什么要学习代理模式&#xff1f; 代理模式是Spring AOP 以及 Spring MVC 的底层&#xff01;&#xff01;并且还是 JAVA 的23种设计模式之一&#xff01;&#xff01; 代理模式的分类&#…

【TI毫米波雷达笔记】IWR6843AOP工程模板创建 cannot find file “libsleep_xwr68xx.aer4f“等解决方案

【TI毫米波雷达笔记】IWR6843AOP工程模板 cannot find file “libsleep_xwr68xx.aer4f” 解决方案 我在建立工程时 发现了一个问题 参考&#xff1a; blog.csdn.net/qq_16660871/article/details/126246572报错为 cannot find file "libsleep_xwr68xx.aer4f"最后检…

【Linux】深入理解缓冲区

目录 什么是缓冲区 为什么要有缓冲区 缓冲区刷新策略 缓冲区在哪里 手动设计一个用户层缓冲区 什么是缓冲区 缓冲区本质上一块内存区域&#xff0c;用来保存临时数据。缓冲区在各种计算任务中都广泛应用&#xff0c;包括输入/输出操作、网络通信、图像处理、音频处理等。 …

Nodejs 第一章(介绍)

概述 nodejs 并不是JavaScript应用&#xff0c;也不是编程语言&#xff0c;因为编程语言使用的JavaScript,Nodejs是 JavaScript的运行时。 Nodejs是构建在V8引擎之上的&#xff0c;V8引擎是由C/C编写的&#xff0c;因此我们的JavaSCript代码需要由C/C转化后再执行。 NodeJs 使…

看了这篇文章,我也会用grid布局了

grid网格布局 网格布局是由一系列水平及垂直的线构成的一种布局模式&#xff0c;使用网格&#xff0c;我们能够将设计元素进行排列&#xff0c;帮助我们设计一系列具有固定位置以及宽度的元素的页面&#xff0c;使我们的网站页面更加统一。 它将网页划分成一个个网格&#xff…

Cilium系列-6-从地址伪装从IPtables切换为eBPF

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing)完全替换 KubeProx…

探索大型语言模型的开源人工智能基础设施:北京开源AI Meetup回顾

原文参见Explore open source AI Infra for Large Language Models: Highlights from the Open Source AI Meetup Beijing | Cloud Native Computing Foundation 背景介绍&#xff1a; 最近&#xff0c;在 ChatGPT 的成功推动下&#xff0c;大型语言模型及其应用程序的流行度激…