赞
踩
为了使计算机理解实际问题体中目标各项特征,通常使用方阵来储存这些特征值,例如一个人的年龄,身高,体重可以使用 [ 32 , 185 , 75 ] [32,185,75] [32,185,75]进行表示。但是对于有些问题,其特征矩阵是稀疏矩阵,矩阵内部许多向量都为0,例如矩阵 O O O。这即造成储存空间的浪费,同时消耗了计算资源,那能不能即压缩矩阵的大小,且保留矩阵的重要信息呢?这时候可以用到SVD矩阵奇异值分解。
O
=
[
0
0
⋯
0
0
0
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
0
]
O=
SVD可以将任意一个矩阵分解为一个正交矩阵、一个对焦矩阵和另外一个对角矩阵的乘积。对角矩阵的对角元称为矩阵的奇异值,可以证明,奇异值总是大于等于0的。当对角矩阵的奇异值按从大到小排列时,SVD分解是唯一的。
理解SVD之前必需搞懂两个概念,特征值与特征向量,假设存在一个 n ∗ n n*n n∗n矩阵 A A A,存在一个 n n n维矩阵 x x x和一个特征值 λ \lambda λ,使得式 ( 1 ) (1) (1)成立。
A x = λ x (1) Ax = \lambda x\tag{1} Ax=λx(1)
则 λ \lambda λ即为 A A A的特征值, x x x为 A A A的特征向量。那如何求取矩阵 A A A的特征值和特征向量呢?计算如下:
A
x
−
λ
x
=
0
(
A
−
λ
E
)
x
=
0
如果 ( 3 ) (3) (3)式成立,即求:
∣ A − λ E ∣ = 0 (4) |A- \lambda E | = 0 \tag{4} ∣A−λE∣=0(4)
即可求出了矩阵 A A A的 n n n个特征值 λ 1 ⩽ λ 2 ⩽ . . . ⩽ λ n − 1 ⩽ λ n \lambda_1 \leqslant \lambda_2 \leqslant ... \leqslant \lambda_{n-1} \leqslant \lambda_n λ1⩽λ2⩽...⩽λn−1⩽λn ,以及这 n n n个特征值所对应的特征向量 x 1 , x 2 , . . . , x n − 1 , x n x_1,x_2,...,x_{n-1},x_n x1,x2,...,xn−1,xn。
最后矩阵 A A A就可以进行SVD分解,用 ( 5 ) (5) (5)式进行表示:
A = W ∑ W − 1 (5) A= W\sum W^{-1} \tag{5} A=W∑W−1(5)
其中
W
W
W是这
n
n
n个特征向量所张成的
n
×
n
n×n
n×n维矩阵,
W
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
W = [x_1,x_2,...,x_n]
W=[x1,x2,...,xn],而
∑
\sum
∑为这
n
n
n个特征值为主对角线的
n
×
n
n×n
n×n维矩阵,
O
=
[
σ
1
0
⋯
0
0
σ
2
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
σ
n
]
O=
W的这n个特征向量会进行标准化,即满足 ∣ ∣ W i ∣ ∣ 2 = 1 ||W_i||^2=1 ∣∣Wi∣∣2=1 ,或者 w i t w i = 1 w^t_i w_i=1 witwi=1 ,此时W的n个特征向量为标准正交基,满足 W T W = I W^TW = I WTW=I ,即 W T = W − 1 W^T = W^{-1} WT=W−1 ,也就是说W为酉矩阵。
这样我们的特征分解表达式可以写成
A = W ∑ W T (6) A= W\sum W^{T} \tag{6} A=W∑WT(6)
注意到要进行特征分解,矩阵A必须为方阵。那么如果A不是方阵,即行和列不相同时,我们还可以对矩阵进行分解吗?答案是可以,此时我们的SVD登场了。
假设 A A A是一个 m ∗ n m*n m∗n的矩阵,那么定义A都SVD分解为式 ( 6 ) (6) (6):
A = U ∑ V T (7) A= U\sum V^{T} \tag{7} A=U∑VT(7)
其中 U U U是一个 m ∗ m* m∗* m m m的矩阵, ∑ \sum ∑是一个 m ∗ m* m∗ n n n的矩阵, V V V是一个 n ∗ n n*n n∗n的矩阵,U*和 V 都是酉矩阵,即满足 U U T = V V T = I UU^T = VV^T = I UUT=VVT=I。那如何求解这三个矩阵呢?
如果我们将A的转置和A做矩阵乘法,那么会得到 n × n n×n n×n的一个方阵 A T A A^TA ATA,因为 A T = V ∑ T U T A^{T}= V\sum^{T} U^{T} AT=V∑TUT, U U T = I UU^T = I UUT=I。故 A T A = V U U T ∑ 2 V T = V ∑ 2 V T A^TA =V UU^T \sum^2 V^{T} =V\sum^2 V^{T} ATA=VUUT∑2VT=V∑2VT,求解特征值和特征向量满足下式(8):
( A T A ) x i = λ i x i (8) (A^TA)x_i = \lambda_i x_i \tag{8} (ATA)xi=λixi(8)
所以矩阵 V = [ x 1 , x 2 , . . . , x n ] , σ i = λ i V = [x_1,x_2,...,x_n],\sigma_i = \sqrt{\lambda_i} V=[x1,x2,...,xn],σi=λi .
求解矩阵 U U U与求解矩阵V类似,只不过求解 A A T AA^T AAT,不在进行赘述.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。