奇异值分解SVD

写在前面的话

以下内容基于《统计学习方法(第二版)》整理。看完第15章,不知多少人似懂非懂,反正我上一次看线性代数已经是后考研时代了。好吧,我又一次把知识还给了老师。哭~

不过做两道题熟悉的感觉就找回来了,没错,就是它!考研数学三座大山里面最费草稿纸的线性代数!

数形结合能加深对数学的理解,其实整个线性代数都具有几何意义。不以考试为目的反而更能领略数学深层次的乐趣。

在此推荐一些线性代数的学习资料:

奇异值分解的定义与性质

奇异值分解(singular value decomposition,SVD)是一种矩阵因子分解方法。任意一个 m × n m \times n m×n矩阵,都可以表示为三个矩阵的乘积(因子分解)形式,分别是 m m m阶正交矩阵、由降序排列的非负的对角线元素组成的 m × n m \times n m×n阶对角矩阵和 n n n阶正交矩阵,称为该矩阵的奇异值分解。

矩阵的奇异值分解一定存在,但不唯一。奇异值分解可以看作是矩阵数据压缩的一种方法,即用因子分解的方式近似地表示原始矩阵,这种近似是在平方损失意义下的最优近似。

奇异值分解的形式化定义

矩阵的奇异值分解是指,将一个非零的 m × n m\times n m×n实矩阵 A A A A ∈ R m × n A \in R^{m \times n} ARm×n,表示为以下三个实矩阵乘积形式的运算,即进行矩阵的因子分解:
A = U Σ V T A = U \Sigma V^{T} A=UΣVT其中 U U U m m m阶正交矩阵(orthogonal matrix), V V V n n n阶正交矩阵, Σ \Sigma Σ是由降序排列的非负的对角线元素组成的 m × n m\times n m×n矩形对角矩阵(rectangular diagonal matrix),满足:
U U T = I V V T = I Σ = d i a g ( σ 1 , σ 2 , . . . , σ p ) σ 1 ≥ σ 2 ≥ . . . ≥ σ p ≥ 0 p = m i n ( m , n ) UU^{T} = I \\ VV{T} = I \\ \Sigma = diag(\sigma_{1},\sigma_{2},...,\sigma_{p}) \\ \sigma_{1} \geq \sigma_{2}\geq...\geq \sigma_{p} \geq 0 \\ p = min(m,n) UUT=IVVT=IΣ=diag(σ1,σ2,...,σp)σ1σ2...σp0p=min(m,n) U Σ V T U \Sigma V^{T} UΣVT称为矩阵 A A A的奇异值分解, σ i \sigma_{i} σi称为矩阵 A A A的奇异值(singular value), U U U的列向量称为左奇异向量(left singular value) V V V的列向量称为右奇异向量(right singular value)

奇异值分解基本定理

定理15.1: A A A为一 m × n m\times n m×n实矩阵, A ∈ R m × n A \in R^{m \times n} ARm×n,则 A A A的奇异值分解存在
A = U Σ V T A = U \Sigma V^{T} A=UΣVT其中 U U U m m m阶正交矩阵, V V V n n n阶正交矩阵, Σ \Sigma Σ m × n m \times n m×n矩形对角矩阵,其对角线元素非负,且按降序排列。

读完可能第一感觉是定理15.1和SVD定义有点冗余,其实定理15.1是奇异值分解的存在性的证明。证明过程是构造性的,证明过程和奇异值求解过程非常类似,具体过程参考《统计学习方法(第二版)》p273页。

紧奇异值分解与截断奇异值分解

定理15.1证明的奇异值分解是完全奇异值分解(full singular value decomposition),紧奇异值分解指的是与原始矩阵等秩的奇异值分解,截断奇异值分解是比原始矩阵低秩的奇异值分解,后两者在实际中更为常用。

奇异值分解是在平方损失(弗罗贝尼乌斯范数)意义下的对矩阵的最优近似。紧奇异值分解对应着无损压缩,截断奇异值分解对应着有损压缩。

紧奇异值分解

