奇异值分解(SVD)原理详解及推导

本文结合矩阵代数知识,详细阐述了矩阵奇异值分解(SVD)的原理,包括正交矩阵、特征分解、EVD及SVD的推导过程,并探讨了SVD在数据降维、压缩以及推荐系统中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



   转载请声明出处http://blog.youkuaiyun.com/zhongkejingwang/article/details/43053513

    在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充的,特别是关于矩阵和映射之间的对应关系。前段时间看了国外的一篇文章,叫A Singularly Valuable Decomposition The SVD of a Matrix,觉得分析的特别好,把矩阵和空间关系对应了起来。本文就参考了该文并结合矩阵的相关知识把SVD原理梳理一下。

   SVD不仅是一个数学问题,在工程应用中的很多地方都有它的身影,比如前面讲的PCA,掌握了SVD原理后再去看PCA那是相当简单的,在推荐系统方面,SVD更是名声大噪,将它应用于推荐系统的是Netflix大奖的获得者Koren,可以在Google上找到他写的文章;用SVD可以很容易得到任意矩阵的满秩分解,用满秩分解可以对数据做压缩。可以用SVD来证明对任意M*N的矩阵均存在如下分解:


这个可以应用在数据降维压缩上!在数据相关性特别大的情况下存储X和Y矩阵比存储A矩阵占用空间更小!

   在开始讲解SVD之前,先补充一点矩阵代数的相关知识。

正交矩阵

   正交矩阵是在欧几里得空间里的叫法,在酉空间里叫酉矩阵,一个正交矩阵对应的变换叫正交变换,这个变换的特点是不改变向量的尺寸和向量间的夹角,那么它到底是个什么样的变换呢?看下面这张图


假设二维空间中的一个向量OA,它在标准坐标系也即e1、e2表示的坐标是中表示为(a,b)'(用'表示转置),现在把它用另一组坐标e1'、e2'表示为(a',b')',存在矩阵U使得(a',b')'=U(a,b)',则U即为正交矩阵。从图中可以看到,正交变换只是将变换向量用另一组正交基表示,在这个过程中并没有对向量做拉伸,也不改变向量的空间位置,加入对两个向量同时做正交变换,那么变换前后这两个向量的夹角显然不会改变。上面的例子只是正交变换的一个方面,即旋转变换,可以把e1'、e2'坐标系看做是e1、e2坐标系经过旋转某个斯塔角度得到,怎么样得到该旋转矩阵U呢?如下

                                                                                       

                                                                  

                                                                   

a'和b'实际上是x在e1'和e2'轴上的投影大小,所以直接做内积可得,then

                                                                                                           

从图中可以看到

                        

所以

                                     

正交阵U行(列)向量之间都是单位正交向量。上面求得的是一个旋转矩阵,它对向量做旋转变换!也许你会有疑问:刚才不是说向量空间位置不变吗?怎么现在又说它被旋转了?对的,这两个并没有冲突,说空间位置不变是绝对的,但是坐标是相对的,加入你站在e1上看OA,随着e1旋转到e1',看OA的位置就会改变。如下图:


如图,如果我选择了e1'、e2'作为新的标准坐标系,那么在新坐标系中OA(原标准坐标系的表示)就变成了OA',这样看来就好像坐标系不动,把OA往顺时针方向旋转了“斯塔”角度,这个操作实现起来很简单:将变换后的向量坐标仍然表示在当前坐标系中。

旋转变换是正交变换的一个方面,这个挺有用的,比如在开发中需要实现某种旋转效果,直接可以用旋转变换实现。正交变换的另一个方面是反射变换,也即e1'的方向与图中方向相反,这个不再讨论。

总结:正交矩阵的行(列)向量都是两两正交的单位向量,正交矩阵对应的变换为正交变换,它有两种表现:旋转和反射。正交矩阵将标准正交基映射为标准正交基(即图中从e1、e2到e1'、e2')

特征值分解——EVD

    在讨论SVD之前先讨论矩阵的特征值分解(EVD),在这里,选择一种特殊的矩阵——对称阵(酉空间中叫hermite矩阵即厄米阵)。对称阵有一个很优美的性质:它总能相似对角化,对称阵不同特征值对应的特征向量两两正交。一个矩阵能相似对角化即说明其特征子空间即为其列空间,若不能对角化则其特征子空间为列空间的子空间。现在假设存在mxm的满秩对称矩阵A,它有m个不同的特征值,设特征值为

                                                                                                   

对应的单位特征向量为

                                                                

则有

                                                                 

进而

                                                               

                                                  

                                                    

所以可得到A的特征值分解(由于对称阵特征向量两两正交,所以U为正交阵,正交阵的逆矩阵等于其转置)

                                                        

这里假设A有m个不同的特征值,实际上,只要A是对称阵其均有如上分解。

