奇异值分解SVD

1 基本定义

奇异值分解(singular value decomposition SVD)是一种矩阵因子分解的方法,是线性代数的概念。在统计学中被广泛的使用,成为一种重要的统计方法。在研究过程中可以用来实现缺失值的插补 MVI,也是一种较为常用的缺失值插补方法。[Miss value imuptation(MVI):a review and analysis of the literature(2006-2017)](https://www.yuque.com/strive-yang/gn28pq/zwn3z1r7qw0na52u)
任意一个$ m \times n $矩阵,都可以表示为三个矩阵的乘积(因子分解)形式,分别为 $m$阶正交矩阵、由降序排列的非负的对角元素组成的$m \times n$矩阵对角矩阵和$n$阶正交矩阵可以试着计算,以上便称为该矩阵的奇异值分解。矩阵的奇异值分解一定存在,但分解不唯一。

In my opinion,奇异值分解就是将矩阵进行分解的过程,可以对复杂的矩阵进行压缩,是一种数据压缩方法(通常与 PCA、LDA 等方法一同提及)。

2 奇异值分解定理

矩阵的奇异值是指,将一个非零的$m \times n$实矩阵 $A,A\in R^{m\times 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矩阵对角矩阵。
由正交矩阵和对角矩阵的性质可以得出以下公式来源于线性代数
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 \ge\sigma_2\ge ...\ge\sigma_p\ge0\\ 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的奇异值分解(singular value decomposition SVD, σ i \sigma_i σi称为矩阵 A A A的奇异值(singular value), U U U的列向量称为左奇异值, V V V的列向量称为右奇异值。

奇异值分解不要求矩阵 A A A为方阵,奇异值分解可以看作是矩阵的对角化推广。
由于 A A A可能不是方阵,因此对角矩阵上元素的个数 p = m i n ( m , n ) p=min(m,n) p=min(m,n)

举个例子。
给定一个 $5\times 4$的矩阵 $A$

A = [ 1 0 0 0 0 0 0 4 0 3 0 0 0 0 0 0 2 0 0 0 ] A=\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 4\\ 0 & 3 & 0 & 0\\ 0 & 0 & 0 & 0\\ 2 & 0 & 0 & 0 \end{bmatrix} A= 10002003000000004000
该矩阵的奇异值分解由三个矩阵的乘积 U Σ V T U\Sigma V^T UΣVT给出,矩阵 U , Σ , V U,\Sigma,V UΣV分别为
U = [ 0 0 0.2 0 0.8 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0.8 0 − 0.2 ] , Σ = [ 4 0 0 0 0 3 0 0 0 0 5 0 0 0 0 0 0 0 0 0 ] , V T = [ 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 ] U=\begin{bmatrix} 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{bmatrix} ,\Sigma=\begin{bmatrix} 4 & 0 & 0 & 0\\ 0 & 3 & 0 & 0\\ 0 & 0 & \sqrt{5} & 0\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 \end{bmatrix} ,V^T=\begin{bmatrix} 0 & 0 & 0 & 1\\ 0 & 1 & 0 & 0\\ 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 \end{bmatrix} U= 01000001000.2 0000.8 000100.8 0000.2 ,Σ= 4000003000005 0000000 ,VT= 0010010000011000
矩阵 Σ \Sigma Σ是对角矩阵,对角线之外的元素都为零,对角线上的元素降序排列且大于等于 0。矩阵 U 、 V U、V UV为 5 阶和 4 阶 正交矩阵。可以计算验真分解结果

矩阵的奇异值分解不是唯一的,因此 U 矩阵可以取别的值。

3 奇异值分解的计算

奇异值分解基本定理的证明过程基本包含了奇异值分解的计算方法。矩阵$A$的奇异值分解可以通过求解对称矩阵$A^TA$的特征值和特征向量得到。其中得出的特征向量构成正交矩阵$V$的列,特征值$\lambda_j$的平方根为$\sigma_j$,即

σ j = λ j , j = 1 , 2 , . . . , n \sigma_j=\sqrt{\lambda_j},j=1,2,...,n σj=λj ,j=1,2,...,n
σ j \sigma_j σj降序排列作为对角线元素,构成对角矩阵 Σ \Sigma Σ;求正奇异值对应的左奇异向量,再求扩充的 A T A^T AT的标准正交基,构成正交向量 U U U的列。
具体 m × n m\times n m×n矩阵 A A A奇异值分解的计算过程如下:
(1)首先求解对称矩阵 A T A A^TA ATA的特征值和特征向量。
计算对称矩阵 W = A T A W=A^TA W=ATA
求解特征方程 ∣ W − λ I ∣ = 0 |W-\lambda I|=0 WλI=0,得到特征值,将特征值降序排列 λ 1 ≥ λ 2 ≥ . . . ≥ λ n ≥ 0 \lambda_1\ge\lambda_2\ge...\ge\lambda n\ge0 λ1λ2...λn0,将特征值带入特征方程计算对应的特征向量。
(2)求 n 阶正交矩阵 V。
将特征向量单位化,得到单位特征向量 v 1 , v 2 , . . . , v n v_1,v_2,...,v_n v1,v2,...,vn,构成 n 阶正交矩阵 V V V
V = [ v 1 v 2 . . . v n ] V=[v_1\quad v_2\quad ...\quad v_n] V=[v1v2...vn]
(3)求 m × n m\times n m×n对角矩阵 Σ \Sigma Σ
计算矩阵 A A A的奇异值
σ j = λ j , j = 1 , 2 , . . . , n \sigma_j=\sqrt{\lambda_j},j=1,2,...,n σj=λj ,j=1,2,...,n
构成 m × n m\times n m×n矩形对角矩阵 Σ \Sigma Σ,主对角元素就是奇异值,其他元素是 0。
$\Sigma=diag(\sigma_1,\sigma_2,…,\sigma_p)\$
(4)求 m m m正交矩阵 U U U
A A A的前 r r r个正奇异值,令
u j = 1 σ j A v j , j = 1 , 2 , . . , r u_j = \frac{1}{\sigma_j}Av_j,j = 1,2,..,r uj=σj1Avj,j=1,2,..,r
得到 U 1 = [ u 1 u 2 . . . u r ] U1=[u_1 \quad u_2 \quad ... \quad u_r] U1=[u1u2...ur]
A T A^T AT的零空间的一组标准正交基 { u r + 1 , u r + 2 , . . , u m } \{{u_{r+1},u_{r+2},..,u_{m}}\} {ur+1,ur+2,..,um},令 U 2 = [ u r + 1 u r + 2 . . . u m ] U_2=[u_{r+1} \quad u_{r+2} \quad ... \quad u_m] U2=[ur+1ur+2...um],合并 U 1 , U 2 U_1,U_2 U1,U2
U = [ U 1 U 2 ] U=[U_1 \quad U_2] U=[U1U2]
(5)得到奇异值分解
A = U Σ V T A=U\Sigma V^T A=UΣVT

小总结:

  • 奇异值分解的过程与证明过程一致。(证明过程大多为数学公式,看的迷糊)
  • 奇异值分解分解的关键就是构造对称矩阵,之后可以很轻松的通过求行列知得到 V 、 Σ V、\Sigma VΣ
  • 之后再根据步骤(4)计算正奇异值和 A T A^T AT的零空间的一组标准正交基。
一个简单的例题 !

mmexport1701774477934_edit_168026478061159.jpgmmexport1701774481296_edit_168041063679435.jpgmmexport1701774484311_edit_168054626604534.jpg

4 Python 实现 SVD

未完待续!!

参考文献

  • [1] 李航. 统计学习方法[M]. 2019年5月 第二版. 清华大学出版社, 2020.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值