定义15.2: 设有 m × n m \times n m×n实矩阵 A A A,其秩为 r a n k ( A ) = r rank(A) = r rank(A)=r r ≤ m i n ( m , n ) r \leq min(m, n) rmin(m,n),则称 U r Σ r V r T U_{r} \Sigma_{r}V_{r}^{T} UrΣrVrT A A A的紧奇异值分解(compact singular value decomposition),即
A = U r Σ r V r T A = U_{r} \Sigma_{r}V_{r}^{T} A=UrΣrVrT 其中 U r U_{r} Ur m × r m \times r m×r矩阵, V r V_{r} Vr n × r n \times r n×r矩阵, Σ r \Sigma_{r} Σr r r r阶对角矩阵;矩阵 U r U_{r} Ur由完全奇异值分解中 U U U的前 r r r列,矩阵 V r V_{r} Vr V V V的前 r r r列,矩阵 Σ r \Sigma_{r} Σr Σ \Sigma Σ的前 r r r个对角线元素得到。紧奇异值分解的对角矩阵 Σ r \Sigma_{r} Σr的秩与原始矩阵 A A A的秩相等。

截断奇异值分解

在矩阵的奇异值分解中,只取最大的 k k k个奇异值($k < r , , r$是矩阵的秩)对应的部分,就得到矩阵的截断奇异值分解。实际应用中提到矩阵的奇异值分解时,通常指截断奇异值分解。

定义15.3: 设有 m × n m \times n m×n实矩阵 A A A,其秩为 r a n k ( A ) = r rank(A) = r rank(A)=r 0 < k < r 0 < k < r 0<k<r,则称 U k Σ k V k T U_{k} \Sigma_{k}V_{k}^{T} UkΣkVkT为矩阵 A A A的截断奇异值分解(truncated singular value decomposition),即
A ≈ U k Σ k V k T A \approx U_{k} \Sigma_{k}V_{k}^{T} AUkΣkVkT 其中 U k U_{k} Uk m × k m \times k m×k矩阵, V k V_{k} Vk n × k n \times k n×k矩阵, Σ k \Sigma_{k} Σk k k k阶对角矩阵;矩阵 U k U_{k} Uk由完全奇异值分解中 U U U的前 k k k列,矩阵 V k V_{k} Vk V V V的前 k k k列,矩阵 Σ k \Sigma_{k} Σk Σ \Sigma Σ的前 k k k个对角线元素得到。对角矩阵 Σ k \Sigma_{k} Σk的秩比原始矩阵 A A A的秩低。

奇异值分解的几何解释

从线性变换的角度来理解奇异值分解, m × n m \times n m×n矩阵 A A A表示从 n n n维空间 R n R^{n} Rn m m m维空间 R m R^{m} Rm的一个线性变换,
T : x → A x , x ∈ R n , A x ∈ R m T: x \rightarrow Ax,x \in R^{n},Ax \in R^{m} T:xAxxRnAxRm x x x A x Ax Ax分别是各自空间的向量。线性变换可以分解为三个简单的变换:一个坐标系的旋转或反射变换、一个坐标轴的缩放变换、另一个坐标系的旋转或反射变换。奇异值定理保证这种分解一定存在,这就是奇异值分解的几何意义。

SVD的几何解释

奇异值分解的主要性质

  • 性质一

设矩阵 A A A的奇异值分解为 A = U Σ V T A = U \Sigma V^{T} A=UΣVT,则以下关系成立:
A T A = ( U Σ V T ) T ( U Σ V T ) = V ( Σ T Σ ) V T A A T = ( U Σ V T ) ( U Σ V T ) T = U ( Σ Σ T ) U T A^{T}A = (U \Sigma V^{T})^{T}(U \Sigma V^{T}) = V(\Sigma ^{T} \Sigma)V^{T} \\ AA^{T} = (U \Sigma V^{T})(U \Sigma V^{T})^{T} = U(\Sigma \Sigma^{T})U^{T} ATA=(UΣVT)T(UΣVT)=V(ΣTΣ)VTAAT=(UΣVT)(UΣVT)T=U(ΣΣT)UT 也就是说,矩阵 A T A A^{T}A ATA A A T AA^{T} AAT的特征分解存在,且可以由矩阵 A A A的奇异值分解的矩阵表示。 V V V的列向量是 A T A A^{T}A ATA的特征向量, U U U的列向量是 A A T AA^{T} AAT的特征向量, Σ \Sigma Σ的奇异值是 A T A A^{T}A ATA A A T AA^{T} AAT的特征值的 平方根。

  • 性质二

