avatar

目录
奇异值分解——《统计学习方法》第15章学习笔记

奇异值分解的定义

  定义 1 矩阵的奇异值分解是指,将一个非零的 mnm * n 实矩阵AAARmnA \in {\rm R^{m * n}},表示为以下三个实矩阵乘积形式的运算,即进行矩阵的因子分解:

A=UΣVT(1)A=U \Sigma V^T \tag{1}

  其中 UUmm正交矩阵^①(orthogonal matrix),VVnn 阶正交矩阵,Σ\Sigma 是由降序排列的非负的对角线元素组成的 mnm * n 矩形对角矩阵(rectangular diagonal matrix),其对角线上的非负元素即为矩阵 AA 降序排列的奇异值(singular value),满足:

UUT=IVVT=IΣ=diag(σ1,σ2,,σp)σ1σ2σp0p=min(m,n) UU^T=I \\ VV^T=I \\ \Sigma=diag(\sigma_1, \sigma_2, \dots, \sigma_p) \\ \sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_p \ge 0 \\ p=min(m, n)

  UΣVTU \Sigma V^T 称为矩阵 AA奇异值分解(singular value decomposition, SVD),σi\sigma_i 称为矩阵 AA奇异值UU 的列向量称为左奇异向量(left singular vector),VV 的列向量称为右奇异向量(right singular vector)。

