本篇笔记主要参考《统计学习方法》
奇异值分解的定义与性质
定义与定理
奇异值分解又叫做SVD,是一种矩阵因子分解方法,是统计学习中的重要工具。
任意一个m x n矩阵,都可以表示为三个矩阵的乘积形式,分别是m阶标准正交矩阵、由降序排列的非负对角线元素组成的m x n矩形对角矩阵和n阶标准正交矩阵,这就称为该矩阵的奇异值分解。
奇异值分解可以看作矩阵数据压缩的一种方法,即用因子分解的方式近似地表示原始矩阵,这种近似是在平方损失意义下的最优近似。
统计学习方法中对奇异值分解定义如下
其中
U
U
T
=
I
V
V
T
=
I
Σ
=
diag
(
σ
1
,
σ
2
,
⋯
,
σ
p
)
σ
1
⩾
σ
2
⩾
⋯
⩾
σ
p
⩾
0
p
=
min
(
m
,
n
)
(1.0)
\begin{array}{l} U U^{\mathrm{T}}=I \\ V V^{\mathrm{T}}=I \\ \Sigma=\operatorname{diag}\left(\sigma_{1}, \sigma_{2}, \cdots, \sigma_{p}\right) \\ \sigma_{1} \geqslant \sigma_{2} \geqslant \cdots \geqslant \sigma_{p} \geqslant 0 \\ p=\min (m, n) \tag{1.0} \end{array}
UUT=IVVT=IΣ=diag(σ1,σ2,⋯,σp)σ1⩾σ2⩾⋯⩾σp⩾0p=min(m,n)(1.0)
其实个人认为书本里面的用语可能不够严谨,U和V在上面条件的定义下应该是标准正交矩阵。上式中的
σ
\sigma
σ就是奇异值,U的列向量称为左奇异向量,V的列向量称为右奇异向量。
事实上矩阵的奇异值分解可以看作是方阵对角化的推广。还值得一提的是实对称阵一定可以对角化。为什么值得一提?因为这个结论是另一个结论的证明基础:任意m x n的实矩阵都存在满足公式(1.0)要求的奇异值分解。这就是奇异值分解基本定理,表述如下:
下面是定理的证明,该证明过程也是奇异值计算的过程。
奇异值分解基本定理证明:
先考虑A’A。首先因为A’A是实对称阵,所以必然存在一个n阶正交矩阵V能实现A’A的对角化(相似变换)。同时因为是A’A,所以其有特征值都大于0的性质(这个性质简单想想就容易得出,A’A相当于计算模,行列式大于0,所以所有特征值肯定也都大于0)。令x是A’A的特征向量,对应特征值为
λ
\lambda
λ,证明如下
∥
A
x
∥
2
=
x
T
A
T
A
x
=
λ
x
T
x
=
λ
∥
x
∥
2
\|A x\|^{2}=x^{\mathrm{T}} A^{\mathrm{T}} A x=\lambda x^{\mathrm{T}} x=\lambda\|x\|^{2}
∥Ax∥2=xTATAx=λxTx=λ∥x∥2
于是
λ
=
∥
A
x
∥
2
∥
x
∥
2
⩾
0
\lambda=\frac{\|A x\|^{2}}{\|x\|^{2}} \geqslant 0
λ=∥x∥2∥Ax∥2⩾0
假设调整一下正交矩阵让所有特征值形成降序排列
λ
1
⩾
λ
2
⩾
⋯
⩾
λ
n
⩾
0
\lambda_{1} \geqslant \lambda_{2} \geqslant \cdots \geqslant \lambda_{n} \geqslant 0
λ1⩾λ2⩾⋯⩾λn⩾0
那么特征值的平方根就是矩阵A的奇异值
σ
j
=
λ
j
,
j
=
1
,
2
,
⋯
,
n
\sigma_{j}=\sqrt{\lambda_{j}}, \quad j=1,2, \cdots, n
σj=λj,j=1,2,⋯,n
因为A的秩是r,所以A’A的秩也是r,这里可参照Ax=o中x的空间的维度与A’Ax=o的x空间的维度一致,由维数定理可知秩也一致。所以非0特征值个数与0特征值个数都可以确定了:
λ
1
⩾
λ
2
⩾
⋯
⩾
λ
r
>
0
,
λ
r
+
1
=
λ
r
+
2
=
⋯
=
λ
n
=
0
\lambda_{1} \geqslant \lambda_{2} \geqslant \cdots \geqslant \lambda_{r}>0, \quad \lambda_{r+1}=\lambda_{r+2}=\cdots=\lambda_{n}=0
λ1⩾λ2⩾⋯⩾λr>0,λr+1=λr+2=⋯=λn=0
对应地,奇异值也一样
σ
1
⩾
σ
2
⩾
⋯
⩾
σ
r
>
0
,
σ
r
+
1
=
σ
r
+
2
=
⋯
=
σ
n
=
0
\sigma_{1} \geqslant \sigma_{2} \geqslant \cdots \geqslant \sigma_{r}>0, \quad \sigma_{r+1}=\sigma_{r+2}=\cdots=\sigma_{n}=0
σ1⩾σ2⩾⋯⩾σr>0,σr+1=σr+2=⋯=σn=0
这时候根据奇异值是否为0,来对矩阵V进行分块操作,令
V
1
=
[
ν
1
ν
2
⋯
ν
r
]
,
V
2
=
[
ν
r
+
1
ν
r
+
2
⋯
ν
n
]
V_{1}=\left[\begin{array}{llll} \nu_{1} & \nu_{2} & \cdots & \nu_{r} \end{array}\right], \quad V_{2}=\left[\begin{array}{llll} \nu_{r+1} & \nu_{r+2} & \cdots & \nu_{n} \end{array}\right]
V1=[ν1ν2⋯νr],V2=[νr+1νr+2⋯νn]
这样0特征值对应的列向量成一块,非零特征值对应的列向量也成一块。就构成了n阶正交矩阵V。标准化一下可得标准正交阵V。缩放特征向量其对应的特征值是不变的,所以缩小模长倍也OK。
这时候看中间的对角阵,先定义r阶对角阵为
Σ
1
=
[
σ
1
σ
2
⋱
σ
r
]
\Sigma_{1}=\left[\begin{array}{cccc} \sigma_{1} & & & \\ & \sigma_{2} & & \\ & & \ddots & \\ & & & \sigma_{r} \end{array}\right]
Σ1=⎣⎢⎢⎡σ1σ2⋱σr⎦⎥⎥⎤
于是m x n矩形对角矩阵可表示为
Σ
=
[
Σ
1
0
0
0
]
\Sigma=\left[\begin{array}{cc} \Sigma_{1} & 0 \\ 0 & 0 \end{array}\right]
Σ=[Σ1000]
这是V和对角阵都确定,先不急着确定U,继续看看V,由于其列向量构成A’A的特征向量,所以
A
T
A
v
j
=
0
,
j
=
r
+
1
,
⋯
,
n
A^{\mathrm{T}} A v_{j}=0, \quad j=r+1, \cdots, n
ATAvj=0,j=r+1,⋯,n
这里发现
V
2
V_2
V2的列向量构成了A’A的零空间,也就是核,所以
V
2
V_2
V2的列向量也构成A的零空间的一组标准正交基,于是可得
A
V
2
=
0
A V_{2}=0
AV2=0
根据分块矩阵和正交阵的性质,有
I
=
V
V
T
=
V
1
V
1
T
+
V
2
V
2
T
A
=
A
I
=
A
V
1
V
1
T
+
A
V
2
V
2
T
=
A
V
1
V
1
T
\begin{array}{c} I=V V^{\mathrm{T}}=V_{1} V_{1}^{\mathrm{T}}+V_{2} V_{2}^{\mathrm{T}} \\ A=A I=A V_{1} V_{1}^{\mathrm{T}}+A V_{2} V_{2}^{\mathrm{T}}=A V_{1} V_{1}^{\mathrm{T}} \end{array}
I=VVT=V1V1T+V2V2TA=AI=AV1V1T+AV2V2T=AV1V1T
完毕,接下来确定U!
令
u
j
=
1
σ
j
A
v
j
,
j
=
1
,
2
,
⋯
,
r
U
1
=
[
u
1
u
2
⋯
u
r
]
\begin{array}{c} u_{j}=\frac{1}{\sigma_{j}} A v_{j}, \quad j=1,2, \cdots, r \\ U_{1}=\left[\begin{array}{llll} u_{1} & u_{2} & \cdots & u_{r} \end{array}\right] \end{array}
uj=σj1Avj,j=1,2,⋯,rU1=[u1u2⋯ur]
这时候可知这r个u一定是线性无关的了,
A
V
1
=
U
1
Σ
1
A V_{1}=U_{1} \Sigma_{1}
AV1=U1Σ1
U1的列向量构成一组标准正交基,因为
u
i
T
u
j
=
(
1
σ
i
v
i
T
A
T
)
(
1
σ
j
A
v
j
)
=
1
σ
i
σ
j
v
i
T
(
A
T
A
v
j
)
=
σ
j
σ
i
v
i
T
v
j
=
δ
i
j
,
i
=
1
,
2
,
⋯
,
r
;
j
=
1
,
2
,
⋯
,
r
\begin{aligned} u_{i}^{\mathrm{T}} u_{j} &=\left(\frac{1}{\sigma_{i}} v_{i}^{\mathrm{T}} A^{\mathrm{T}}\right)\left(\frac{1}{\sigma_{j}} A v_{j}\right) \\ &=\frac{1}{\sigma_{i} \sigma_{j}} v_{i}^{\mathrm{T}}\left(A^{\mathrm{T}} A v_{j}\right) \\ &=\frac{\sigma_{j}}{\sigma_{i}} v_{i}^{\mathrm{T}} v_{j} \\ &=\delta_{i j}, \quad i=1,2, \cdots, r ; \quad j=1,2, \cdots, r \end{aligned}
uiTuj=(σi1viTAT)(σj1Avj)=σiσj1viT(ATAvj)=σiσjviTvj=δij,i=1,2,⋯,r;j=1,2,⋯,r
那现在要做的就是把u扩展成m维,使得U1到Um变成m维空间中的一组正交基,只是从r维往后的U是落在Ax=o解空间里面了。
所以可以这样定义U:
U
2
=
[
u
r
+
1
u
r
+
2
⋯
u
m
]
U
=
[
U
1
U
2
]
\begin{array}{l} U_{2}=\left[\begin{array}{lll} u_{r+1} & u_{r+2} & \cdots & u_{m} \end{array}\right] \\ U=\left[\begin{array}{ll} U_{1} & U_{2} \end{array}\right] \end{array}
U2=[ur+1ur+2⋯um]U=[U1U2]
上面都是在说A’A,所以最后,我们来验证一下上面得到的U,V和对角阵确实最终组成的是A的表达式:
U
Σ
V
T
=
[
U
1
U
2
]
[
Σ
1
0
0
0
]
[
V
1
T
V
2
T
]
=
U
1
Σ
1
V
1
T
=
A
V
1
V
1
T
=
A
\begin{aligned} U \Sigma V^{\mathrm{T}} &=\left[U_{1} \quad U_{2}\right]\left[\begin{array}{cc} \Sigma_{1} & 0 \\ 0 & 0 \end{array}\right]\left[\begin{array}{c} V_{1}^{\mathrm{T}} \\ V_{2}^{\mathrm{T}} \end{array}\right] \\ &=U_{1} \Sigma_{1} V_{1}^{\mathrm{T}} \\ &=A V_{1} V_{1}^{\mathrm{T}} \\ &=A \end{aligned}
UΣVT=[U1U2][Σ1000][V1TV2T]=U1Σ1V1T=AV1V1T=A
其实这里V为A’A的特征向量(右奇异向量),U为AA’的特征向量(左奇异向量)。
奇异值分解的几种形式
完全奇异值分解
就是前一节里面分解的形式对矩阵所有奇异值都分解好:
A
=
U
Σ
V
T
A=U \Sigma V^{\mathrm{T}}
A=UΣVT
紧奇异值分解
所谓紧奇异值分解,就是与原始矩阵A等秩的奇异值分解。若秩为r,紧奇异值分解就是
A
=
U
r
Σ
r
V
r
T
A=U_{r} \Sigma_{r} V_{r}^{\mathrm{T}}
A=UrΣrVrT
其实就是前一节中,只取U、V和对角阵的第一部分,丢掉对角阵0特征值部分,丢掉U的r后面的列,丢掉V’的r后面的行。
一般奇异值分解不特别说明的话就是紧奇异值分解。
截断奇异值分解
所谓截断奇异值分解,就是比原始矩阵A低秩的奇异值分解。
A
≈
U
k
Σ
k
V
k
T
A \approx U_{k} \Sigma_{k} V_{k}^{\mathrm{T}}
A≈UkΣkVkT
几何解释
下面是《统计学习方法》中给出的几何解释:
主要性质
矩阵的奇异值分解有如下几个主要性质:
- 因为
A
=
U
Σ
V
T
A=U \Sigma V^{\mathrm{T}}
A=UΣVT,所以
A
V
=
U
Σ
AV=U \Sigma
AV=UΣ。奇异值、左奇异向量和右奇异向量存在如下关系
A v j = σ j u j , j = 1 , 2 , ⋯ , n A v_{j}=\sigma_{j} u_{j}, \quad j=1,2, \cdots, n Avj=σjuj,j=1,2,⋯,n - 矩阵A的奇异值分解中,奇异值是唯一的,而U和V不是唯一的
- 矩阵A和 Σ \Sigma Σ的秩相等,等于正奇异值个数r
- 矩阵A的r个右奇异向量构成A’的像空间的标准正交基,剩下n-r个右奇异向量构成A’核空间的标准正交基;矩阵A的r个左奇异向量构成A的像空间的标准正交基,m-r个左奇异向量构成A的核空间的标准正交基
奇异值分解的计算
其实根据前一节奇异值分解定理的证明过程,对奇异值分解的计算过程也应当理解迅速了。矩阵A的奇异值分解可以通过求对称矩阵A’A的特征向量和特征值得到。A’A的特征向量构成正交矩阵V的列,特征值的平方根为奇异值。由小到大排列后作为对角线元素,构成对角矩阵。之后求奇异值对应的左奇异向量,再扩充标准正交基,构成正交矩阵U的列。
上面一段话可以总结分成下面几个步骤:
- 求 A T A A^TA ATA的特征值和特征向量
- 求n阶正交矩阵V
- 求m x n对角矩阵 Σ \Sigma Σ
- 求m阶正交矩阵U
- 得出奇异值分解
奇异值分解与矩阵近似
弗罗贝尼乌斯范数
弗罗贝尼乌斯范数的表达式如下,这里a代表矩阵中的元素。弗罗贝尼乌斯范数就是矩阵中所有元素的平方和再开更号,也就是矩阵的二范数,也就是L2范数的推广。
∥
A
∥
F
=
(
∑
i
=
1
m
∑
j
=
1
n
(
a
i
j
)
2
)
1
2
\|A\|_{F}=\left(\sum_{i=1}^{m} \sum_{j=1}^{n}\left(a_{i j}\right)^{2}\right)^{\frac{1}{2}}
∥A∥F=(i=1∑mj=1∑n(aij)2)21
引入这个范数后,可得如下结论:
∥
A
∥
F
=
(
σ
1
2
+
σ
2
2
+
⋯
+
σ
n
2
)
1
2
\|A\|_{F}=\left(\sigma_{1}^{2}+\sigma_{2}^{2}+\cdots+\sigma_{n}^{2}\right)^{\frac{1}{2}}
∥A∥F=(σ12+σ22+⋯+σn2)21
这里的
σ
\sigma
σ是矩阵的奇异值。这个结论很有用,下一节说明结论代表了什么意思。先看看这个结论的证明。
这个证明很简单,要证明上面的式子等价于证明
∥
Q
A
∥
F
=
∥
A
∥
F
\|Q A\|_{F}=\|A\|_{F}
∥QA∥F=∥A∥F
而
∥
Q
A
∥
F
2
=
∥
(
Q
a
1
,
Q
a
2
,
⋯
,
Q
a
n
)
∥
F
2
=
∑
i
=
1
n
∥
Q
a
i
∥
2
2
=
∑
i
=
1
n
∥
a
i
∥
2
2
=
∥
A
∥
F
2
\begin{aligned} \|Q A\|_{F}^{2} &=\left\|\left(Q a_{1}, Q a_{2}, \cdots, Q a_{n}\right)\right\|_{F}^{2} \\ &=\sum_{i=1}^{n}\left\|Q a_{i}\right\|_{2}^{2}=\sum_{i=1}^{n}\left\|a_{i}\right\|_{2}^{2}=\|A\|_{F}^{2} \end{aligned}
∥QA∥F2=∥(Qa1,Qa2,⋯,Qan)∥F2=i=1∑n∥Qai∥22=i=1∑n∥ai∥22=∥A∥F2
所以
∥
A
∥
F
=
∥
U
Σ
V
T
∥
F
=
∥
Σ
∥
F
\|A\|_{F}=\left\|U \Sigma V^{\mathrm{T}}\right\|_{F}=\|\Sigma\|_{F}
∥A∥F=∥∥UΣVT∥∥F=∥Σ∥F
得证。
矩阵的最优近似
现在就来谈谈上面的那个结论代表了什么意思了。其实奇异值分解可视作平方损失弗罗贝尼乌斯范数意义下对矩阵的最优近似,也就是说,如果用弗罗贝尼乌斯范数来衡量矩阵的信息,那么奇异值分解一丁点都没有损伤矩阵的信息,从而还达成了压缩的效果。
关于最优近似的一个定理1为
也就是说,秩不超过k的所有矩阵里面,将A与其相减之后得出的能让F值达到最小的那个值,这个情况下的矩阵X就是A的最优近似。这和上面不一样了,如果k可以达到r,那一点信息损失都不会有,问题是现在k小于r,既然损失没法避免,那么取最小的就是自然的思想。这里的损失函数也就是弗罗贝尼乌斯范数。
另一个定理2为:
特别地,若
A
′
=
U
Σ
′
V
T
A^{\prime}=U \Sigma^{\prime} V^{\mathrm{T}}
A′=UΣ′VT,其中
Σ
′
=
[
σ
1
⋱
0
σ
k
0
0
⋱
0
]
=
[
Σ
k
0
0
0
]
\Sigma^{\prime}=\left[\begin{array}{ccccc} \sigma_{1} & & & & \\ & \ddots & & & 0 \\ & & \sigma_{k} & & \\ & & & 0 & & \\ & 0 & & & \ddots & \\ & & & & & 0 \end{array}\right]=\left[\begin{array}{cc} \Sigma_{k} & 0 \\ 0 & 0 \end{array}\right]
Σ′=⎣⎢⎢⎢⎢⎢⎢⎡σ1⋱0σk00⋱0⎦⎥⎥⎥⎥⎥⎥⎤=[Σk000]
则
∥
A
−
A
′
∥
F
=
(
σ
k
+
1
2
+
σ
k
+
2
2
+
⋯
+
σ
n
2
)
1
2
=
min
S
∈
M
∥
A
−
S
∥
F
\left\|A-A^{\prime}\right\|_{F}=\left(\sigma_{k+1}^{2}+\sigma_{k+2}^{2}+\cdots+\sigma_{n}^{2}\right)^{\frac{1}{2}}=\min _{S \in \mathcal{M}}\|A-S\|_{F}
∥A−A′∥F=(σk+12+σk+22+⋯+σn2)21=S∈Mmin∥A−S∥F
也就是说,如果按定理1说的那样,找到了这样一个矩阵X,那么在X的近似下和原来A差多少呢?也就是说用了X近似之后损失了多少信息呢?定理2告诉你,在用弗罗贝尼乌斯当做评价指标的情况下,差了 ( σ k + 1 2 + σ k + 2 2 + ⋯ + σ n 2 ) 1 2 \left(\sigma_{k+1}^{2}+\sigma_{k+2}^{2}+\cdots+\sigma_{n}^{2}\right)^{\frac{1}{2}} (σk+12+σk+22+⋯+σn2)21这么多。
也就是说A的信息被遗弃的最少的情况( min S ∈ M ∥ A − S ∥ F \min _{S \in \mathcal{M}}\|A-S\|_{F} minS∈M∥A−S∥F)再少也少不过 ( σ k + 1 2 + σ k + 2 2 + ⋯ + σ n 2 ) 1 2 \left(\sigma_{k+1}^{2}+\sigma_{k+2}^{2}+\cdots+\sigma_{n}^{2}\right)^{\frac{1}{2}} (σk+12+σk+22+⋯+σn2)21这么多,能达成这样这已经是最优了,是最优近似了。而A’就是那个最优近似,即 X = A ′ = U Σ ′ V T X=A^{\prime}=U \Sigma^{\prime} V^{\mathrm{T}} X=A′=UΣ′VT。
这里的证明较为繁琐,就不展开说明了。这里的A’其实就是截断奇异值分解,是秩为k的所有矩阵中在弗罗贝尼乌斯范数意义下对A的最优近似矩阵。