线性代数:SVD分解【用于信息压缩&降噪】

矩阵的SVD分解- Singular Value Decomposition【矩阵的奇异值分解】
优点:适用于任意形状的矩阵,是 特征分解 在任意矩阵上的推广

分解形式
A = U Σ V T A = U\Sigma V^T A=UΣVT
A = [ ∣ ∣ ∣ u ⃗ 1 u ⃗ 2 . . . u ⃗ m ∣ ∣ ∣ ] [ σ 1 σ 2 0 . . . 0 σ r 0 0 ] [ − v ⃗ 1 − − v ⃗ 2 − − v ⃗ n − ] A = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix}\begin{bmatrix} - & \vec v_1 & - \\ - & \vec v_2 & - \\ \\ - & \vec v_n & - \end{bmatrix} A= u 1u 2...u m σ10σ20...σr00 v 1v 2v n
对于 m ∗ n m*n mn A A A矩阵,则 U U U m ∗ m m*m mm的方阵(左奇异矩阵); Σ \Sigma Σ m ∗ n m*n mn的长方阵(奇异值矩阵); V V V n ∗ n n*n nn的方阵(右奇异矩阵)

V V V A T A A^TA ATA的标准化特征向量矩阵,是一个标准正交矩阵, V = V T V = V^{T} V=VT

U U U A A A的列空间的一组标准正交基构成的矩阵 U = [ ∣ ∣ ∣ u ⃗ 1 u ⃗ 2 . . . u ⃗ m ∣ ∣ ∣ ] U = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} U= u 1u 2...u m 由前 r r r个从大到小排列的奇异值且不为零的奇异值对应的 u ⃗ \vec u u 向量从左到右排列构成,根据矩阵的列空间定义 ( r ≤ m ) (r \le m) (rm) u ⃗ i = A v ⃗ i σ i   σ i ≠ 0 \vec u_i=\frac {A\vec v_i}{\sigma _i} \ \sigma_i \ne 0 u i=σiAv i σi=0;所以当 r < m r \lt m r<m的时候要构造一个 m ∗ m m*m mm的方阵 U U U需要补充到 m m m u ⃗ \vec u u 向量,缺失的 u ⃗ \vec u u 向量可以通过 Gram-Schmidt 方法找到 m − r m-r mr个向量,使得这 m m m u ⃗ \vec u u 向量两两互相垂直。所以 U U U矩阵也是一个标准正交矩阵
  \,
Σ \Sigma Σ 矩阵是一个 m ∗ n m*n mn奇异值矩阵,对角线由从大到小排列的奇异值按从上到小的顺序填充而成,由于 r ≤ m r \le m rm,缺失行由零向量填充,其左上角是一个 r ∗ r r*r rr对角矩阵
Σ = [ σ 1 σ 2 0 . . . 0 σ r 0 0 ]   = [ D 0 0 0 ] \Sigma = \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix} \ = \begin{bmatrix} D&0 \\ 0&0\end{bmatrix} Σ= σ10σ20...σr00  =[D000]
  \,
SVD与特征值分解的联系 A T A = ( U Σ V T ) T ⋅ ( U Σ V T ) = V T Σ 2 V = P D P T A^TA = (U\Sigma V^T)^T \cdot (U\Sigma V^T) = V^T\Sigma^2V = PDP^T ATA=(UΣVT)T(UΣVT)=VTΣ2V=PDPT

证明

对于 A = U Σ V T A = U\Sigma V^T A=UΣVT
左乘 V V V则有 A V = U Σ V T V AV = U\Sigma V^TV AV=UΣVTV,标准正交矩阵中$V^TV = I \rightarrow AV = U\Sigma $ ,该数学形式与方阵特征值分解类似。
∵ v ⃗ i \because \vec v_i v i A T A A^TA ATA的标准特征向量 , A V = A [ ∣ ∣ ∣ v ⃗ 1 v ⃗ 2 . . . v ⃗ n ∣ ∣ ∣ ] = [ ∣ ∣ ∣ A v ⃗ 1 A v ⃗ 2 . . . A v ⃗ n ∣ ∣ ∣ ] AV =A \begin{bmatrix} |&|& &| \\ \vec v_1&\vec v_2&...&\vec v_n \\ |&|& &| \end{bmatrix} = \begin{bmatrix} |&|& &| \\ A\vec v_1&A\vec v_2&...&A\vec v_n \\ |&|& &| \end{bmatrix} AV=A v 1v 2...v n = Av 1Av 2...Av n

