SVD 实例计算与理解

网上各种思想解释SVD的太多了。这篇博文想从一个实际的矩阵出发,阐述SVD究竟干了什么。——非数学系的cver

0.基础

我是通过这篇博文理解SVD基本意义的

1.初始理论部分

SVD的基本公式:
A = U m × m Σ m × n V n × n T (1) A=U_{m\times m} \Sigma_{m\times n} V_{n\times n}^T \tag{1} A=Um×mΣm×nVn×nT(1)
注意 U m × m U_{m\times m} Um×m, V n × n V_{n\times n} Vn×n是不同尺寸的方阵。中间的
Σ m × n = [ Σ 1 0 0 0 ] \Sigma_{m\times n}=\begin{bmatrix}\Sigma_1 & 0 \\ 0 & 0\end{bmatrix} Σm×n=[Σ1000]
Σ 1 = d i a g ( σ 1 , σ 1 , … , σ r ) \Sigma_1=diag(\sigma_1,\sigma_1,\dots,\sigma_r) Σ1=diag(σ1,σ1,,σr)
这个 σ i \sigma_i σi就是所谓的奇异值。也是特征值开根号。

2.一个简单的例子

借鉴这篇博客例子
我们要计算矩阵 A的奇异值分解。
A = [ 1 1 1 1 0 0 ] A=\begin{bmatrix} 1&1\\1&1\\0&0\end{bmatrix} A=110110
这个时候要记得m=3,n=2。我们的问题变成了如(2)式展开分解。
A = U 3 × 3 Σ 3 × 2 V 2 × 2 T (2) A=U_{3\times 3} \Sigma_{3\times 2} V_{2\times 2}^T \tag{2} A=U3×3Σ3×2V2×2T(2)

  1. 计算协方差矩阵 A T A = [ 2 2 2 2 ] A^TA=\begin{bmatrix} 2&2 \\ 2&2 \end{bmatrix} ATA=[2222]
    这是个协方差矩阵,对其进行特征分解,计算特征值和特征向量。
    特征值 4, 0
    特征向量 [ 1 2 , 1 2 ] T , [ − 1 2 , 1 2 ] T [\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}]^T, [-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}]^T [2 1,2 1]T,[2 1,2 1]T

  2. 计算另一个方向的协方差 A A T = [ 2 2 0 2 2 0 0 0 0 ] AA^T=\begin{bmatrix} 2&2&0\\2&2&0\\0&0&0\end{bmatrix} AAT=220220000
    相当于对A做了转置,计算其协方差,然后对其进行特征分解,计算特征值和特征向量。
    特征值 4,0,0
    特征向量 [ 1 2 , 1 2 , 0 ] T , [ − 1 2 , 1 2 , 0 ] T , [ 0 , 0 , 1 ] T [\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}},0]^T,[-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}},0]^T,[0,0,1]^T [2 1,2 1,0]T,[2 1,2 1,0]T,[0,0,1]T

  3. 把两个协方差矩阵的非零特征值从大到小排列。(注意是非零
    这个是为了求 Σ 3 × 2 \Sigma_{3\times 2} Σ3×2。注意其实只有一个非零特征值4。而 Σ m n = [ Σ 1 0 0 0 ] \Sigma_{mn}=\begin{bmatrix}\Sigma_1 & 0 \\ 0 & 0\end{bmatrix} Σmn=[Σ1000]。所以维度刚好凑够。需要清楚,两个协方差矩阵的非零特征值应该相同

  4. 最后,写出SVD表达式
    A = U Σ V T = [ 1 2 − 1 2 0 1 2 1 2 0 0 0 1 ] [ 2 0 0 0 0 0 ] [ 1 2 − 1 2 1 2 1 2 ] T = [ 1 1 1 1 0 0 ] A=U \Sigma V^T= \begin{bmatrix} \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}&0 \\ \frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 2&0 \\ 0&0 \\ 0&0 \end{bmatrix} {\begin{bmatrix} \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}}\end{bmatrix}}^T=\begin{bmatrix} 1&1\\1&1\\0&0\end{bmatrix} A=UΣVT=2 12 102 12 10001200000[2 12 12 12 1]T=110110
    特征向量按照特征值大小排序,构成左奇异值矩阵和右奇异值矩阵。

3. 理 解 SVD

我们可以首先类比PCA(主成分分析法),首先,特征值只能作用在一个m* m的正方矩阵上,而奇异值分解则可以作用在一个m*n的长方矩阵上。其次,奇异值分解同时包含了旋转、缩放和投影三种作用,(1)式中,U和V都起到了对A旋转的作用,而Σ起到了对A缩放的作用。特征值分解只有缩放的效果。PCA只用到了一个协方差矩阵,但是奇异值分解相当于两个方向做PCA,所以其实PCA可以使用SVD实现。

网上看到有人画了个草图,如下。然后说在几何中,我们可以把矩阵看做空间上的线性变换。奇异值分解的几何含义是:对于任何的一个矩阵,我们都能找到一组坐标轴,它是由原来的坐标轴通过旋转和缩放得到的。奇异值的含义是:这组变换后新的坐标轴的长度。这个U我不知道
在这里插入图片描述

4.reference

1.https://towardsdatascience.com/svd-8c2f72e264f

2.https://byjiang.com/2017/11/18/SVD/

3.https://bainingchao.github.io/2018/10/11/%E4%B8%80%E6%AD%A5%E6%AD%A5%E6%95%99%E4%BD%A0%E8%BD%BB%E6%9D%BE%E5%AD%A6%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7%A3SVD%E9%99%8D%E7%BB%B4%E7%AE%97%E6%B3%95/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值