在矩阵 A A A的奇异值分解中,奇异值、左奇异向量和右奇异向量之间存在如下对应关系。
A V = U Σ 即 , A v j = σ j u j , j = 1 , 2 , . . . , n AV = U\Sigma \\ 即,Av_{j} = \sigma_{j} u_{j},j = 1, 2, ..., n AV=UΣAvj=σjujj=1,2,...,n

  • 性质三

矩阵 A A A的奇异值分解中,奇异值 σ 1 , σ 2 , . . . , σ n \sigma_{1}, \sigma_{2}, ..., \sigma_{n} σ1,σ2,...,σn是唯一的,而矩阵 U U U V V V不是唯一的。

  • 性质四

矩阵 A A A Σ \Sigma Σ的秩相等,等于正奇异值 σ i \sigma_{i} σi的个数 r r r,包含重复的奇异值。

  • 性质五

矩阵 A A A r r r个右奇异向量 v 1 , v 2 , . . . , v r v_{1}, v_{2}, ..., v_{r} v1,v2,...,vr构成 A T A^{T} AT的值域 R ( A T ) R(A^{T}) R(AT)的一组标准正交基。矩阵 A A A n − r n - r nr个右奇异向量 v r + 1 , v r + 2 , . . . , v n v_{r + 1}, v_{r + 2}, ..., v_{n} vr+1,vr+2,...,vn构成 A A A的零空间 N ( A ) N(A) N(A)的一组标准正交基。

类似的,矩阵 A A A r r r个左奇异向量 u 1 , u 2 , . . . , u r u_{1},u_{2}, ..., u_{r} u1,u2,...,ur构成值域 R ( A ) R(A) R(A)的一组标准正交基。矩阵 A A A m − r m - r mr个左奇异向量 u r + 1 , u r + 2 , . . . , u m u_{r + 1},u_{r + 2}, ..., u_{m} ur+1,ur+2,...,um构成 A T A^{T} AT的零空间 N ( A T ) N(A^{T}) N(AT)的一组标准正交基。

奇异值分解的计算

SVD的计算过程蕴含在奇异值分解的基本定理中。矩阵 A A A的奇异值分解可以通过求对称矩阵 A T A A^{T}A ATA的特征值和特征向量得到。

  • A T A A^{T}A ATA的特征向量构成正交矩阵 V V V的列;
  • A T A A^{T}A ATA的特征值 λ j \lambda_{j} λj的平方根为奇异值 σ j \sigma_{j} σj,即
    σ j = λ j , j = 1 , 2 , . . . , n \sigma_{j} =\sqrt\lambda_{j},j = 1,2,...,n σj=λ jj=1,2,...,n对其由大到小排列作为对角线元素,构成对角矩阵 Σ \Sigma Σ
  • 求正奇异值对应的左奇异向量,再求扩充的 A T A^{T} AT的标准正交基,构成正交矩阵 U U U的列。
  • 从而得到奇异值分解 A = U Σ V T A = U \Sigma V^{T} A=UΣVT

奇异值分解与矩阵近似

弗罗贝尼乌斯范数 (Frobenius norm)