矩阵A分解了,相应的,其对应的映射也分解为三个映射。现在假设有x向量,用A将其变换到A的列空间中,那么首先由U'先对x做变换:

                                                                              

U是正交阵U'也是正交阵,所以U'对x的变换是正交变换,它将x用新的坐标系来表示,这个坐标系就是A的所有正交的特征向量构成的坐标系。比如将x用A的所有特征向量表示为:

                                         

则通过第一个变换就可以把x表示为[a1 a2 ... am]':

                           

紧接着,在新的坐标系表示下,由中间那个对角矩阵对新的向量坐标换,其结果就是将向量往各个轴方向拉伸或压缩:

                              

从上图可以看到,如果A不是满秩的话,那么就是说对角阵的对角线上元素存在0,这时候就会导致维度退化,这样就会使映射后的向量落入m维空间的子空间中。

最后一个变换就是U对拉伸或压缩后的向量做变换,由于U和U'是互为逆矩阵,所以U变换是U'变换的逆变换。

因此,从对称阵的分解对应的映射分解来分析一个矩阵的变换特点是非常直观的。假设对称阵特征值全为1那么显然它就是单位阵,如果对称阵的特征值有个别是0其他全是1,那么它就是一个正交投影矩阵,它将m维向量投影到它的列空间中。

根据对称阵A的特征向量,如果A是2*2的,那么就可以在二维平面中找到这样一个矩形,是的这个矩形经过A变换后还是矩形:

                                      

这个矩形的选择就是让其边都落在A的特征向量方向上,如果选择其他矩形的话变换后的图形就不是矩形了!

奇异值分解——SVD

   上面的特征值分解的A矩阵是对称阵,根据EVD可以找到一个(超)矩形使得变换后还是(超)矩形,也即A可以将一组正交基映射到另一组正交基!那么现在来分析:对任意M*N的矩阵,能否找到一组正交基使得经过它变换后还是正交基?答案是肯定的,它就是SVD分解的精髓所在。

   现在假设存在M*N矩阵A,事实上,A矩阵将n维空间中的向量映射到k(k<=m)维空间中,k=Rank(A)。现在的目标就是:在n维空间中找一组正交基,使得经过A变换后还是正交的。假设已经找到这样一组正交基:

                                                               

则A矩阵将这组基映射为:

                                                            

如果要使他们两两正交,即

                                      

根据假设,存在

                                      

所以如果正交基v选择为A'A的特征向量的话,由于A'A是对称阵,v之间两两正交,那么

                                                  

这样就找到了正交基使其映射后还是正交基了,现在,将映射后的正交基单位化:

因为

                  

所以有

                                

所以取单位向量

                                        

由此可得

                

当k < i <= m时,对u1,u2,...,uk进行扩展u(k+1),...,um,使得u1,u2,...,um为m维空间中的一组正交基,即


同样的,对v1,v2,...,vk进行扩展v(k+1),...,vn(这n-k个向量存在于A的零空间中,即Ax=0的解空间的基),使得v1,v2,...,vn为n维空间中的一组正交基,即


则可得到


继而可以得到A矩阵的奇异值分解:

                                                 

                

现在可以来对A矩阵的映射过程进行分析了:如果在n维空间中找到一个(超)矩形,其边都落在A'A的特征向量的方向上,那么经过A变换后的形状仍然为(超)矩形!

vi为A'A的特征向量,称为A的右奇异向量,ui=Avi实际上为AA'的特征向量,称为A的左奇异向量。下面利用SVD证明文章一开始的满秩分解:


利用矩阵分块乘法展开得:


可以看到第二项为0,有

                               


           

则A=XY即是A的满秩分解。

整个SVD的推导过程就是这样,后面会介绍SVD在推荐系统中的具体应用,也就是复现Koren论文中的算法以及其推导过程。


参考文献:A Singularly Valuable Decomposition The SVD of a Matrix