u ⃗ i = A v ⃗ i σ i \vec u_i = \frac {A\vec v_i}{\sigma _i} u i=σiAv i,其中 σ i = ∥ A ⋅ v ⃗ i ∥ 2 = λ i \sigma _i = \sqrt { \|A \cdot \vec v_i\|^{2} } = \sqrt {\lambda _i} σi=Av i2 =λi ,当存在 σ = 0 → σ u ⃗ = 0 \sigma = 0 \rightarrow \sigma \vec u = 0 σ=0σu =0,从而
A V = [ ∣ ∣ ∣ A v ⃗ 1 A v ⃗ 2 . . . A v ⃗ n ∣ ∣ ∣ ] = [ ∣ ∣ ∣ σ 1 u ⃗ 1 σ 2 u ⃗ 2 . . . σ r u ⃗ r . . . 0 ∣ ∣ ∣ ] AV = \begin{bmatrix} |&|& &| \\ A\vec v_1&A\vec v_2&...&A\vec v_n \\ |&|& &| \end{bmatrix} = \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix} AV= Av 1Av 2...Av n = σ1u 1σ2u 2...σru r...0

U Σ = [ ∣ ∣ ∣ u ⃗ 1 u ⃗ 2 . . . u ⃗ m ∣ ∣ ∣ ] [ σ 1 σ 2 0 . . . 0 σ r 0 0 ] = [ ∣ ∣ ∣ σ 1 u ⃗ 1 σ 2 u ⃗ 2 . . . σ r u ⃗ r . . . 0 ∣ ∣ ∣ ] U\Sigma = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix} = \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix} UΣ= u 1u 2...u m σ10σ20...σr00 = σ1u 1σ2u 2...σru r...0

∴ A V = U Σ → A = U Σ V T \therefore AV = U\Sigma \rightarrow A = U\Sigma V^T AV=UΣA=UΣVT

算法过程

对于任意一个矩阵 A A A,求解 U Σ V T U\Sigma V^T UΣVT
step.1 求解 A T A A^TA ATA的特征值和特征向量;
step.2 A T A A^TA ATA的非零特征值 λ \lambda λ 进行开根得到奇异值 σ \sigma σ,顺序填充成 m ∗ n m*n mn的奇异值矩阵 Σ \Sigma Σ;
step.3 A T A A^TA ATA的特征向量标准化处理后,这些标准特征向量按从大到小的特征值对应关系按列填充成 n ∗ n n*n nn V V V,取 V T V^T VT;
step.4 u ⃗ i = A v ⃗ i σ i \vec u_i = \frac {A\vec v_i}{\sigma _i} u i=σiAv i在经过Gram-Schmidt扩展填充成 U U U

SVD应用

1.几何坐标变换

A = U Σ V T A = U\Sigma V^T A=UΣVT 若A是 m ∗ n m*n mn的矩阵 A A A将对一个 n n n维向量转换成 m m m维的向量;

V V V n n n维空间的一组标准正交基,从而 n n n维空间中的任意向量 x ⃗ \vec x x 可以被 V V V中的列向量所组合表示 x ⃗ = k 1 v ⃗ 1 + k 2 v ⃗ 2 + . . . + k n v ⃗ n = V k ⃗ \vec x = k_1\vec v_1 + k_2\vec v_2 + ... + k_n\vec v_n=V\vec k x =k1v 1+k2v 2+...+knv n=Vk ,这里 V k ⃗ V\vec k Vk 中的向量 k ⃗ \vec k k V V V坐标系下每个维度上的坐标值。