设矩阵 A ∈ R m × n A \in R^{m \times n} ARm×n A = [ a i j ] m × n A = [a_{ij}]_{m \times n} A=[aij]m×n,定义矩阵 A A A的弗罗贝尼乌斯范数为:
∣ ∣ A ∣ ∣ F = ( ∑ i = 1 m ∑ j = 1 n ( a i j ) 2 ) 1 2 ||A||_{F} = \left (\sum_{i=1}^{m} \sum_{j=1}^{n} (a_{ij})^{2}\right)^{\dfrac 12} AF=(i=1mj=1n(aij)2)21 矩阵的弗罗贝尼乌斯范数是向量的 L 2 范 数 L_{2}范数 L2的直接推广,对应着机器学习中的平方损失函数。

矩阵的最优近似与外积展开式

最优近似

**定理15.2:**设矩阵 A ∈ R m × n A \in R^{m \times n} ARm×n,矩阵的秩 r a n k ( A ) = r rank(A) = r rank(A)=r,并设 M M M R m × n R^{m \times n} Rm×n中所有秩不超过 k k k的矩阵集合, 0 < k < r 0 < k < r 0<k<r,则存在一个秩为 k k k的矩阵 X ∈ M X \in M XM,使得:
∣ ∣ A − X ∣ ∣ F = min ⁡ S ∈ M ∣ ∣ A − S ∣ ∣ F ||A - X|| _{F} = \min \limits_{S \in M} ||A - S||_{F} AXF=SMminASF 称矩阵 X X X为在Frobenius范数意义下的最优近似。

定理15.3不再赘述,其证明过程较为繁琐,其中式(15.42)记得分块矩阵的转置要分别转置。

外积展开式

外积展开式是矩阵的奇异值分解 A = U Σ V T A = U \Sigma V^{T} A=UΣVT的一种表示形式,将 A A A的奇异值分解看成矩阵 U Σ U \Sigma UΣ V T V^{T} VT的乘积,将 U Σ U \Sigma UΣ按列向量分块,将 V T V^{T} VT按行向量分块,即得:
U Σ = [ σ 1 u 1   σ 2 u 2   . . .   σ n u n ] V T = { v 1 T v 2 T ⋮ v n T } (5) U \Sigma = \left[ \sigma_{1}u_{1} \ \sigma_{2}u_{2} \ ...\ \sigma_{n}u_{n} \right] \\ V^{T} =\begin{Bmatrix} v_{1}^{T} \\ v_{2}^{T} \\ \vdots \\ v_{n}^{T} \end{Bmatrix} \tag{5} UΣ=[σ1u1 σ2u2 ... σnun]VT=v1Tv2TvnT(5) 即有
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ n u n v n T = ∑ k = 1 n σ k u k v k T A = \sigma_{1}u_{1}v_{1}^{T} + \sigma_{2}u_{2}v_{2}^{T} + \cdots + \sigma_{n}u_{n}v_{n}^{T} = \sum_{k=1}^{n}\sigma_{k}u_{k}v_{k}^{T} A=σ1u1v1T+σ2u2v2T++σnunvnT=k=1nσkukvkT称为矩阵 A A A的外积展开式。

奇异值分解的应用场景

SVD用于数据压缩

以图像压缩为例,在SVD的外积展开式中 A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ n u n v n T = ∑ k = 1 n σ k u k v k T A = \sigma_{1}u_{1}v_{1}^{T} + \sigma_{2}u_{2}v_{2}^{T} + \cdots + \sigma_{n}u_{n}v_{n}^{T} = \sum_{k=1}^{n}\sigma_{k}u_{k}v_{k}^{T} A=σ1u1v1T+σ2u2v2T++σnunvnT=k=1nσkukvkT,每个 σ i \sigma_{i} σi代表当前矩阵的权重,可以理解为每个 σ i \sigma_{i} σi代表在整个矩阵 A A A中所占有的能量信息。那么在图像压缩过程,我们完全可以将保留其中90%的能量信息,舍去其中10%的能量信息。

而实际过程中,我们发现,其中奇异值从大到小衰减得特别快,在很多情况下,前 10% 甚至 1% 的奇异值的和就占了全部的奇异值之和的 99% 以上。那说明,我们完全可以利用截断SVD来进行压缩存储。

