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≥...≥σp≥0p=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.20000.8000100.8000−0.2
,Σ=
40000030000050000000
,VT=
0010010000011000
矩阵
Σ
\Sigma
Σ是对角矩阵,对角线之外的元素都为零,对角线上的元素降序排列且大于等于 0。矩阵
U
、
V
U、V
U、V为 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≥...≥λn≥0,将特征值带入特征方程计算对应的特征向量。
(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的零空间的一组标准正交基。
一个简单的例题 !
4 Python 实现 SVD
未完待续!!
参考文献
- [1] 李航. 统计学习方法[M]. 2019年5月 第二版. 清华大学出版社, 2020.