文章目录
写在前面的话
以下内容基于《统计学习方法(第二版)》整理。看完第15章,不知多少人似懂非懂,反正我上一次看线性代数已经是后考研时代了。好吧,我又一次把知识还给了老师。哭~
不过做两道题熟悉的感觉就找回来了,没错,就是它!考研数学三座大山里面最费草稿纸的线性代数!
数形结合能加深对数学的理解,其实整个线性代数都具有几何意义。不以考试为目的反而更能领略数学深层次的乐趣。
在此推荐一些线性代数的学习资料:
- 3Blue1Brown的Essence of linear algebra
- MIT 18.06SC Linear Algebra
- 线性代数(同济6版)
- 《统计学习方法》清华课件PPT分享链接及提取码:4crm
奇异值分解的定义与性质
奇异值分解(singular value decomposition,SVD)是一种矩阵因子分解方法。任意一个 m × n m \times n m×n矩阵,都可以表示为三个矩阵的乘积(因子分解)形式,分别是 m m m阶正交矩阵、由降序排列的非负的对角线元素组成的 m × n m \times n m×n阶对角矩阵和 n n n阶正交矩阵,称为该矩阵的奇异值分解。
矩阵的奇异值分解一定存在,但不唯一。奇异值分解可以看作是矩阵数据压缩的一种方法,即用因子分解的方式近似地表示原始矩阵,这种近似是在平方损失意义下的最优近似。
奇异值分解的形式化定义
矩阵的奇异值分解是指,将一个非零的
m
×
n
m\times n
m×n实矩阵
A
A
A,
A
∈
R
m
×
n
A \in R^{m \times n}
A∈Rm×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矩形对角矩阵(rectangular diagonal matrix),满足:
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} \geq \sigma_{2}\geq...\geq \sigma_{p} \geq 0 \\ 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的奇异值分解,
σ
i
\sigma_{i}
σi称为矩阵
A
A
A的奇异值(singular value),
U
U
U的列向量称为左奇异向量(left singular value),
V
V
V的列向量称为右奇异向量(right singular value)。
奇异值分解基本定理
定理15.1: 若
A
A
A为一
m
×
n
m\times n
m×n实矩阵,
A
∈
R
m
×
n
A \in R^{m \times n}
A∈Rm×n,则
A
A
A的奇异值分解存在
A
=
U
Σ
V
T
A = U \Sigma V^{T}
A=UΣVT其中
U
U
U是
m
m
m阶正交矩阵,
V
V
V是
n
n
n阶正交矩阵,
Σ
\Sigma
Σ是
m
×
n
m \times n
m×n矩形对角矩阵,其对角线元素非负,且按降序排列。
读完可能第一感觉是定理15.1和SVD定义有点冗余,其实定理15.1是奇异值分解的存在性的证明。证明过程是构造性的,证明过程和奇异值求解过程非常类似,具体过程参考《统计学习方法(第二版)》p273页。
紧奇异值分解与截断奇异值分解
定理15.1证明的奇异值分解是完全奇异值分解(full singular value decomposition),紧奇异值分解指的是与原始矩阵等秩的奇异值分解,截断奇异值分解是比原始矩阵低秩的奇异值分解,后两者在实际中更为常用。
奇异值分解是在平方损失(弗罗贝尼乌斯范数)意义下的对矩阵的最优近似。紧奇异值分解对应着无损压缩,截断奇异值分解对应着有损压缩。
紧奇异值分解
定义15.2: 设有
m
×
n
m \times n
m×n实矩阵
A
A
A,其秩为
r
a
n
k
(
A
)
=
r
rank(A) = r
rank(A)=r,
r
≤
m
i
n
(
m
,
n
)
r \leq min(m, n)
r≤min(m,n),则称
U
r
Σ
r
V
r
T
U_{r} \Sigma_{r}V_{r}^{T}
UrΣrVrT为
A
A
A的紧奇异值分解(compact singular value decomposition),即
A
=
U
r
Σ
r
V
r
T
A = U_{r} \Sigma_{r}V_{r}^{T}
A=UrΣrVrT 其中
U
r
U_{r}
Ur是
m
×
r
m \times r
m×r矩阵,
V
r
V_{r}
Vr是
n
×
r
n \times r
n×r矩阵,
Σ
r
\Sigma_{r}
Σr是
r
r
r阶对角矩阵;矩阵
U
r
U_{r}
Ur由完全奇异值分解中
U
U
U的前
r
r
r列,矩阵
V
r
V_{r}
Vr由
V
V
V的前
r
r
r列,矩阵
Σ
r
\Sigma_{r}
Σr由
Σ
\Sigma
Σ的前
r
r
r个对角线元素得到。紧奇异值分解的对角矩阵
Σ
r
\Sigma_{r}
Σr的秩与原始矩阵
A
A
A的秩相等。
截断奇异值分解
在矩阵的奇异值分解中,只取最大的 k k k个奇异值($k < r , , ,r$是矩阵的秩)对应的部分,就得到矩阵的截断奇异值分解。实际应用中提到矩阵的奇异值分解时,通常指截断奇异值分解。
定义15.3: 设有
m
×
n
m \times n
m×n实矩阵
A
A
A,其秩为
r
a
n
k
(
A
)
=
r
rank(A) = r
rank(A)=r,
0
<
k
<
r
0 < k < r
0<k<r,则称
U
k
Σ
k
V
k
T
U_{k} \Sigma_{k}V_{k}^{T}
UkΣkVkT为矩阵
A
A
A的截断奇异值分解(truncated singular value decomposition),即
A
≈
U
k
Σ
k
V
k
T
A \approx U_{k} \Sigma_{k}V_{k}^{T}
A≈UkΣkVkT 其中
U
k
U_{k}
Uk是
m
×
k
m \times k
m×k矩阵,
V
k
V_{k}
Vk是
n
×
k
n \times k
n×k矩阵,
Σ
k
\Sigma_{k}
Σk是
k
k
k阶对角矩阵;矩阵
U
k
U_{k}
Uk由完全奇异值分解中
U
U
U的前
k
k
k列,矩阵
V
k
V_{k}
Vk由
V
V
V的前
k
k
k列,矩阵
Σ
k
\Sigma_{k}
Σk由
Σ
\Sigma
Σ的前
k
k
k个对角线元素得到。对角矩阵
Σ
k
\Sigma_{k}
Σk的秩比原始矩阵
A
A
A的秩低。
奇异值分解的几何解释
从线性变换的角度来理解奇异值分解,
m
×
n
m \times n
m×n矩阵
A
A
A表示从
n
n
n维空间
R
n
R^{n}
Rn到
m
m
m维空间
R
m
R^{m}
Rm的一个线性变换,
T
:
x
→
A
x
,
x
∈
R
n
,
A
x
∈
R
m
T: x \rightarrow Ax,x \in R^{n},Ax \in R^{m}
T:x→Ax,x∈Rn,Ax∈Rm
x
x
x 和
A
x
Ax
Ax分别是各自空间的向量。线性变换可以分解为三个简单的变换:一个坐标系的旋转或反射变换、一个坐标轴的缩放变换、另一个坐标系的旋转或反射变换。奇异值定理保证这种分解一定存在,这就是奇异值分解的几何意义。
奇异值分解的主要性质
- 性质一
设矩阵
A
A
A的奇异值分解为
A
=
U
Σ
V
T
A = U \Sigma V^{T}
A=UΣVT,则以下关系成立:
A
T
A
=
(
U
Σ
V
T
)
T
(
U
Σ
V
T
)
=
V
(
Σ
T
Σ
)
V
T
A
A
T
=
(
U
Σ
V
T
)
(
U
Σ
V
T
)
T
=
U
(
Σ
Σ
T
)
U
T
A^{T}A = (U \Sigma V^{T})^{T}(U \Sigma V^{T}) = V(\Sigma ^{T} \Sigma)V^{T} \\ AA^{T} = (U \Sigma V^{T})(U \Sigma V^{T})^{T} = U(\Sigma \Sigma^{T})U^{T}
ATA=(UΣVT)T(UΣVT)=V(ΣTΣ)VTAAT=(UΣVT)(UΣVT)T=U(ΣΣT)UT 也就是说,矩阵
A
T
A
A^{T}A
ATA和
A
A
T
AA^{T}
AAT的特征分解存在,且可以由矩阵
A
A
A的奇异值分解的矩阵表示。
V
V
V的列向量是
A
T
A
A^{T}A
ATA的特征向量,
U
U
U的列向量是
A
A
T
AA^{T}
AAT的特征向量,
Σ
\Sigma
Σ的奇异值是
A
T
A
A^{T}A
ATA和
A
A
T
AA^{T}
AAT的特征值的 平方根。
- 性质二
在矩阵
A
A
A的奇异值分解中,奇异值、左奇异向量和右奇异向量之间存在如下对应关系。
A
V
=
U
Σ
即
,
A
v
j
=
σ
j
u
j
,
j
=
1
,
2
,
.
.
.
,
n
AV = U\Sigma \\ 即,Av_{j} = \sigma_{j} u_{j},j = 1, 2, ..., n
AV=UΣ即,Avj=σjuj,j=1,2,...,n
- 性质三
矩阵 A A A的奇异值分解中,奇异值 σ 1 , σ 2 , . . . , σ n \sigma_{1}, \sigma_{2}, ..., \sigma_{n} σ1,σ2,...,σn是唯一的,而矩阵 U U U和 V V V不是唯一的。
- 性质四
矩阵 A A A和 Σ \Sigma Σ的秩相等,等于正奇异值 σ i \sigma_{i} σi的个数 r r r,包含重复的奇异值。
- 性质五
矩阵 A A A的 r r r个右奇异向量 v 1 , v 2 , . . . , v r v_{1}, v_{2}, ..., v_{r} v1,v2,...,vr构成 A T A^{T} AT的值域 R ( A T ) R(A^{T}) R(AT)的一组标准正交基。矩阵 A A A的 n − r n - r n−r个右奇异向量 v r + 1 , v r + 2 , . . . , v n v_{r + 1}, v_{r + 2}, ..., v_{n} vr+1,vr+2,...,vn构成 A A A的零空间 N ( A ) N(A) N(A)的一组标准正交基。
类似的,矩阵 A A A的 r r r个左奇异向量 u 1 , u 2 , . . . , u r u_{1},u_{2}, ..., u_{r} u1,u2,...,ur构成值域 R ( A ) R(A) R(A)的一组标准正交基。矩阵 A A A的 m − r m - r m−r个左奇异向量 u r + 1 , u r + 2 , . . . , u m u_{r + 1},u_{r + 2}, ..., u_{m} ur+1,ur+2,...,um构成 A T A^{T} AT的零空间 N ( A T ) N(A^{T}) N(AT)的一组标准正交基。
奇异值分解的计算
SVD的计算过程蕴含在奇异值分解的基本定理中。矩阵 A A A的奇异值分解可以通过求对称矩阵 A T A A^{T}A ATA的特征值和特征向量得到。
- A T A A^{T}A ATA的特征向量构成正交矩阵 V V V的列;
-
A
T
A
A^{T}A
ATA的特征值
λ
j
\lambda_{j}
λj的平方根为奇异值
σ
j
\sigma_{j}
σj,即
σ j = λ j , j = 1 , 2 , . . . , n \sigma_{j} =\sqrt\lambda_{j},j = 1,2,...,n σj=λj,j=1,2,...,n对其由大到小排列作为对角线元素,构成对角矩阵 Σ \Sigma Σ; - 求正奇异值对应的左奇异向量,再求扩充的 A T A^{T} AT的标准正交基,构成正交矩阵 U U U的列。
- 从而得到奇异值分解 A = U Σ V T A = U \Sigma V^{T} A=UΣVT。
奇异值分解与矩阵近似
弗罗贝尼乌斯范数 (Frobenius norm)
设矩阵
A
∈
R
m
×
n
A \in R^{m \times n}
A∈Rm×n,
A
=
[
a
i
j
]
m
×
n
A = [a_{ij}]_{m \times n}
A=[aij]m×n,定义矩阵
A
A
A的弗罗贝尼乌斯范数为:
∣
∣
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} (a_{ij})^{2}\right)^{\dfrac 12}
∣∣A∣∣F=(i=1∑mj=1∑n(aij)2)21 矩阵的弗罗贝尼乌斯范数是向量的
L
2
范
数
L_{2}范数
L2范数的直接推广,对应着机器学习中的平方损失函数。
矩阵的最优近似与外积展开式
最优近似
**定理15.2:**设矩阵
A
∈
R
m
×
n
A \in R^{m \times n}
A∈Rm×n,矩阵的秩
r
a
n
k
(
A
)
=
r
rank(A) = r
rank(A)=r,并设
M
M
M为
R
m
×
n
R^{m \times n}
Rm×n中所有秩不超过
k
k
k的矩阵集合,
0
<
k
<
r
0 < k < r
0<k<r,则存在一个秩为
k
k
k的矩阵
X
∈
M
X \in M
X∈M,使得:
∣
∣
A
−
X
∣
∣
F
=
min
S
∈
M
∣
∣
A
−
S
∣
∣
F
||A - X|| _{F} = \min \limits_{S \in M} ||A - S||_{F}
∣∣A−X∣∣F=S∈Mmin∣∣A−S∣∣F 称矩阵
X
X
X为在Frobenius范数意义下的最优近似。
定理15.3不再赘述,其证明过程较为繁琐,其中式(15.42)记得分块矩阵的转置要分别转置。
外积展开式
外积展开式是矩阵的奇异值分解
A
=
U
Σ
V
T
A = U \Sigma V^{T}
A=UΣVT的一种表示形式,将
A
A
A的奇异值分解看成矩阵
U
Σ
U \Sigma
UΣ和
V
T
V^{T}
VT的乘积,将
U
Σ
U \Sigma
UΣ按列向量分块,将
V
T
V^{T}
VT按行向量分块,即得:
U
Σ
=
[
σ
1
u
1
σ
2
u
2
.
.
.
σ
n
u
n
]
V
T
=
{
v
1
T
v
2
T
⋮
v
n
T
}
(5)
U \Sigma = \left[ \sigma_{1}u_{1} \ \sigma_{2}u_{2} \ ...\ \sigma_{n}u_{n} \right] \\ V^{T} =\begin{Bmatrix} v_{1}^{T} \\ v_{2}^{T} \\ \vdots \\ v_{n}^{T} \end{Bmatrix} \tag{5}
UΣ=[σ1u1 σ2u2 ... σnun]VT=⎩⎪⎪⎪⎨⎪⎪⎪⎧v1Tv2T⋮vnT⎭⎪⎪⎪⎬⎪⎪⎪⎫(5) 即有
A
=
σ
1
u
1
v
1
T
+
σ
2
u
2
v
2
T
+
⋯
+
σ
n
u
n
v
n
T
=
∑
k
=
1
n
σ
k
u
k
v
k
T
A = \sigma_{1}u_{1}v_{1}^{T} + \sigma_{2}u_{2}v_{2}^{T} + \cdots + \sigma_{n}u_{n}v_{n}^{T} = \sum_{k=1}^{n}\sigma_{k}u_{k}v_{k}^{T}
A=σ1u1v1T+σ2u2v2T+⋯+σnunvnT=k=1∑nσkukvkT称为矩阵
A
A
A的外积展开式。
奇异值分解的应用场景
SVD用于数据压缩
以图像压缩为例,在SVD的外积展开式中 A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ n u n v n T = ∑ k = 1 n σ k u k v k T A = \sigma_{1}u_{1}v_{1}^{T} + \sigma_{2}u_{2}v_{2}^{T} + \cdots + \sigma_{n}u_{n}v_{n}^{T} = \sum_{k=1}^{n}\sigma_{k}u_{k}v_{k}^{T} A=σ1u1v1T+σ2u2v2T+⋯+σnunvnT=∑k=1nσkukvkT,每个 σ i \sigma_{i} σi代表当前矩阵的权重,可以理解为每个 σ i \sigma_{i} σi代表在整个矩阵 A A A中所占有的能量信息。那么在图像压缩过程,我们完全可以将保留其中90%的能量信息,舍去其中10%的能量信息。
而实际过程中,我们发现,其中奇异值从大到小衰减得特别快,在很多情况下,前 10% 甚至 1% 的奇异值的和就占了全部的奇异值之和的 99% 以上。那说明,我们完全可以利用截断SVD来进行压缩存储。
那么现在的问题就是如何寻找我们想要截取的k值。确定要保留的奇异值的数目有很多启发式的策略,其中一种就是保留所有能量信息的90%,即将奇异值进行平方求和,找到第k个恰好和大于整个奇异值平方和的90%,那么这个就是我们要截断的范围,对应的也就可以得到:
A
≈
U
k
Σ
k
V
k
T
=
σ
1
u
1
v
1
T
+
σ
2
u
2
v
2
T
+
⋯
+
σ
k
u
k
v
k
T
A \approx U_{k} \Sigma_{k}V_{k}^{T} = \sigma_{1}u_{1}v_{1}^{T} + \sigma_{2}u_{2}v_{2}^{T} + \cdots + \sigma_{k}u_{k}v_{k}^{T}
A≈UkΣkVkT=σ1u1v1T+σ2u2v2T+⋯+σkukvkT
当然,SVD也可以应用于图像去躁中,对于一张图像SVD之后,我们可以认为其中值很小的奇异值是由于噪声所引起的,那么我们完全可以去除这部分的奇异值,从而利用其中的截断SVD重构图片,达到去躁的效果。
SVD用于PCA降维
PCA降维需要找到样本协方差矩阵 X T X X^{T}X XTX的最大的 d d d个特征向量,然后用这最大的 d d d个特征向量张成的矩阵来做低维投影降维。可以看出,在这个过程中需要先求出协方差矩阵 X T X X^{T}X XTX,当样本数多样本特征数也多的时候,这个计算量是很大的。
注意到SVD也可以得到协方差矩阵 X T X X^{T}X XTX最大的 d d d个特征向量张成的矩阵,但是SVD的优点是,有一些SVD的实现算法可以不需要先求出协方差矩阵 X T X X^{T}X XTX,也能求出右奇异矩阵 V V V。也就是说,PCA算法可以不用做特征分解,而是通过SVD来完成。这个方法在样本量很大的时候很有效。实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解。
另一方面,注意到PCA仅仅使用了我们SVD的右奇异矩阵,没有使用左奇异矩阵,那么左奇异矩阵有什么用呢?
假设样本矩阵
X
X
X为
m
×
n
m \times n
m×n,我们通过SVD找到矩阵
X
T
X
X^{T}X
XTX最大的
d
d
d个特征向量张成的
m
×
d
m \times d
m×d维矩阵
U
U
U,则如果我们进行如下处理:
X
d
×
n
′
=
U
d
×
m
T
X
m
×
n
X^{'}_{d \times n} = U^{T}_{d \times m}X_{m \times n}
Xd×n′=Ud×mTXm×n
可以得到一个
d
×
n
d \times n
d×n的矩阵
X
′
X^{'}
X′,这个矩阵和原来的
m
×
n
m \times n
m×n维样本矩阵
X
X
X相比,行数从
m
m
m减少到了
k
k
k,可见对行数进行了压缩。
总结如下,左奇异矩阵可以用于行数的压缩,右奇异矩阵可用于列数即特征维度的压缩,也就是我们的PCA降维。
SVD用于推荐系统
推荐系统中的user-itme矩阵通常十分巨大,且是稀疏矩阵,那么如果直接将矩阵存储,会导致空间复杂度十分巨大。那么在这里,我们就可以利用SVD来压缩矩阵,同时,我们可以将每个矩阵转换成相应的特征上,那么在进行相似度计算的时候,便可以减少计算量。
在实际应用中,对于大规模的数据集,使用SVD会导致速度很慢,所以,我们需要离线将SVD的结果保存,同时还得提前将数据进行相应的降维。
SVD用于潜在语义分析
SVD更为重要的一个应用就是LSI(Latent Semantic Indexing ),也叫做LSA(Latent Semantic Analysis)。一般先通过SVD降维到相应的特征上去,进行相应的计算之后,然后,再通过重构数据集,从而得到我们想要的信息。
潜语义分析LSA源自问题:如何从搜索query中找到相关的文档。当我们试图通过比较词来找到相关的文本时,存在着难以解决的局限性,那就是在搜索中我们实际想要去比较的不是词,而是隐藏在词之后的意义和概念。潜语义分析试图去解决这个问题,它把词和文档都映射到一个‘概念’空间并在这个空间内进行比较(注:也就是一种降维技术)。