奇异值分解
奇异值分解(singular value deomposition, SVD)是一种矩阵因子分解方法,是线性代数的概念。任意一个矩阵,可以表示为三个矩阵的乘积(因子分解)形式。矩阵的奇异值分解一定存在,但不唯一,可以看作是矩阵数据压缩的一种方法,即用因子分解的方式近似地表示原始矩阵,这种近似是在平方损失意义下的最优近似。
1 奇异值分解的定义
矩阵的奇异值分解是指将
m
∗
n
m*n
m∗n的实矩阵
A
A
A表示为以下三个实矩阵乘积形式的运算。
A
=
U
∑
V
T
A=U\sum V^T
A=U∑VT
其中
U
U
U是
m
m
m阶正交矩阵,
V
V
V是
n
n
n阶正交矩阵,
∑
\sum
∑是
m
∗
n
m*n
m∗n阶正交矩阵。
其对角元素非负,且满足
δ
1
≥
δ
2
≥
.
.
.
≥
δ
p
≥
0
\delta_1 \geq \delta_2 \geq ...\geq\delta_p \geq0
δ1≥δ2≥...≥δp≥0
任意给定的一个实矩阵,其奇异值分解一定存在,但并不唯一。
奇异值分解包括紧奇异值分解和截断奇异值分解。紧奇异值分解是与原始矩阵等秩的奇异值分解,截断奇异值分解是比原始矩阵低秩的奇异值分解。
奇异值分解有明确的几何解释。奇异值分解对应三个连续的线性变换:一个旋转变换,一个缩放变换和另一个旋转变换。第一个和第三个旋转变换分别基于空间的标准正交基进行。
2 奇异值分解的计算
设矩阵
A
A
A的奇异值分解为
A
=
U
∑
V
T
A=U \sum V^T
A=U∑VT,则有
A
T
A
=
V
(
∑
T
∑
)
V
T
A^TA=V(\sum^T \sum)V^T
ATA=V(∑T∑)VT
A
T
A
=
U
(
∑
∑
T
)
U
T
A^TA=U(\sum \sum^T)U^T
ATA=U(∑∑T)UT
矩阵
A
A
A的奇异值分解可以通过求矩阵
A
T
A
A^TA
ATA的特征值和特征向量得到:
A
T
A
A^TA
ATA的特征向量构成正交矩阵
V
V
V的列;从
A
A
T
AA^T
AAT的特征值的平方根
λ
i
\lambda_i
λi得到奇异值
δ
i
\delta_i
δi,即
δ
i
=
λ
j
,
j
=
1
,
2
,
.
.
.
,
n
\delta_i=\sqrt{\lambda_j},j=1,2,...,n
δi=λj,j=1,2,...,n
对其进行由大到小排列,作为对角线元素,构成对角矩阵
∑
\sum
∑;求正奇异值对应的左奇异向量,再求扩充的
A
T
A^T
AT的标准正交基,构成正交矩阵
U
U
U的列。
(1)首先求
A
T
A
A^TA
ATA的特征值和特征向量。
(
w
−
λ
I
)
x
=
0
(w-\lambda I)x=0
(w−λI)x=0
得到特征值
λ
i
\lambda_i
λi,并对其进行升序排列。
(2)求
n
n
n阶正交矩阵
V
V
V
将特征向量单位化,得到特征向量构成的
n
n
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*n
m∗n对角矩阵
∑
\sum
∑
计算
A
A
A的奇异值:
δ
i
=
λ
i
\delta_i=\sqrt{\lambda_i}
δi=λi
∑
=
d
i
a
g
(
δ
1
,
δ
2
,
.
.
.
,
δ
n
)
\sum=diag(\delta_1,\delta_2,...,\delta_n)
∑=diag(δ1,δ2,...,δn)
(4)求
m
m
m阶正交矩阵
U
U
U
求
A
A
A的前
r
r
r个正奇异值:
u
j
=
1
δ
j
A
v
j
u_j= \frac1 \delta_j A v_j
uj=δ1jAvj
U
=
[
u
1
u
2
.
.
.
u
r
]
U=[u_1 \quad u_2 \quad...\quad u_r]
U=[u1u2...ur]
U
=
[
U
1
U
2
]
U=[U_1 \quad U_2]
U=[U1U2]
(5)得到奇异值分解
A
=
U
∑
V
T
A=U\sum V^T
A=U∑VT
3 奇异值分解与矩阵近似
3.1 弗罗贝尼乌斯范数
奇异值分解也是一种矩阵近似的方法,这个近似是在弗罗贝尼乌斯范数意义下的近似。矩阵的弗罗贝尼乌斯范数是向量的
L
2
L_2
L2范数的直接推广。定义为:
∣
∣
A
∣
∣
F
=
(
∑
i
=
1
m
∑
j
=
1
n
(
a
i
j
)
2
)
1
2
=
(
δ
1
2
+
δ
2
2
+
.
.
.
.
+
δ
n
2
)
1
2
||A||_F=(\sum_{i=1}^m \sum_{j=1}^n (a_{ij})^2)^\frac12=(\delta_1^2+\delta_2^2+....+\delta_n^2)^{\frac12}
∣∣A∣∣F=(i=1∑mj=1∑n(aij)2)21=(δ12+δ22+....+δn2)21
在秩不超过
k
k
k的
m
∗
n
m*n
m∗n矩阵的集合中,存在矩阵
A
A
A的弗罗贝尼乌斯范数意义下的最优近似矩阵
X
X
X.
3.2矩阵的最优近似
矩阵的秩
r
a
n
k
(
A
)
=
r
rank(A)=r
rank(A)=r,并设
M
M
M是
R
m
∗
n
R^{m*n}
Rm∗n中所有秩不超过
k
k
k的矩阵的集合,
0
<
k
<
r
0 <k<r
0<k<r,使得:
∣
∣
A
−
X
∣
∣
F
=
m
i
n
S
∈
M
∣
∣
A
−
S
∣
∣
F
||A-X||_F=min_{S \in M} ||A-S||_F
∣∣A−X∣∣F=minS∈M∣∣A−S∣∣F
∣
∣
A
−
X
∣
∣
F
=
(
δ
k
+
1
2
+
δ
k
+
2
2
+
.
.
.
+
δ
n
2
)
1
2
||A-X||_F=(\delta_{k+1}^2 + \delta_{k+2}^2 + ... + \delta_n^2)^\frac12
∣∣A−X∣∣F=(δk+12+δk+22+...+δn2)21
任意一个实矩阵可以由其外积展开式表示:
A
=
δ
1
u
1
v
1
T
+
δ
2
u
2
v
2
T
+
δ
n
u
n
v
n
T
A=\delta_1 u_1 v_1^T + \delta_2 u_2 v_2^T + \delta_n u_n v_n^T
A=δ1u1v1T+δ2u2v2T+δnunvnT