特征值分解(Eigen Value Decomposition,EVD)、奇异值分解(Singular Value Decomposition,SVD)原理、公式推导及应用

2023-10-26

1 正交矩阵&正交变换

  • 正交变换是保持图形形状和大小不变的几何变换,包含旋转、平移、轴对称及这些变换的复合形式,正交变换可以保持向量的长度和向量之间的角度不变。特别的,标准正交基经正交变换后仍为标准正交基。
  • 在有限维的空间中,正交变换在标准正交基下的矩阵表示为正交矩阵,其所有行和所有列也都各自构成一组标准正交基。
  • 同时,正交变换的逆变换也是正交变换,后者的矩阵表示是前者矩阵表示的逆。

2 特征值分解(Eigen Value Decomposition,EVD)

2.1 定义

【百度百科】特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对可对角化矩阵才可以施以特征分解。

如果矩阵 A A A是一个 m × m m \times m m×m的实对称矩阵(即 A = A T A=A^T A=AT),那么它可以被分解为如下形式:

A = Q Λ Q T = Q [ λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ m ] Q T (2-1) A=Q \Lambda Q^T=Q \begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_m \end{bmatrix} Q^T \tag{2-1} A=QΛQT=Qλ1000λ2000λmQT(2-1)

其中 Q Q Q为标准正交阵,即有 Q Q T = I QQ^T=I QQT=I Λ \Lambda Λ m × m m \times m m×m的对角矩阵, λ i \lambda_i λi称为特征值, Q Q Q为特征矩阵, Q Q Q中的列向量 q i q_i qi称为特征向量。

2.2 推导

假设存在 m × m m \times m m×m的满秩对称矩阵 A A A,它有 m m m个不同的特征值 λ i ( i = 1 , 2 , . . . , m ) \lambda_i(i=1,2,...,m) λi(i=1,2,...,m),对应的特征向量为 x i ( i = 1 , 2 , . . . , m ) x_i(i=1,2,...,m) xi(i=1,2,...,m) x i x_i xi m m m维列向量),则有:

A x 1 = λ 1 x 1 A x 2 = λ 2 x 2 ⋯ A x m = λ m x m (2-2) \begin{array}{cc} Ax_1=\lambda_1 x_1 \\ Ax_2=\lambda_2 x_2 \\ \cdots \\ Ax_m=\lambda_m x_m \end{array} \tag{2-2} Ax1=λ1x1Ax2=λ2x2Axm=λmxm(2-2)

U = [ x 1 x 2 ⋯ x m ] U=\begin{bmatrix} x_1 & x_2 & \cdots & x_m \end{bmatrix} U=[x1x2xm],则上式可以表示为矩阵形式:

A U = U Λ (2-3) AU=U\Lambda \tag{2-3} AU=UΛ(2-3)

Λ = [ λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ m ] (2-4) \Lambda= \begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_m \end{bmatrix} \tag{2-4} Λ=λ1000λ2000λm(2-4)

进一步就可以得到A的特征值分解:

A = U Λ U − 1 = U Λ U T (2-5) A=U\Lambda U^{-1}=U\Lambda U^T \tag{2-5} A=UΛU1=UΛUT(2-5)


3 奇异值分解(Singular Value Decomposition,SVD)

3.1 定义

【百度百科】奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,奇异值分解则是特征分解在任意矩阵上的推广。在信号处理、统计学等领域有重要应用。

如果 A A A是一个 m × n m \times n m×n阶矩阵,则存在一个分解使得:

A = U Σ V T A=U \Sigma V^T A=UΣVT

其中 U U U V V V分别为 m × m m \times m m×m n × n n \times n n×n的酉矩阵/单位正交矩阵(即 U U T = U T U = I , V V T = V T V = I UU^T=U^TU=I,VV^T=V^TV=I UUT=UTU=IVVT=VTV=I)。 U U U称为左奇异矩阵, V V V称为右奇异矩阵, Σ \Sigma Σ对角线上的元素 σ i \sigma_i σi即为 M M M的奇异值。一般地 Σ \Sigma Σ有如下形式:

Σ = [ σ 1 0 ⋯ 0 0 σ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 0 ] m × n (3-1) \Sigma= \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 0 \end{bmatrix}_{m \times n} \tag{3-1} Σ=σ1000σ20000m×n(3-1)