n n n维空间的向量 x ⃗ \vec x x A A A变换将得到:
A x ⃗ = U Σ V T x ⃗ = U Σ V T ⋅ V k ⃗ = U Σ k ⃗ = U [ σ 1 k 1 . . . σ r k r 0 ] A\vec x = U\Sigma V^T \vec x = U\Sigma V^T \cdot V\vec k = U\Sigma \vec k = U\begin{bmatrix} \sigma_1k_1 \\ ... \\ \sigma_rk_r \\ 0\end{bmatrix} Ax =UΣVTx =UΣVTVk =UΣk =U σ1k1...σrkr0
在这里变换后表明在 U U U坐标系下,原来 V V V坐标系下的向量 x ⃗ \vec x x 坐标值将被拉伸 σ \sigma σ倍。

2.数据压缩去噪降维

奇异值分解与特征值分解的目的一样,都是提取出一个矩阵最重要的特征。
所有的矩阵都可以进行奇异值分解,但只有方阵才可以进行特征值分解。当所给的矩阵是对称的方阵,,二者的结果是相同的。所以对称矩阵的特征值分解是奇异值分解的一个特例。对于奇异值,它跟特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。所以可以应用最大的k个的奇异值和对应的左右奇异矩阵来近似描述矩阵达到 denoise 的目的。

SVD降噪数学展开式 A = U Σ V T A = U\Sigma V^T A=UΣVT
[ ∣ ∣ ∣ σ 1 u ⃗ 1 σ 2 u ⃗ 2 . . . σ r u ⃗ r . . . 0 ∣ ∣ ∣ ] [ − v ⃗ 1 − − v ⃗ 2 − − v ⃗ n − ] = σ 1 u ⃗ 1 v ⃗ 1 T + σ 2 u ⃗ 2 v ⃗ 2 T + . . . + σ r u ⃗ r v ⃗ r T + 0 + . . . 0 \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix} \begin{bmatrix} - & \vec v_1 & - \\ - & \vec v_2 & - \\ \\ - & \vec v_n & - \end{bmatrix} = \sigma_1 \vec u_1 \vec v_1^T + \sigma_2 \vec u_2 \vec v_2^T +...+\sigma_r \vec u_r \vec v_r^T + 0 +...0 σ1u 1σ2u 2...σru r...0 v 1v 2v n =σ1u 1v 1T+σ2u 2v 2T+...+σru rv rT+0+...0

从而 A A A 矩阵被表示为系列由 σ i u ⃗ i v ⃗ i T \sigma _i \vec u_i \vec v_i^T σiu iv iT组成的 m ∗ n m*n mn矩阵的加和的结果,奇异值 σ \sigma σ在这里成为子矩阵 u ⃗ v ⃗ T \vec u \vec v^T u v T的权重( w e i g h t weight weight 权值),其中第一个 σ 1 \sigma _1 σ1权值最大,次之 σ 2 \sigma _2 σ2,以此类推。所以可知小奇异值对应的子矩阵对 A A A矩阵的影响是很小的,舍去这些小奇异值对应的子矩阵可以做到对 A A A矩阵的压缩、降噪

3、SVD 与 PCA 降维的联系

PCA降维 主要针对协方差矩阵 X T X X^TX XTX 进行特征分解,找到最大的 d d d 个特征值对应的特征向量作为基向量,对 X X X 进行投影达到降维的目的 X l o w d i m = X ⋅ P X_{lowdim} = X\cdot P Xlowdim=XPSVD 则是针对 X X X进行奇异值分解,算的是 X T X X^TX XTX 的特征值和特征向量,从求解上来说SVD与PCA等价,但是SVD 算法求解矩阵 X T X X^TX XTX 的特征向量时相比暴力特征值分解有更高效的计算策略(如幂迭代法求矩阵特征值),当找到了前 d d d 个奇异值对应的右奇异矩阵 V T V^T VT,对 X X X 进行投影达到降维的目的 X l o w d i m = X ⋅ ( V T ) T X_{lowdim} = X \cdot (V^T)^T Xlowdim=X(VT)T,正因如此SVD的这种高效性所,一般PCA算法常用 SVD 求解特征向量。


1.1 矩阵降维之矩阵分解 PCA与SVD - 知乎 (zhihu.com)
【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用_风度78的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪桦

有帮助的话请杯咖啡吧,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值