那么现在的问题就是如何寻找我们想要截取的k值。确定要保留的奇异值的数目有很多启发式的策略,其中一种就是保留所有能量信息的90%,即将奇异值进行平方求和,找到第k个恰好和大于整个奇异值平方和的90%,那么这个就是我们要截断的范围,对应的也就可以得到:
A ≈ U k Σ k V k T = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ k u k v k T A \approx U_{k} \Sigma_{k}V_{k}^{T} = \sigma_{1}u_{1}v_{1}^{T} + \sigma_{2}u_{2}v_{2}^{T} + \cdots + \sigma_{k}u_{k}v_{k}^{T} AUkΣkVkT=σ1u1v1T+σ2u2v2T++σkukvkT
当然,SVD也可以应用于图像去躁中,对于一张图像SVD之后,我们可以认为其中值很小的奇异值是由于噪声所引起的,那么我们完全可以去除这部分的奇异值,从而利用其中的截断SVD重构图片,达到去躁的效果。

SVD用于PCA降维

PCA降维需要找到样本协方差矩阵 X T X X^{T}X XTX的最大的 d d d个特征向量,然后用这最大的 d d d个特征向量张成的矩阵来做低维投影降维。可以看出,在这个过程中需要先求出协方差矩阵 X T X X^{T}X XTX,当样本数多样本特征数也多的时候,这个计算量是很大的。

注意到SVD也可以得到协方差矩阵 X T X X^{T}X XTX最大的 d d d个特征向量张成的矩阵,但是SVD的优点是,有一些SVD的实现算法可以不需要先求出协方差矩阵 X T X X^{T}X XTX,也能求出右奇异矩阵 V V V。也就是说,PCA算法可以不用做特征分解,而是通过SVD来完成。这个方法在样本量很大的时候很有效。实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解。

另一方面,注意到PCA仅仅使用了我们SVD的右奇异矩阵,没有使用左奇异矩阵,那么左奇异矩阵有什么用呢?

假设样本矩阵 X X X m × n m \times n m×n,我们通过SVD找到矩阵 X T X X^{T}X XTX最大的 d d d个特征向量张成的 m × d m \times d m×d维矩阵 U U U,则如果我们进行如下处理:
X d × n ′ = U d × m T X m × n X^{'}_{d \times n} = U^{T}_{d \times m}X_{m \times n} Xd×n=Ud×mTXm×n
可以得到一个 d × n d \times n d×n的矩阵 X ′ X^{'} X,这个矩阵和原来的 m × n m \times n m×n维样本矩阵 X X X相比,行数从 m m m减少到了 k k k,可见对行数进行了压缩。

总结如下,左奇异矩阵可以用于行数的压缩,右奇异矩阵可用于列数即特征维度的压缩,也就是我们的PCA降维。

SVD用于推荐系统

推荐系统中的user-itme矩阵通常十分巨大,且是稀疏矩阵,那么如果直接将矩阵存储,会导致空间复杂度十分巨大。那么在这里,我们就可以利用SVD来压缩矩阵,同时,我们可以将每个矩阵转换成相应的特征上,那么在进行相似度计算的时候,便可以减少计算量。

在实际应用中,对于大规模的数据集,使用SVD会导致速度很慢,所以,我们需要离线将SVD的结果保存,同时还得提前将数据进行相应的降维。

SVD用于潜在语义分析

SVD更为重要的一个应用就是LSI(Latent Semantic Indexing ),也叫做LSA(Latent Semantic Analysis)。一般先通过SVD降维到相应的特征上去,进行相应的计算之后,然后,再通过重构数据集,从而得到我们想要的信息。

潜语义分析LSA源自问题:如何从搜索query中找到相关的文档。当我们试图通过比较词来找到相关的文本时,存在着难以解决的局限性,那就是在搜索中我们实际想要去比较的不是词,而是隐藏在词之后的意义和概念。潜语义分析试图去解决这个问题,它把词和文档都映射到一个‘概念’空间并在这个空间内进行比较(注:也就是一种降维技术)。

《统计学习方法》第十五章习题参考答案

Reference

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值