【机器学习】 奇异值分解 (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 这样

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VirtualEnv 20.24.0 发布

导读VirtualEnv 20.24.0 现已发布&#xff0c;VirtualEnv 用于在一台机器上创建多个独立的 Python 运行环境&#xff0c;可隔离项目之间的第三方包依赖&#xff0c;为部署应用提供方便&#xff0c;把开发环境的虚拟环境打包到生产环境即可&#xff0c;不需要在服务器上再折腾一…

郑州Sectigo DV通配符SSL证书

我们在浏览器访问网页时或许不会注意到网站是http还是https链接&#xff0c;但是一定能注意到浏览器给我们展示的“不安全”警告&#xff0c;警告访问者网站未加密&#xff0c;访问网站会有泄露隐私的危险。SSL证书能将网站链接由http转为https&#xff0c;对网站传输数据加密&…

【redis】通过配置文件简述redis的rdb和aof

redis的持久化方式有2种&#xff0c;rdb&#xff0c;即通过快照的方式将全量数据以二进制记录在磁盘中&#xff0c;aof&#xff0c;仅追加文件&#xff0c;将增量的写命令追加在aof文件中。在恢复的时候&#xff0c;rdb要更快&#xff0c;但是会丢失一部分数据。aof丢失数据极少…

7.27 作业

1.闹钟 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);tid1 startTimer(1);//显示时间计时器ui->pushButton_2->setEnabled(false);//设置停止为不可用…

sketch如何在线打开?有没有什么软件可以辅助

Sketch 在线打开的方法有哪些&#xff1f;这个问题和我之前回答过的「Sketch 可以在线编辑吗&#xff1f;」是一样的答案&#xff0c;没有。很遗憾&#xff0c;Sketch 没有在线打开的方法&#xff0c;Sketch 也做不到可以在线编辑。那么&#xff0c;那些广告里出现的设计软件工…

【数据挖掘】PCA/LDA/ICA:A成分分析算法比较

一、说明 在深入研究和比较算法之前&#xff0c;让我们独立回顾一下它们。请注意&#xff0c;本文的目的不是深入解释每种算法&#xff0c;而是比较它们的目标和结果。 如果您想了解更多关于PCA和ZCA之间的区别&#xff0c;请查看我之前基于numpy的帖子&#xff1a; PCA 美白与…

LED芯片 VAS1260IB05E 带内部开关LED驱动器 汽车硬灯带灯条解决方案

VAS1260IB05E深力科LED芯片是一种连续模式电感降压转换器&#xff0c;设计用于从高于LED电压的电压源高效驱动单个或多个串联连接的LED。该设备在5V至60V之间的输入电源下工作&#xff0c;并提供高达1.2A的外部可调输出电流。包括输出开关和高侧输出电流感测电路&#xff0c;该…

Cesium态势标绘专题-进攻箭头(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

云计算迎来中场战役,MaaS或将成为弯道超车“新赛点”

科技云报道原创。 没有人能预见未来&#xff0c;但我们可以因循常识&#xff0c;去捕捉技术创新演进的节奏韵脚。 2023年最火的风口莫过于大模型。 2022年底&#xff0c;由美国初创企业OpenAI开发的聊天应用ChatGPT引爆市场&#xff0c;生成式AI成为科技市场热点&#xff0c…

【NLP】使用 Keras 保存和加载深度学习模型

一、说明 训练深度学习模型是一个耗时的过程。您可以在训练期间和训练后保存模型进度。因此&#xff0c;您可以从上次中断的地方继续训练模型&#xff0c;并克服漫长的训练挑战。 在这篇博文中&#xff0c;我们将介绍如何保存模型并使用 Keras 逐步加载它。我们还将探索模型检查…

MCP4725介绍和STM32模拟IC2驱动

一.MCP4725 简单总结为下面几个特点。 1路DAC输出 12位分辨率 I2C 接口&#xff08;标准&#xff0c;快速&#xff0c;高速支持&#xff09; 供电电压2.7-5.5 内部EEPROM存储设置 I2C地址可配置&#xff08;A0&#xff09;&#xff08;A1、A2内置&#xff0c;默认为‘00’&…

NAT详解(网络地址转换)

一句话说清楚它是干什么的&#xff1a; 网络地址转换&#xff1a;是指通过专用网络地址转换为公用地址&#xff0c;从而对外隐藏内部管理的IP地址&#xff0c;它使得整个专用网只需要一个全球IP就可以访问互联网&#xff0c;由于专用网IP地址是可以重用的&#xff0c;所以NAT大…

undefined reference to `__android_log_print‘

报错描述 在 Android NDK 相关的工程构建中&#xff0c;出现报错&#xff1a; undefined reference to __android_log_print’ 翻译成 QM 能理解的话&#xff1a; 在链接阶段&#xff0c; 遇到一个需要被链接的符号 __android_log_print, 但是没有在给出的依赖库里面找到 __an…

HCIP——OSPF优化、拓展配置及选路规则

OSPF优化以及拓展配置 一、OSPF的优化1、汇总域间路由汇总域外路由汇总 2、特殊区域末梢区域完全末梢区域 NSSA非完全末梢区域Totally NSSA(完全的非完全末梢区域) 二、OSPF的拓展配置1、手工认证2、加快收敛3、沉默接口缺省路由 4、路由过滤5、路由控制5.1 修改优先级5.2 修改…

Jenkins从配置到实战(一) - 实现C/C++项目自动化构建

前言 本文章主要介绍了&#xff0c;如何去安装和部署Jenkins&#xff0c;并实现自动拉取项目代码&#xff0c;自动化编译流程。 网站 官网中文网站 下载安装 可以下载这个 安装jenkins前先安装java yum search java|grep jdkyum install java-1.8.0-openjdk 安装jenkins j…

《基于STM32的红外避障小车》

文章目录 前言1、项目简介2、硬件准备3 设计图4 各个模块介绍4.1 主控芯片STM32F103VET6介绍4.2 L298N直流电机驱动模块模块介绍模块原理 4.3 红外传感器 5 具体连接6 效果展示及改进建议实物展示&#xff1a;改进建议 7 源码展示bsp_exti.cbsp_exti.hbsp_led.cbsp_led.hbsp_l2…

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

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

three.js入门二:相机的zoom参数

环境&#xff1a; threejs&#xff1a;129 &#xff08;在浏览器的控制台下输入&#xff1a; window.__THREE__即可查看版本&#xff09;vscodewindowedge 透视相机或正交相机都有一个zoom参数&#xff0c;它可以用来将相机排到的内容在canvas上缩放显示。 要点&#xff1a;…

ClickHouse(一):ClickHouse介绍及OLAP场景特征

目录 1. ClickHouse与其特性 ​​​​​​​2. 什么是ClickHouse ​​​​​​​3. OLAP场景的特征 进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; ​​​​​​​1. ClickHouse与其特性 …

SpringBoot使用Redis对用户IP进行接口限流

使用接口限流的主要目的在于提高系统的稳定性&#xff0c;防止接口被恶意打击&#xff08;短时间内大量请求&#xff09;。 一、创建限流注解 引入redis依赖 <!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId&g…