本文主要介绍矩阵的两种经典的分解算法:满秩分解和奇异值分解。这两块内容很是基础,同时却又很是重要,在机器学习,模式识别,人工智能等领域有着很是普遍的应用。html
满秩分解
定义与性质
定义1 满秩分解:对于
m×n
的矩阵
A
,假设其秩为
r
,若存在秩一样为
r
两个矩阵:
Fm×r
(列满秩)和
Gr×n
(行满秩),使得
A=FG
,则称其为矩阵
A
的满秩分解。web
定理1:满秩分解有两个性质,算法
- 满秩分解不惟一:假设存在
r
阶可逆方阵
D
,则
A=FG=F(DD−1)G=(FD)(D−1G)=F′G′
;
- 任何非零矩阵必定存在满秩分解。证实以下;
假设存在初等变换矩阵
Bm×m
,使得机器学习
BA=(GO)(1)
其中
G
是个
m×r
的行满秩矩阵。由上面的公式,能够推出,svg
A=B−1(GO)=(F|S)(GO)=FG(2)
公式第二行中,咱们将
B−1
分块为
(F|S)
,其中
F
为
m×r
矩阵(秩为
r
),
G
为
r×n
矩阵(秩为
r
)。学习
满秩分解的计算
若是能理解上面的证实过程,那么计算满秩分解就很容易了,由于方法与证实思路是一致的。人工智能
举个例子来讲明,如今要计算下面矩阵
A
的满秩分解:atom
A=⎛⎝⎜−1120221−1−221−1⎞⎠⎟(3)
首先,对
A
进行初等变换,获得行满秩矩阵
G
和初等矩阵
B
.spa
A=⎛⎝⎜⎜−1120221−1−221−1100010001⎞⎠⎟⎟→⎛⎝⎜⎜−10002010023011101−1001⎞⎠⎟⎟(4)
可见,.net
B=⎛⎝⎜11101−1001⎞⎠⎟,G=(−10021023)(5)
接着,能够算出
B−1=⎛⎝⎜1−1−2011001⎞⎠⎟=(F|S)(6)
由于
r=2
,因此能够获得
F=⎛⎝⎜1−1−2011⎞⎠⎟(7)
所以
A=FG=⎛⎝⎜1−1−2011⎞⎠⎟⋅(−10021023)(8)
另外一种计算满秩分解的方法是用矩阵
A
的Hermite标准型。具体作法以下。
Hermite标准型
先给出Hermite标准型的定义。
定义2 Hermite标准型:对于
m×n
的矩阵
H
,假设其秩为
r
,若
H
知足如下3个条件,则称之为Hermite标准型。
-
H
的前
r
行中,每行都至少含一个非零元素,且每行的第一个非零元是1,然后
m−r
行都是零元;
- 假设第
i
行的第一个非零元(就是1)在第
ji
列,则
j1<j2<⋯<jr
;
-
H
的
j1,j2,…,jr
列是单位矩阵
Em
的前
r
行(这个条件实际上覆盖了前2个条件);
由定义能够看出Hermite标准型就是将秩为
r
的
m×n
矩阵经初等变换而成的阶梯型矩阵。因此也叫作Hermite最简型。
算出Hermite标准型后,对于矩阵的满秩分解
A=FG
来讲,矩阵
F
就是矩阵
A
中
j1,j2,…,jr
列构成的
m×r
矩阵,而
G
则是
H
的前
r
行构成的矩阵。
还举上面的例子,先变换获得矩阵
A
的Hermite标准型:
A=⎛⎝⎜−1120221−1−221−1⎞⎠⎟→⎛⎝⎜100010−10023/20⎞⎠⎟=H(9)
H
前两行第一个非零元所在的列号是1列和2列,因此
F=⎛⎝⎜−112022⎞⎠⎟,G=(1001−1023/2)(10)
特征值分解(EVD)
特征值分解是对于对称矩阵的一个经典的分解算法,它也是后面我要说的奇异值分解的基础。因此有必要专门列一个小节,大体介绍一下。
正交矩阵
在介绍特征值分解以前,先科普一个概念——正交矩阵。
定义3 正交矩阵:指知足
AAT=E
的矩阵
A
,其中
E
为单位矩阵。
正交矩阵是欧式空间的叫法,在酉空间(即复数域上的欧式空间)叫酉矩阵。从定义也能看出正交矩阵有着不少特殊的性质:
-
A
的各行(列)是单位向量且两两正交;
-
A
在任意一组标准正交基下对应的线性变换为正交变换(即只旋转向量,却不改变向量之间的夹角和向量长度)
-
|A|=±1
-
AT=A−1
正交阵的概念先摆在这,后面用到我再提。
特征值与特征向量
定义4 特征值与特征向量:设
A
为数域P上的线性空间V的一个线性变换,若是对于P中一数
λ0
,存在非零向量
ξ
,使得下式成立,那么
λ0
称为
A
的一个特征值,而
ξ
称为
A
的属于特征值
λ0
的一个特征向量,即
Aξ=λ0ξ(11)
计算一个线性变换
A
的特征值与特征向量的方法能够分为如下三步。
- 指定线性空间内的一组基,并写出
A
在这组基下的矩阵
A
;
- 求出
A
的特征多项式
|λE−A|
在数域P的所有根(几重根就算几个),这些根就是
A
的所有特征值;
- 把所得的特征值逐个带入
AX=λiX
,求出关于每一个特征值的一组基础解系,也就是所有的线性无关的特征向量;
我举例解释一下:假设有线性变换
A
在基
ε1,ε2,ε3
下的矩阵是
A
,如今求它的特征值和特征向量。
A=⎛⎝⎜122212221⎞⎠⎟(12)
其特征多项式
|λE−A|=(λ+1)2+(λ−5)
,解得
λ1=−1
(二重),
λ2=5
。将
λ1=−1
代入方程组
AX=−X
,解得基础解系是:
⎛⎝⎜10−1⎞⎠⎟,⎛⎝⎜01−1⎞⎠⎟(13)
所以,能够获得属于特征值-1的两个线性无关的特征向量:
ξ1=ε1−ε3,ξ2=ε2−ε3
.
同理,也能够求出属于特征值5的特征向量
ξ3=ε1+ε2+ε3
.
了解了特征值和特征向量,能够给出特征子空间和矩阵迹的概念了,以下。
定义5 特征子空间:咱们把属于特征值
λ0
的全部特征向量加上零向量构成的空间称为
λ0
对应的特征子空间(记为
Vλ0
),
Vλ0
的维数就是属于
λ0
的全部线性无关的特征向量的个数
定义6 矩阵的迹:矩阵
A
的全体特征值的和为
A
的迹,记为
Tr(A)
。实际上,经过证实咱们还能够知道
Tr(A)
也等于
A
的主对角线上全部元素的和,即
Tr(A)=a11+a22+⋯+ann
。
下面我再补充一个重要的概念——类似矩阵。
类似矩阵
定义7 类似矩阵:
A,B
为两个
n
阶矩阵,若是存在
n
阶矩阵
X
使得
B=X−1AX
成立,则
A,B
被称为是类似的,记为
A
~
B
。
上面说到每个线性变换在不一样基下对应着不一样的矩阵,那这些矩阵有什么关系呢?有以下定理:
定理2:线性变换在不一样的基下所对应的矩阵是类似的,反之,若两个矩阵类似,则它们能够被看做是同一个线性变换在不一样基下的矩阵。
理解了类似矩阵的概念,咱们接着探究类似矩阵与特征多项式的关系,有以下定理:
定理3:类似的矩阵有相同的特征多项式。证实以下,
咱们知道,若
A
~
B
,则有可逆矩阵
X
,使得
B=X−1AX
,那能够作出以下的推导:
|λE−B|=|λE−X−1AX|=|X−1(λE−A)X|=|X−1||λE−A||X|=|λE−A|(14)
根据定理2,咱们知道,同一个线性变换在不一样的基下所对应的矩阵是类似的,而定理3告诉咱们类似的矩阵有相同的特征多项式,那也就说明了一个问题:即线性变换矩阵的特征多项式与选择的基是无关的。
对角矩阵
对角矩阵即除了主对角线中的元素外,其余元素都为0的矩阵。对角矩阵和线性变换的结合很是紧密,有以下定理存在:
定理4:线性变换
A
在某一组基下式对角矩阵的充要条件是,
A
有
n
个线性无关的特征向量。
定理5:属于不一样特征值的特征向量是线性无关的。
特征值分解的计算
咱们知道对于一个
n×n
的对称矩阵
A
来讲(即
AT=A
),它与对角矩阵是类似的(证实我略了),那他能够被看做是一个对角阵对应的线性变换
A
在另外一组基下的矩阵,由于对角阵有
n
个线性无关的特征向量,而属于不一样特征值的特征向量是线性无关的,因此咱们说对称阵
A
必定有
n
个特征值(重根算多个)。
综上,能够获得:
AX1AX2AXn=λ1X1=λ1X2…=λ1Xn(31)
化简一下,上式能够写成:
AU=UΛ
,其中
U=(X1,X2,…,Xn)
,
Λ=⎛⎝⎜⎜⎜⎜⎜λ10⋮00λ2⋮0……⋱…00⋮λn⎞⎠⎟⎟⎟⎟⎟(16)
由于对称阵有一个性质:不一样特征值对应的特征向量两两正交。因此此处
U
即为正交阵(正交阵的概念上面说了,至于正交阵的每一列是单位向量的问题,你对特征值作处理就完了)。
综上,一个对称阵的特征值分解能够写成:
A=UΛU−1=UΛUT
,其中
U
是正交矩阵,每一个列向量有
A
对应的归一化的特征向量构成。
如今对于任意的
n
维向量
Y
来讲,能够经过矩阵
A
实现相应的线性变换。
AY=UΛUTY(17)
其中
UTY
至关因而对
Y
作了一个正交变换。根据前面介绍的正交变换相关知识,正交变换至关因而对向量
Y
换了一个坐标系,而新坐标系的基就是
A
的全部特征向量(即
U
的全部列向量),所以,
UTY=(a1,…,an)
,
a1,…,an
至关因而
Y
在新坐标系下的坐标.
继续化简上面的公式,
AY=UΛUTY=UΛ(a1,…,an)=U⎛⎝⎜⎜⎜⎜⎜λ10⋮00λ2⋮0……⋱…00⋮λn⎞⎠⎟⎟⎟⎟⎟(a1,…,an)=U⎛⎝⎜⎜⎜⎜λ1a1λ2a2⋮λ1a1⎞⎠⎟⎟⎟⎟(18)
λiai
至关因而对向量
y
在新的坐标系下沿对应的轴方向进行了拉伸或者压缩,并无改变向量实际的方向,最后再左乘
U
至关于对当前的向量再次进行正交变换,由于
U
是
UT
的逆矩阵,因此这是一个与
UT
的变换相反的变换。综上,对阵矩阵
A
所对应的变换实际上能够将一组正交基映射为另外一组正交基。
奇异值分解(SVD)
奇异值
上面说了一大推,其实就是介绍了对阵矩阵的一个性质:即把一组正交基映射为另外一组正交基。对于任意的
m×n
的矩阵
A
,
A
能够将
n
维空间中的向量映射到
k
维空间中(
k≤m
),那么如今来探究可否找到这样一组
n
维正交基,使之通过
A
的变换后,仍是正交基。寻找这样正交基的过程,就是SVD的核心思路。
好了,先假设存在这样的正交基
(V1,V2,…,Vn)
,
|Vi|=1
,通过
A
映射后变为
(AV1,AV2,…,AVn)
(实际上,这里的
AVi
都是
m
维向量)。既然他们两两正交,那么就得知足下面的公式。
(AVi)(AVj)=(AVi)T⋅AVj=VTi(ATA)Vj=0(19)
如今来证实这个公式是成立的(成立的话表示正交基找到了)。由于我在假设中,设置的
(V1,V2,…,Vn)
是一组正交基,因此,
VTiVj=0
。我把这个结论先放这(下面的公式要用)。接着想,如今
ATA
是个
n×n
的对称矩阵。由于对称矩阵必定有
n
个特征值,其特征向量两两正交,那我就假设
(V1,V2,…,Vn)
是
ATA
的特征向量,能够获得
VTi(ATA)Vj=VTiλjVj=λjVTiVj=0(20)
这样我就证实了
(AV1,AV2,…,AVn)
是一组正交向量。再对这组正交向量作归一化处理,构成一组新的正交基。先计算每一个
AVi
的模数:
|AVi|2=λiVTiVi=λi(21)
取单位向量后,获得
ui=1λi√AVi
,其中
σi=λi−−√
被称为是矩阵
A
的奇异值,它实际上就是对称阵
ATA
的特征值的算数平方根。而
(u1,…,un)
则是一组通过归一化处理的,两两正交的
m
维向量的集合,在这个集合当中,咱们固然能够找到一组
k
维空间的正交基(
k≤m,k≤n
)。
上一段的最后一句话能够这样理解:假设
m=3,k=2,n=3
,
u1=(1,0,0),u2=(0,1,0),u3=(0,0,0)
,
u1,u2,u3
两两正交,咱们天然能够找到
k=2
维空间的正交基:
u′1=(1,0),u′2=(0,1)
分解过程
上面获得的正交基对咱们很是重要,它能够用来作奇异值分解。咱们先明确这样一个关系:
σiu′i=AVi,i∈{1,…,k}
,如今我作以下两组正交基的拓展工做:
- 生成
(u′1,…,u′m)
。它是由
(u′1,…,u′k)
拓展生成的
m
维空间的正交基
- 已知
(V1,…,Vn)
是
n
维空间中一组两两正交的向量,其中,
(Vk+1,…,Vn)
使得
AVi=0,i∈{k+1,…,n}
那么,有下面的公式成立:
A(V1,…,Vk|Vk+1,…,Vn)=(AV1,…,AVk|O,…,O)=(u′1,…,u′k|u′k+1,…,u′m)⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜σ1−⋱−Oσk−−O−O−⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟(22)
继而能够获得奇异值分解的公式:
A=UΣVT=(u′1,…,u′m)⋅⎛⎝⎜⎜⎜⎜⎜σ1⋱σkO⎞⎠⎟⎟⎟⎟⎟⋅⎛⎝⎜⎜V1⋮Vn⎞⎠⎟⎟(23)
其中
U
是
m×m
的正交阵,
Σ
是
m×n
的对角阵,
V
是
n×n
的正交阵。
更具体地说,
U
是由
ATA
的特征向量通过
A
变换而来的标准化的
m×m
正交阵,
Σ
是由矩阵
ATA
的特征值构成的的算数平方根构成的
m×n
的对角阵(秩为
k
),
V
是由
ATA
的特征向量构成的
n×n
的正交阵。
计算实例
我举个例子,看看SVD究竟是如何计算的。如今分解矩阵
A=⎛⎝⎜011110⎞⎠⎟(24)
根据
A
,可知参数
m=3,n=2,k=2
.
先计算
ATA
的特征值和对应的特征向量:
λ1=3,V1=⎛⎝12√12√⎞⎠,λ2=1,V2=⎛⎝−12√12√⎞⎠(25)
根据上面的分析,这里
V1,V2
构成了奇异值分解中的矩阵
V
;
再计算奇异值,也就是
ATA
的特征值,解得
λ1=3,λ2=1,λ3=0
。其中
λ1−−√,λ2−−√
构成了对角矩阵主对角线上的元素。
最后计算
V1,V2
通过
A
变换后的向量。固然,此时只有
k=2
个
m
维向量,而咱们须要
m
个
m
维向量去构造矩阵
U
,你能够计算
AVi
,而后再使用正交基的扩充方法,可是有点复杂,一种更简单的思路是,既然
AAT
是
m×m
对称阵,而
u′1,…,u′m
是
AAT
的特征向量,因此直接计算
AAT
的特征向量,再作归一化处理便可:
u1=⎛⎝⎜⎜⎜16√26√16√⎞⎠⎟⎟⎟,u2=⎛⎝⎜⎜⎜12√0−12√⎞⎠⎟⎟⎟,u3=⎛⎝⎜⎜⎜13√−13√13√⎞⎠⎟⎟⎟(26)
u1,u2,u3
构成了奇异值分解中的矩阵
U
.
综上,矩阵
A
被以下分解:
A=⎛⎝⎜⎜⎜16√26√16√12√0−12√13√−13√13√⎞⎠⎟⎟⎟⎛⎝⎜3–√00010⎞⎠⎟⎛⎝12√−12√12√12√⎞⎠(27)
结论:最后再把奇异值分解总结一下,任意
m×n
矩阵
A
,能够被分解为
A=UΣVT
,其中,
-
U
:
m×m
矩阵,每一个列向量由对称阵
AAT