LLE MDS FastMap ISOMAP
SVD
奇异值分解 Singual Value Decomposition,简称SVD
如果一个
n
n
n阶方阵
A
A
A相似于对角矩阵,也就是,如果存在一个可逆矩阵
P
P
P,使得
P
−
1
A
P
P^{-1}AP
P−1AP是对角矩阵,则称矩阵
A
A
A为可对角化矩阵,并且最终对角对角矩阵的特征值就是矩阵
A
A
A的特征值
可逆矩阵
P
P
P是
A
A
A的全部特征向量按列构成的矩阵
设 A A A是数域上的一个 n n n阶方阵,若在相同的数域上存在另一个 n n n阶方阵 B B B,使得 A B = B A = E AB=BA=E AB=BA=E,那么称 B B B为 A A A的逆矩阵,而 A A A被称为可逆矩阵或非奇异矩阵。如果 A A A不存在逆矩阵,那么 A A A称为奇异矩阵
A
=
W
Σ
W
−
1
A=W\Sigma W^{-1}
A=WΣW−1
其中
W
W
W是这
n
n
n个特征向量所组成的
n
×
n
n \times n
n×n维矩阵,而
Σ
\Sigma
Σ为这
n
n
n个特征值为主对角线的
n
×
n
n \times n
n×n维矩阵。
一般会把
W
W
W的这
n
n
n个特征向量标准话,即满足
∣
∣
w
i
∣
∣
2
=
1
||w_i||_2=1
∣∣wi∣∣2=1,或者
w
i
T
w
i
=
1
w_i^Tw_i=1
wiTwi=1,此时
W
W
W的
n
n
n个特征向量为标准正交基,满足
W
T
W
=
E
W^TW=E
WTW=E,即
W
T
=
W
−
1
W^T=W^{-1}
WT=W−1,也就是说
W
W
W为酉矩阵。
这样特征分解表达式可以写成
A
=
W
Σ
W
T
A=W\Sigma W^T
A=WΣWT
要进行特征分解,矩阵
A
A
A必须为方阵,那么如果
A
A
A不是方阵,即行和列不相同时,还可以对矩阵进行分解吗?答案是可以,这就是SVD解决的问题
假设矩阵
A
A
A是一个
m
×
n
m\times n
m×n的矩阵,那么定义矩阵
A
A
A的SVD为:
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT
其中
U
U
U是一个
m
×
m
m \times m
m×m的矩阵,
Σ
\Sigma
Σ 是一个
m
×
n
m \times n
m×n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值,
V
V
V是一个
n
×
n
n \times n
n×n的矩阵。
U
U
U和
V
V
V都是酉矩阵,即满足
U
T
U
=
E
V
T
V
=
E
U^TU=E\\ ~ \\ V^TV=E
UTU=E VTV=E
如何求出SVD分解后的 U , Σ , V U,\Sigma,V U,Σ,V这三个矩阵呢?
将
A
A
A的转置和
A
A
A做乘法,那么会得到
n
×
n
n \times n
n×n的一个方阵
A
T
A
A^TA
ATA。既然
A
T
A
A^TA
ATA是方阵,就可以进行特征分解,得到的特征值和特征向量满足下式:
(
A
T
A
)
v
i
=
λ
i
v
i
(A^TA)v_i = \lambda_iv_i
(ATA)vi=λivi
这样就可以得到矩阵 A T A A^TA ATA的 n n n个特征值和对应的 n n n个特征向量 v v v了,将 A T A A^TA ATA的所有特征向量组成一个 n × n n \times n n×n的矩阵 V V V,就是SVD公式里面的 V V V矩阵,一般将 V V V中的每个特征向量叫做 A A A的右奇异向量
将
A
A
A和
A
A
A的转置做矩阵乘法,那么会得到
m
×
m
m \times m
m×m的一个方阵
A
T
A
A^TA
ATA,既然
A
T
A
A^TA
ATA是方阵,就可以进行特征分解,得到的特征值和特征向量满足下式:
(
A
T
A
)
u
i
=
λ
i
u
i
(A^TA)u_i = \lambda_iu_i
(ATA)ui=λiui
这样就可以得到矩阵
A
T
A
A^TA
ATA的
m
m
m个特征值和对应的
m
m
m个特征向量
u
u
u了,将
A
T
A
A^TA
ATA的所有特征向量组成一个
m
×
m
m \times m
m×m的矩阵
U
U
U,就是SVD公式里面的
U
U
U矩阵,一般将
V
V
V中的每个特征向量叫做
A
A
A的左奇异向量
A = W Σ W T A V = U Σ V T V A V = U Σ A v i = σ i u i A=W\Sigma W^T \\ ~ \\ AV=U\Sigma V^TV \\ ~ \\ AV=U\Sigma \\ ~ \\ Av_i = \sigma_iu_i A=WΣWT AV=UΣVTV AV=UΣ Avi=σiui