正交矩阵:正交矩阵 UU 和其转置矩阵 UTU^T 相乘的结果是单位矩阵 II 。(UUT=IUU^T=I

  定理 1(奇异值分解基本定理) 若 AA 为一 mnm * n 实矩阵,ARmnA \in {\rm R}^{m * n},则 AA 的奇异值分解存在。

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

  公式 (1) 给出的奇异值分解又称为矩阵的完全奇异值分解(full singular value decomposition)。
  实际常用的是奇异值分解的紧凑形式和截断形式。紧奇异值分解是与原始矩阵等秩的奇异值分解,截断奇异值分解是比原始矩阵低秩的奇异值分解。

  例 1  设给定一个 545 * 4 矩阵 AA

A=[10000004030000002000] A= \left[ \begin{matrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 4 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 2 & 0 & 0 & 0 \\ \end{matrix} \right]

  它的完全奇异值分解由三个矩阵的乘积 UΣVTU \Sigma V^T 给出:

U=[000.200.8100000100000010000.800.2],Σ=[40000300005000000000],VT=[0001010010000010] U= \left[ \begin{matrix} 0 & 0 & \sqrt{0.2} & 0 & \sqrt{0.8} \\ 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & \sqrt{0.8} & 0 & -\sqrt{0.2} \\ \end{matrix} \right], \Sigma= \left[ \begin{matrix} 4 & 0 & 0 & 0 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & \sqrt{5} & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ \end{matrix} \right], V^T= \left[ \begin{matrix} 0 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ \end{matrix} \right]

紧奇异值分解

  定义 2 设有 mnm * n 实矩阵 AA ,其秩为 rank(A)=rrank(A)=rrmin(m,n)r \le min(m, n),则称UrΣrVrTU_r \Sigma_r V_r^TAA紧奇异值分解(compact singular value decomposition),即

A=UrΣrVrT(2)A=U_r \Sigma_r V_r^T \tag{2}

  其中 UrU_rmrm * r 矩阵,VrV_rnrn * r 矩阵,Σr\Sigma_rrr 阶对角矩阵。
  矩阵 UrU_r 由完全奇异值分解中 UU 的前 rr 列、矩阵 VrV_rVV 的前 rr 列、矩阵 Σr\Sigma_rΣ\Sigma 的前 rr 个对角线元素得到。
  紧奇异值分解的对角矩阵 Σr\Sigma_r 的秩与原始矩阵 AA 的秩相等
  例 2  由例 1 给出的矩阵 AA,它的秩 r=3r=3,得到 AA紧奇异值分解

Ur=[000.2100010000000.8],Σr=[400030005],VrT=[000101001000] U_r= \left[ \begin{matrix} 0 & 0 & \sqrt{0.2} \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & \sqrt{0.8} \\ \end{matrix} \right], \Sigma_r= \left[ \begin{matrix} 4 & 0 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & \sqrt{5} \\ \end{matrix} \right], V_r^T= \left[ \begin{matrix} 0 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ \end{matrix} \right]

截断奇异值分解

  当我们只取最大的 kk 个奇异值(k<rk < rrr 为矩阵的秩)对应的部分,就得到矩阵的截断奇异值分解。

实际应用中提到矩阵的奇异值分解时,通常指截断奇异值分解。

  定义 3 设 AAmnm * n 实矩阵,其秩 rank(A)=rrank(A)=r,且 0<k<r0 < k < r,则称 UkΣkVkTU_k \Sigma_k V_k^T 为矩阵 AA截断奇异值分解(truncated singular value decomposition)

AUkΣkVkT(3)A \approx U_k \Sigma_k V_k^T \tag{3}

  其中 UkU_kmkm * k 矩阵,VkV_knkn * k 矩阵,Σk\Sigma_kkk 阶对角矩阵。
  矩阵 UkU_k 由完全奇异值分解中 UU 的前 kk 列、矩阵 VkV_kVV 的前 kk 列、矩阵 Σk\Sigma_kΣ\Sigma 的前 kk 个对角线元素得到。
  对角矩阵 Σk\Sigma_k 的秩比原始矩阵 AA 的秩
  例 3  由例 1 给出的矩阵 AA,它的秩 r=3r=3,若取 k=2k=2,则其截断奇异值分解

Uk=[0010010000],Σk=[4003],VkT=[00010100] U_k= \left[ \begin{matrix} 0 & 0 \\ 1 & 0 \\ 0 & 1 \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right], \Sigma_k= \left[ \begin{matrix} 4 & 0 \\ 0 & 3 \\ \end{matrix} \right], V_k^T= \left[ \begin{matrix} 0 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 \\ \end{matrix} \right]

此时

AkUkΣkVkT=σ1u1v1T+σ2u2v2T=[00000004030000000000](A) A_k \approx U_k \Sigma_k V_k^T \overset{外积展开式}{=} \sigma_1u_1v_1^T+\sigma_2u_2v_2^T= \left[ \begin{matrix} \textcolor{red}{0} & 0 & 0 & 0 \\ 0 & 0 & 0 & 4 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ \textcolor{red}{0} & 0 & 0 & 0 \\ \end{matrix} \right] (红色字体处的数字与A相比已改变)

在实际应用中,常常需要对矩阵的数据进行压缩,将其近似表示,奇异值分解提供了一种方法。
紧奇异值分解无损压缩截断奇异值分解有损压缩

几何解释

图源于李航的《统计学习方法》

  上图给出了矩阵奇异值分解的直观的几何解释。原始空间的标准正交基(红色和黄色),经过坐标系的旋转变换 VTV^T、坐标轴的缩放变换 Σ\Sigma (黑色 σ1,σ2\sigma_1, \sigma_2)、坐标系的旋转变换 UU,得到和经过线性变换 AA 等价的结果。

奇异值分解的计算

解法一

  (1)ATA\textcolor{red}{(1) 求 A^TA 的特征值和特征向量}
  计算对称矩阵 W=ATAW=A^TA
  求解特征方程

(WλI)x=0(W - \lambda I)x=0

得到特征值 λi\lambda_i,并将特征值由大到小排列

λ1λ2λn0\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_n \ge 0

将特征值 λi\lambda_ii=1,2,,ni=1, 2, \dots, n)代入特征方程求得对应的特征向量。

  (2)nV\textcolor{red}{(2) 求 n 阶正交矩阵 V}
  将特征向量单位化,得到单位特征向量 v1,v2,,vnv_1, v_2, \dots, v_n,构成 nn 阶正交矩阵 VV:

V=[v1v2vn]V=\left[ \begin{matrix} v_1 & v_2 & \dots & v_n \end{matrix} \right]

  (3)mnΣ\textcolor{red}{(3) 求 m * n 对角矩阵 \Sigma}
  计算 AA 的奇异值

σi=λi, i=1, 2, , n\sigma_i=\sqrt{\lambda_i} \text{, i=1, 2, \dots, n}

构造 mnm * n 矩形对角矩阵 Σ\Sigma,主对角线元素是奇异值,其余元素是零,

Σ=diag(σ1,σ2,,σn)\Sigma=diag(\sigma_1, \sigma_2, \dots, \sigma_n)

  (4)mU\textcolor{red}{(4) 求 m 阶正交矩阵 U}
  对 AA 的前 rr 个正奇异值,令

uj=1σjAvj, j=1, 2, , ru_j=\frac{1}{\sigma_j} Av_j \text{, j=1, 2, \dots, r}

得到

U1=[u1u2ur]U_1=\left[ \begin{matrix} u_1 & u_2 & \dots & u_r \end{matrix} \right]

  求 ATA^T 的零空间的一组标准正交基 ur+1,ur+2,,um{u_{r+1}, u_{r+2}, \dots, u_m},令

U2=[ur+1ur+2um]U_2=\left[ \begin{matrix} u_{r+1} & u_{r+2} & \dots & u_m \end{matrix} \right]

并令

U=[U1U2]U=\left[ \begin{matrix} U_1 & U_2 \end{matrix} \right]

  (5)\textcolor{red}{(5) 得到奇异值分解}

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

例题讲解

  例4 试求矩阵

A=[112200] A= \left[ \begin{matrix} 1 & 1 \\ 2 & 2 \\ 0 & 0 \\ \end{matrix} \right]

的奇异值分解。
  (1)ATA\textcolor{red}{(1) 求矩阵 A^TA 的特征值和特征向量}
  求对称矩阵 ATAA^TA

ATA=[120120][112200]=[5555] A^TA= \left[ \begin{matrix} 1 & 2 & 0 \\ 1 & 2 & 0 \\ \end{matrix} \right] \left[ \begin{matrix} 1 & 1 \\ 2 & 2 \\ 0 & 0 \\ \end{matrix} \right] = \left[ \begin{matrix} 5 & 5 \\ 5 & 5 \\ \end{matrix} \right]

  特征值 λ\lambda 和特征向量 xx 满足特征方程

(ATAλI)x=0(A^TA-\lambda I)x=0

得到齐次线性方程组

{(5λ)x1+5x2=05x1+(5λ)x2=0 \begin{cases} (5 - \lambda) &x_1 + 5 &x_2 &=0 \\ 5 &x_1 + (5 - \lambda)&x_2 &=0 \\ \end{cases}

该方程组有非零解的充要条件是

5λ555λ=0 \begin{vmatrix} 5 - \lambda & 5 \\ 5 & 5 - \lambda \\ \end{vmatrix} =0

λ210λ=0\lambda^2-10\lambda=0

解此方程,得到矩阵 ATAA^TA 的特征值

{λ1=10λ2=0 \begin{cases} \lambda_1=10 \\ \lambda_2=0 \\ \end{cases}

  将特征值 λ1=10\lambda_1=10 代入线性方程组,得 x1x2=0x_1-x_2=0 ,可得到对应的单位特征向量

v1=[11]=[1212] v_1= \left[ \begin{matrix} 1 \\ 1 \\ \end{matrix} \right] \overset{单位化}{=} \left[ \begin{matrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{matrix} \right]

同样将特征值 λ2=0\lambda_2=0 代入,得 x1+x2=0x_1+x_2=0 ,对应的单位特征向量

v2=[11]=[1212] v_2= \left[ \begin{matrix} 1 \\ -1 \\ \end{matrix} \right] \overset{单位化}{=} \left[ \begin{matrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \\ \end{matrix} \right]

  (2)V\textcolor{red}{(2) 求正交矩阵 V}
  构造正交矩阵 VV

V=[v1v2]=[12121212] V= \left[ \begin{matrix} v_1 & v_2 \\ \end{matrix} \right] = \left[ \begin{matrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \end{matrix} \right]

  (3)Σ\textcolor{red}{(3) 求对角矩阵 \Sigma}
  奇异值为 σ1=λ1=10\sigma_1=\sqrt{\lambda_1}=\sqrt{10}σ2=0\sigma_2=0。构造对角矩阵 Σ\Sigma

Σ=[σ100σ200]=[1000000] \Sigma= \left[ \begin{matrix} \sigma_1 & 0 \\ 0 & \sigma_2 \\ 0 & 0 \\ \end{matrix} \right] = \left[ \begin{matrix} \sqrt{10} & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right]

注意:Σ\Sigma 中要加上零行向量(最后的一行0),使得 Σ\Sigma 能够与 UUVV 进行矩阵乘法运算。

  (4)U\textcolor{red}{(4) 求正交矩阵 U}
  基于 AA 的正奇异值计算得到列向量 u1u_1

u1=1σ1Av1=110[112200][1212]=[15250] u_1=\frac{1}{\sigma_1}Av_1=\frac{1}{\sqrt{10}} \left[ \begin{matrix} 1 & 1 \\ 2 & 2 \\ 0 & 0 \\ \end{matrix} \right] \left[ \begin{matrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{matrix} \right] = \left[ \begin{matrix} \frac{1}{\sqrt{5}} \\ \frac{2}{\sqrt{5}} \\ 0 \\ \end{matrix} \right]

  列向量 u2,u3u_2, u_3ATA^T 的零空间 N(AT)N(A^T) 的一组标准正交基。为此,求解以下线性方程组

ATx=[120120][x1x2x3]=[00] A^Tx= \left[ \begin{matrix} 1 & 2 & 0 \\ 1 & 2 & 0 \\ \end{matrix} \right] \left[ \begin{matrix} x_1 \\ x_2 \\ x_3 \\ \end{matrix} \right] = \left[ \begin{matrix} 0 \\ 0 \\ \end{matrix} \right]

x1+2x2+0x3=0x_1+2x_2+0x_3 = 0
x1=2x20x3x_1 = -2x_2-0x_3
可见 x3x_3 可以取任意值,x2x_2 的改变会影响到 x1x_1,因此我们分别取 (x2,x3)(x_2, x_3)(1,0)(1, 0)(0,1)(0, 1),得到一组基为

(2,1,0)T,(0,0,1)T(-2, 1, 0)^T, (0, 0, 1)^T

标准化后,得到标准正交基为

{u2=(25,15,0)Tu3=(0,0,1)T \begin{cases} u_2=(-\frac{2}{\sqrt{5}}, \frac{1}{\sqrt{5}}, 0)^T \\ u_3=(0, 0, 1)^T \\ \end{cases}

构造正交矩阵 UU

U=[1525025150001] U= \left[ \begin{matrix} \frac{1}{\sqrt{5}} & -\frac{2}{\sqrt{5}} & 0 \\ \frac{2}{\sqrt{5}} & \frac{1}{\sqrt{5}} & 0 \\ 0 & 0 & 1 \\ \end{matrix} \right]

  (5)A\textcolor{red}{(5) 矩阵 A 的奇异值分解}

A=UΣVT=[1525025150001][1000000][12121212] A=U \Sigma V^T= \left[ \begin{matrix} \frac{1}{\sqrt{5}} & -\frac{2}{\sqrt{5}} & 0 \\ \frac{2}{\sqrt{5}} & \frac{1}{\sqrt{5}} & 0 \\ 0 & 0 & 1 \\ \end{matrix} \right] \left[ \begin{matrix} \sqrt{10} & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right] \left[ \begin{matrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \end{matrix} \right]

解法二

  (1)ATA\textcolor{red}{(1) 对 A^TA 做特征值分解}
  计算 ATAA^TA

ATA=[5555] A^TA= \left[ \begin{matrix} 5 & 5 \\ 5 & 5 \\ \end{matrix} \right]

  得到 ATAA^TA 的特征值 λ\lambda 和特征向量 xx

{λ1=10,x1=[1212]λ2=0,x2=[1212], \begin{cases} \lambda_1=10, x_1=\left[ \begin{matrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{matrix} \right] \\ \lambda_2=0, x_2=\left[ \begin{matrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{matrix} \right] \\ \end{cases},

  (2)AAT\textcolor{red}{(2) 对 AA^T 做特征值分解}
  计算 AATAA^T

AAT=[240480000] AA^T= \left[ \begin{matrix} 2 & 4 & 0 \\ 4 & 8 & 0 \\ 0 & 0 & 0 \\ \end{matrix} \right]

  得到 AATAA^T 的特征值 λ\lambda 和特征向量 xx

{λ1=10,x1=[15250]λ2=0,x2=[25150]λ3=0,x3=[001], \begin{cases} \lambda_1=10, x_1=\left[ \begin{matrix} \frac{1}{\sqrt{5}} \\ \frac{2}{\sqrt{5}} \\ 0 \end{matrix} \right] \\ \lambda_2=0, x_2=\left[ \begin{matrix} -\frac{2}{\sqrt{5}} \\ \frac{1}{\sqrt{5}} \\ 0 \end{matrix} \right] \\ \lambda_3=0, x_3=\left[ \begin{matrix} 0 \\ 0 \\ 1 \end{matrix} \right] \\ \end{cases},

  (3)ATAV\textcolor{red}{(3) A^TA 的特征向量构造正交矩阵 V}

V=[12121212] V= \left[ \begin{matrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \end{matrix} \right]

  (4)AATU\textcolor{red}{(4) AA^T 的特征向量构造正交矩阵 U}

U=[1525025150001] U= \left[ \begin{matrix} \frac{1}{\sqrt{5}} & -\frac{2}{\sqrt{5}} & 0 \\ \frac{2}{\sqrt{5}} & \frac{1}{\sqrt{5}} & 0 \\ 0 & 0 & 1 \\ \end{matrix} \right]

  (5)ATAAATΣ\textcolor{red}{(5) A^TA 或 AA^T 的特征值构造对角矩阵 \Sigma}

Σ=[1000000] \Sigma= \left[ \begin{matrix} \sqrt{10} & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right]

  (6)A\textcolor{red}{(6) 矩阵 A 的奇异值分解}

A=UΣVT=[1525025150001][1000000][12121212] A=U \Sigma V^T= \left[ \begin{matrix} \frac{1}{\sqrt{5}} & -\frac{2}{\sqrt{5}} & 0 \\ \frac{2}{\sqrt{5}} & \frac{1}{\sqrt{5}} & 0 \\ 0 & 0 & 1 \\ \end{matrix} \right] \left[ \begin{matrix} \sqrt{10} & 0 \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right] \left[ \begin{matrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \end{matrix} \right]

文章作者: Reborn
文章链接: https://reborn8888.github.io/2020/01/29/%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7%A3/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Reborn
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论