<think>首先,用户的问题是:“我想了解SVD奇异值分解)的数学原理 请问SVD 奇异值分解 数学原理 推导 过程”。这表示用户想知道SVD的数学原理推导过程。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法必须正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考提供的引用: - 引用[1]: SVD奇异值分解数学原理推导完PCA再来看看SVD。概述奇异值分解(singular value decomposition)可以分解任意形状的矩阵,PCA是对方阵操作,所以SVD适用范围更广。A=UΣV^t。 - 引用[2]: 奇异值分解(SVD)原理详解推导SVD不仅是一个数学问题,在工程应用中广泛使用,如PCA和推荐系统。可以用SVD证明任意M*N矩阵的分解。 - 引用[3]: 奇异值分解(SVD)原理详解推导SVD用于降维,推荐系统中的矩阵分解模型。SVD分解形式为A=UΣV^T。 - 引用[4]: 【C++游戏引擎开发】第6篇:SVD的数学原理与实现。步骤3:计算子矩阵的SVD,得到U_sub^T B_sub V_sub = Σ_sub。 这些引用提供了SVD的基本概念、公式和应用。我需要基于这些信息构建一个清晰的推导过程。 SVD的数学原理: - SVD将任意矩阵A(m×n)分解为三个矩阵:A = U Σ V^T。 - 其中U是m×m正交矩阵(左奇异向量),Σ是m×n对角矩阵(奇异值矩阵),V是n×n正交矩阵(右奇异向量)。 - 奇异值是非负实数,通常按降序排列在Σ的对角线上。 推导过程: 1. **目标**:证明任何实矩阵A可以分解为A = U Σ V^T。 2. **关键思想**:考虑A^T A和A A^T。 - A^T A是n×n对称正定或半正定矩阵(因为对于任何向量x,x^T (A^T A) x = (A x)^T (A x) ≥ 0)。 - 类似地,A A^T是m×m对称正定或半正定矩阵。 3. **特征分解**: - 由于A^T A是对称矩阵,它可以特征分解为:A^T A = V Λ V^T,其中V是正交矩阵(特征向量),Λ是对角矩阵(特征值)。 - 特征值λ_i是非负的,因为A^T A是半正定。 - 奇异值σ_i定义为σ_i = √λ_i。 4. **奇异向量**: - 右奇异向量v_i是A^T A的特征向量。 - 左奇异向量u_i定义为u_i = (1/σ_i) A v_i。 5. **构造Σ**: - Σ是m×n对角矩阵,对角线元素是奇异值σ_i。 - 如果m > n,Σ有额外的零行;如果m < n,有额外的零列。 6. **验证分解**: - 证明A V = U Σ。 - 由于V是正交的,A = U Σ V^T。 详细推导步骤: - 计算A^T A的特征值和特征向量。 - 排序特征值降序:λ_1 ≥ λ_2 ≥ ... ≥ λ_r > 0,其中r是A的秩。 - 奇异值σ_i = √λ_i。 - 右奇异向量v_i是A^T A的特征向量。 - 左奇异向量u_i = (1/σ_i) A v_i。 - 对于i > r,奇异值σ_i = 0,u_i可以是零向量或从零空间补全。 - 证明U和V是正交矩阵。 - 然后A = U Σ V^T。 在回答中,我需要使用LaTeX格式: - 行内数学:$A = U \Sigma V^T$ - 独立公式:$$ A = U \Sigma V^T $$ 结构回答: 1. **引言**:介绍SVD是什么,为什么重要。 2. **数学原理**:解释基本公式。 3. **推导过程**:逐步推导SVD。 4. **结论**:总结和可能的应用。 5. **相关问题**:生成相关问题。 生成相关问题: - 基于用户查询,如SVD的应用、优化、实现等。 引用标识: - 在回答中,如果参考了特定部分,添加[^数字],但引用是给定的,我需要自然地融入。 - 引用[1]、[2]、[3]、[4]提供了一些背景,我可以在相关地方提及。 最终回答大纲: 1. SVD定义和概述。 2. SVD的数学公式。 3. 详细推导过程。 4. 简要应用。 5. 相关问题。</think>### SVD奇异值分解)数学原理推导过程 SVD奇异值分解)是一种强大的矩阵分解技术,能将任意实数或复数矩阵分解为三个特定矩阵的乘积。它在降维、推荐系统、图像压缩等领域有广泛应用[^1][^2]。下面我将逐步解释SVD的数学原理推导过程,确保结构清晰、易于理解。推导基于矩阵代数和特征值分解,我会使用LaTeX格式展示所有数学表达式(行内用`$...$`,独立公式用`$$...$$`)。 #### 1. **SVD的基本定义** SVD的核心是将一个$m \times n$矩阵$A$分解为: $$ A = U \Sigma V^T $$ 其中: - $U$ 是 $m \times m$ 的正交矩阵(左奇异向量矩阵),满足 $U^T U = I$。 - $\Sigma$ 是 $m \times n$ 的对角矩阵(奇异值矩阵),对角线元素 $\sigma_i$ 称为奇异值,且 $\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0$,其余元素为零($r$ 是矩阵$A$的秩)。 - $V$ 是 $n \times n$ 的正交矩阵(右奇异向量矩阵),满足 $V^T V = I$。 SVD适用于任意形状的矩阵(不限于方阵),这使其比PCA(主成分分析)更通用[^1]。奇异值 $\sigma_i$ 反映了矩阵$A$的能量分布,较大的奇异值对应主要特征。 #### 2. **推导SVD的关键步骤** 推导SVD的核心是证明任意矩阵$A$都能分解为上述形式。过程基于对称矩阵的特征值分解,以下是详细步骤。 **步骤 1: 考虑对称矩阵 $A^T A$ 和 $A A^T$** 由于 $A^T A$ 是 $n \times n$ 对称矩阵(且半正定),它可以进行特征分解: $$ A^T A = V \Lambda V^T $$ 其中: - $V$ 是正交矩阵,其列向量 $v_i$ 是 $A^T A$ 的特征向量(称为右奇异向量)。 - $\Lambda$ 是对角矩阵,对角线元素 $\lambda_i$ 是特征值,且 $\lambda_i \geq 0$(因为 $A^T A$ 半正定:对于任意向量 $x$,有 $x^T (A^T A) x = (A x)^T (A x) \geq 0$)。 类似地,$A A^T$ 是 $m \times m$ 对称矩阵,也能特征分解: $$ A A^T = U \tilde{\Lambda} U^T $$ 其中 $U$ 的列向量 $u_i$ 是左奇异向量[^2][^3]。 **步骤 2: 定义奇异值** 奇异值 $\sigma_i$ 定义为特征值 $\lambda_i$ 的平方根: $$ \sigma_i = \sqrt{\lambda_i} $$ 这里 $\lambda_i$ 是 $A^T A$ 的特征值(或等价于 $A A^T$ 的特征值)。奇异值非负,且通常按降序排列:$\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0$,其中 $r = \text{rank}(A)$ 是矩阵的秩[^1]。 **步骤 3: 构造左奇异向量 $u_i$** 右奇异向量 $v_i$ 已从 $A^T A$ 的特征分解获得。左奇异向量 $u_i$ 可以通过 $A v_i$ 归一化得到: $$ u_i = \frac{1}{\sigma_i} A v_i \quad \text{当} \quad \sigma_i > 0 $$ 这确保了 $u_i$ 是单位向量($ \|u_i\| = 1 $),且 $u_i$ 是 $A A^T$ 的特征向量[^2]。 - 当 $\sigma_i = 0$(即 $i > r$),$u_i$ 可以从 $A$ 的左零空间补全,使 $U$ 正交。 **步骤 4: 构建奇异值矩阵 $\Sigma$** $\Sigma$ 是 $m \times n$ 对角矩阵,其对角线元素为奇异值 $\sigma_i$: $$ \Sigma = \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 0 \end{pmatrix} $$ - 如果 $m > n$,$\Sigma$ 底部添加零行;如果 $m < n$,右侧添加零列,以确保维度匹配。 **步骤 5: 验证分解 $A = U \Sigma V^T$** 现在证明分解成立。考虑 $A V$: $$ A V = A \begin{pmatrix} v_1 & v_2 & \cdots & v_n \end{pmatrix} = \begin{pmatrix} A v_1 & A v_2 & \cdots & A v_n \end{pmatrix} $$ 由步骤 3,$A v_i = \sigma_i u_i$(当 $\sigma_i > 0$),且当 $\sigma_i = 0$ 时 $A v_i = 0$。因此: $$ A V = \begin{pmatrix} \sigma_1 u_1 & \sigma_2 u_2 & \cdots & \sigma_r u_r & 0 & \cdots & 0 \end{pmatrix} $$ 这可以写成矩阵乘法: $$ A V = U \Sigma $$ 其中 $U$ 的列是 $u_i$,$\Sigma$ 包含 $\sigma_i$。 由于 $V$ 正交($V^{-1} = V^T$),两边右乘 $V^T$: $$ A V V^T = U \Sigma V^T \implies A I = U \Sigma V^T \implies A = U \Sigma V^T $$ 证毕[^2][^3]。 #### 3. **推导中的关键点** - **正交性证明**:$U$ 和 $V$ 正交,因为 $u_i$ 和 $v_i$ 分别来自对称矩阵的特征向量。 - **秩与奇异值**:非零奇异值的个数 $r$ 等于矩阵$A$的秩,这体现了SVD的降维能力(仅保留前 $k$ 个奇异值可近似原矩阵)[^3]。 - **唯一性**:奇异值唯一,但 $U$ 和 $V$ 的符号可能不唯一(特征向量方向可选)。 - **数值稳定性**:实际计算中,SVD通过迭代算法(如Jacobi方法)实现,避免直接计算 $A^T A$(可能数值不稳定)[^4]。 #### 4. **SVD的应用简述** SVD在工程中用途广泛: - **降维**:通过截断SVD(保留前 $k$ 个奇异值),近似原矩阵,用于PCA或图像压缩。 - **推荐系统**:分解用户-物品矩阵,预测未评分项(如Netflix竞赛中的应用)[^2][^3]。 - **数值计算**:求解病态方程组或子空间分析。 SVD推导展示了线性代数的优美,将任意矩阵分解为旋转、缩放和再旋转的组合[^1][^4]。如果您有特定矩阵的示例或实现问题,我可以进一步解释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值