3.2 推导

在矩阵的特征值分解中,矩阵 A A A的行列维度是相同的,但在实际应用中,矩阵往往是非方阵、非对称的(如点云配准问题等)。为了对这类矩阵进行分解,我们引入奇异值分解(SVD)。

假设矩阵 A A A的维度为 m × n ( m ≠ n ) m \times n (m \not= n) m×n(m=n),虽 A A A不是方阵,但 A A T AA^T AAT A T A A^TA ATA均为方阵,其维度分别为 m × m m \times m m×m n × n n \times n n×n。因此可以对这两个方阵分别进行特征值分解:

A A T = P Λ 1 P T A T A = Q Λ 2 Q T (3-2) AA^T= P \Lambda_1 P^T \\ A^TA= Q \Lambda_2 Q^T \tag{3-2} AAT=PΛ1PTATA=QΛ2QT(3-2)

其中 Λ 1 \Lambda_1 Λ1 Λ 2 \Lambda_2 Λ2均为对角矩阵,且两个方阵具有相同的非零特征值 σ 1 , σ 2 , . . . , σ k {\sigma_1,\sigma_2,...,\sigma_k} σ1,σ2,...,σk,其中 k ≤ m i n ( m , n ) k \leq min(m,n) kmin(m,n)。这样就可以进一步得到奇异值分解的公式:

A = P Λ Q T (3-3) A=P \Lambda Q^T \tag{3-3} A=PΛQT(3-3)

接下来通过更直观的方式对SVD的原理和推导过程进行说明(参考:You Don’t Know SVD (Singular Value Decomposition))。

首先从最简单的二维坐标说起,任何力矢量都可以沿 x x x y y y轴分解:
在这里插入图片描述
这其实就是最简单的SVD,SVD就是将向量分解到正交轴上(正交变换前的正交轴和正交变换后的正交轴)。

如下图,我们将向量 a a a进行分解:
在这里插入图片描述
可以得到3个信息:

  • 投影方向(单位向量 v 1 v_1 v1 v 2 v_2 v2):表示沿着 x x x y y y轴的投影方向,这也可以为其它的正交轴;
  • 投影长度(线段 s a 1 s_{a1} sa1 s a 2 s_{a2} sa2
  • 投影向量( p a 1 p_{a1} pa1 p a 2 p_{a2} pa2):通过投影向量可以反向计算出原始向量 a a a,同时我们可以发现 p a 1 = s a 1 ∗ v 1 p_{a1}=s_{a1}*v_1 pa1=sa1v1 p a 2 = s a 2 ∗ v 2 p_{a2}=s_{a2}*v_2 pa2=sa2v2

那么我们就可以得到一个关键结论:

任何向量都可以表示为:

  • 投影方向的单位矢量( v 1 v_1 v1 v 2 v_2 v2,…)
  • 在投影方向上的长度( s a 1 s_{a1} sa1 s a 2 s_{a2} sa2,…)

将这一结论扩展到多个向量(或点)以及所有维度上,就是SVD所作的事情:

在这里插入图片描述

图. 数据集的一个示例(一个点可以视为通过原点的向量)

我们先从单个向量入手,利用矩阵来处理这看似复杂的问题。因此我们必须找到一种方法来表示使用矩阵进行向量分解的操作。
在这里插入图片描述

图. 向量在倾斜的坐标轴上投影

我们知道,一个向量在另一个向量上的投影长度可以用向量的点积来计算:
在这里插入图片描述

图. 将$a$投影到$v_1$和$v_2$上

上式可以利用矩阵表示为:
在这里插入图片描述

图. 通过为每个单位向量增加一个额外的列,一次写出两个方程

也可以将其扩展为多个点/向量:
在这里插入图片描述

图. 通过为每个点添加额外的行。$S$是包含投影长度的矩阵

添加点 b b b后:
在这里插入图片描述
进一步,将上式扩展为任意多点和维度,有:
在这里插入图片描述

图. n = 点的个数,d = 维数,A = 包含点的矩阵,V = 包含分解轴的矩阵,S = 包含投影长度的矩阵

在这里插入图片描述

在这里插入图片描述

图 这里的点积就是普通的矩阵乘法

这等价于:
在这里插入图片描述

图. 因为V包含标准正交列,它的逆等于它的转置(正交矩阵的性质)

这就是SVD所说的(记住关键结论):

任何向量集(A)都可以用它们在正交轴(V)上的投影长度(S)来表示。

然而,传统的奇异值公式为:
在这里插入图片描述
实际上这也就等价于求解下式的来源:在这里插入图片描述
如果你仔细观察矩阵S,你会发现它包括:

在这里插入图片描述
如果我们能将这些列向量归一化是最好的,也就是说使它们具有单位长度。这是通过将每个列向量除以它的大小来实现的,但是是以矩阵的形式。

但首先,我们来看一个简单的例子,看看这个“除法”是怎么做的:

在这里插入图片描述
假设我们要把M的第一列除以2。我们肯定要乘以另一个矩阵来保持等式:
在这里插入图片描述
很容易证明未知矩阵就是单位矩阵,第一个元素被除数2代替
在这里插入图片描述
第二列除以3现在变成了一个直接的问题把单位矩阵的第二元素换成3
在这里插入图片描述
很明显,这个操作可以推广到任何大小的矩阵。

我们现在想把上面的除法概念应用到矩阵 S S S上。为了归一化 S S S的列向量,我们用它们的大小来除它们
在这里插入图片描述
在上面的例子中,我们对M所做的就是:
在这里插入图片描述
最终我们可以得到奇异值分解的公式:
在这里插入图片描述
当然,为了不分散对核心概念的注意力,省略了一些细节和严格的数学运算。

再来看 U U U Σ \Sigma Σ

在这里插入图片描述
σ \sigma σ呢?为什么我们要用正常化的方式去寻找它们来增加自己的负担呢?

我们已经看到 σ i \sigma_i σi是所有的点,在第 i i i个单位向量 v i v_i vi上投影长度的平方和的平方根。那么这又说明了什么呢?

在这里插入图片描述

图. 红色线段 = v1上的投影。蓝色线段 = v2上的投影。越近的点到一个特定的轴的投影,相应的σ值越大

因为在它们的定义中, σ \sigma σ包含特定轴上投影长度的和,它们表示所有点到那个轴的距离。例如如果 σ 1 > σ 2 \sigma_1 > \sigma_2 σ1>σ2,那么大多数点更接近 v 1 v_1 v1,反之亦然。这在SVD的无数应用中有着巨大的实用价值。


4 SVD的应用

SVD在数据压缩等领域都有应用,具体参考[1][2][3][4]。

参考

[1] https://blog.csdn.net/sjyttkl/article/details/97563819
[2] https://www.zhihu.com/question/34143886/answer/196294308
[3] https://www.cnblogs.com/endlesscoding/p/10033527.html#335555762
[4] https://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html
[5] You Don’t Know SVD (Singular Value Decomposition)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

特征值分解(Eigen Value Decomposition,EVD)、奇异值分解(Singular Value Decomposition,SVD)原理、公式推导及应用 的相关文章

随机推荐

  • 第一个爬虫程序,基于requests和BeautifulSoup

    断断续续学了1年多python 最近总算感觉自己入门了 记录下这几天用requests和BeautifulSoup写的爬虫 python的环境是anaconda pycharm 直接上代码 requires authorization 作者
  • Shopify如何使用Google的站长工具

    Shopify在做SEO的时候 Google为我们提供了一个简单的工具 让我们了解它如何看待您的网站 哪些问题可能会影响您的流量 以及您如何改进网站以获得更好的排名和结果 这个工具就是 Google Search Console 这个工具已
  • 深度优先算法dfs

    转载https blog csdn net u014394715 article details 51192293 深度优先算法 定义 深度优先搜索算法 英语 Depth First Search 简称DFS 是一种用于遍历或搜索树或图的算
  • 小程序字符串提取图片地址src导致苹果手机体验版白屏

    小程序开发中想把一段html字符串里图片的src取出来 这段html字符串如下图 var srcReg lt src ig 正则 var imgarr content match srcReg content就是图中的字符串 得到的imga
  • 微信小程序使用setData修改数组中的指定下标的属性值

    注释的比较详细 就不过做多解释了 index js 获取应用实例 const app getApp Page 这里data就是你当前界面所有的值 包括你后期动态添加的值都在这里 data list 定义数组 number 1 number
  • shell 脚本里的命令嵌套

    shell 脚本里的命令执行 1 在bash中 与 反引号 都是用来作命令替换的 命令替换与变量替换差不多 都是用来重组命令行的 先完成引号里的命令行 然后将其结果替换出来 再重组成新的命令行 与 在操作上 这两者都是达到相应的效果 但是建
  • thinkphp验证规则

    thinkphp6可以通过验证器验证数据表的字段 规则 验证条件加表名 如uniqu admin user 示例如下 protected rule username 用户名 gt require chsDash unique admin u
  • Java基础-匿名内部类

    匿名内部类可以作为方法的实际参数进行传输
  • JavaScript 数组中常用的方法

    添加 push 数组末尾添加 unshift 数组首位添加 splice 1 0 新增内容 再指定位置插入 第二参数为0 表示新增 大于0 表示修改 删除 pop 删除末尾 shift 删除首位 slice 0 1 删除指定数据 不会改变原
  • 《计算机网络 第七版》读后感

    上大学时 计算机网络是必修的一门课程 讲课的老师是学校里很资深的一个教授 非常有耐心 尽管如此 如今的我还是把那些知识都丢的所剩无几了 其实在工作中 就算是普通的程序员 用到计算机网络的相关知识也不算少 比如 Socket 再比如 RTSP
  • FPN网络详解(知识点记录)

    FPN网络详解 特征图金字塔网络FPN Feature Pyramid Networks 是2017年提出的一种网络 FPN主要解决的是物体检测中的多尺度问题 通过简单的网络连接改变 在基本不增加原有模型计算量的情况下 大幅度提升了小物体检
  • matlab拟合函数参数,matlab怎么拟合函数参数?

    你让fx fitresult结果fx就不是函数 而是个cfit类型了 你可以这样做 把参数提取出来 可以用lsqcurvefit 函数或nlinfit 函数拟合 例如 x y 确定参数的初始值是比较繁琐的工作 一般可以用随机函数rand 来
  • 【English】现在完成时高频考点————去了某地考点

    English 现在完成时高频考点 相信很多人 总是忘记 have has been to have has been in have has gone to 这三兄弟的意思以及用法 那么我就带大家复习一下吧 Have Has been t
  • Zabbix设置邮件脚本报警

    搭建环境 CentOS 6 8 Zabbix 3 0 24 一 安装sendmail或者postfix 安装一种即可 yum y install sendmail 安装 service sendmail start 启动 chkconfig
  • 【Linux】“grep -v grep”命令的作用 + 为什么需要使用该命令

    一 简介 我们经常会在shell脚本中见到如下命令 ps ef grep test sever grep v grep wc l 各子命令其作用如下 ps ef 指令用来查询所有进程 grep test server 通过管道来过滤指定 t
  • 北京无线网络服务器,无线网络服务器地址是什么意思

    无线网络服务器地址是什么意思 内容精选 换一换 简介 本文将详细演示如何用Python爬取糗事百科的笑话段子内容 还会讲到爬虫的时候需要重点关注的点 Web抓取是从Internet提取数据的过程 这也称为网络收集或网络数据提取 Python
  • Burpsuite的安装和简单使用

    这个软件在官网上是收费软件 所以我是问同学找的破解版 如果是在官网上购买的可能有些差距 下图是进入破解版的页面 点击那个 run 设置burp的代理地址和端口 在浏览器中设置代理服务器 启动代理 即burpsuite 访问http burp
  • C# Task和异步方法

    ThreadPool中有若干数量的线程 当有任务需要处理时 会从线程池中获取一个空闲的线程来执行任务 任务执行完毕后线程不会销毁 而是被线程池回收以供后续任务使用 当线程池中所有的线程都被占用 又有新任务要处理时 线程池会新建一个线程来处理
  • Android Studio查看SQLite数据库数据

    Android Studio查看SQLite数据库数据 1 下载插件 Database Navigator 2 另存为到桌面 3 测试连接 4 查看连接后的数据
  • 特征值分解(Eigen Value Decomposition,EVD)、奇异值分解(Singular Value Decomposition,SVD)原理、公式推导及应用

    1 正交矩阵 正交变换 正交变换是保持图形形状和大小不变的几何变换 包含旋转 平移 轴对称及这些变换的复合形式 正交变换可以保持向量的长度和向量之间的角度不变 特别的 标准正交基经正交变换后仍为标准正交基 在有限维的空间中 正交变换在标准正