赞
踩
特征值和特征向量的定义如下:
A
x
=
λ
x
Ax=\lambda x
Ax=λx
其中
A
A
A是一个
n
×
n
n\times n
n×n矩阵,
x
x
x是一个
n
n
n维向量(
n
×
1
n\times 1
n×1),而
λ
\lambda
λ是一个数值。
则 λ \lambda λ是矩阵A的一个特征值,而x是矩阵A的特征值 λ \lambda λ所对应的特征向量。
如果求出了矩阵A的n个特征值, λ 1 ≤ λ 2 ≤ . . . λ n \lambda_1≤\lambda_2≤...\lambda_n λ1≤λ2≤...λn,以及这n个特征值所对应的特征向量 w 1 , w 2 , . . . , w n w_1,w_2,...,w_n w1,w2,...,wn。
则矩阵A可用下式的特征分解表示:
A
=
W
∑
W
−
1
A=W\sum W^{-1}
A=W∑W−1
其中,W是n个特征向量组成的
n
×
n
n\times n
n×n矩阵
[
w
1
w
2
⋯
w
n
]
一般我们会把W的这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,若 A A A是个实对称矩阵,此时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
A=W\sum W^T
A=W∑WT
注意到要进行特征分解,矩阵A必须为方阵。
当矩阵A不是方阵时,再想对A进行矩阵分解就要用到奇异值分解(SVD)
假设矩阵A是
m
×
n
m\times n
m×n矩阵,定义矩阵A的奇异值分解(SVD)为:
A
m
×
n
=
U
m
×
m
∑
V
n
×
n
T
A_{m\times n}=U_{m \times m}\sum V_{n\times n}^T
Am×n=Um×m∑Vn×nT
∑
:
m
×
n
\sum:m\times n
∑:m×n
U、V都是酉矩阵(正交矩阵),即满足
U
T
U
=
I
,
V
T
V
=
I
U^TU=I,V^TV=I
UTU=I,VTV=I,即
U
T
=
U
−
1
,
V
T
=
V
−
1
U^T=U^{-1},V^T=V^{-1}
UT=U−1,VT=V−1
(1)求矩阵
V
V
V:
A
T
A^T
AT:
n
×
m
n\times m
n×m
A
A
A:
m
×
n
m\times n
m×n
V
:
n
×
n
V:n\times n
V:n×n
注意到, A T A A^TA ATA是 n × n n\times n n×n的方阵,也就是说可以对其进行特征值分解,由它的所有特征向量 v i v_i vi可以组成一个 n × n n\times n n×n的矩阵,这个矩阵就是矩阵 V V V,称作右奇异矩阵, V V V中的每一个特征向量称作矩阵 A A A的右奇异向量。
(2)求矩阵
U
U
U:
A
A
A:
m
×
n
m\times n
m×n
A
T
A^T
AT:
n
×
m
n\times m
n×m
U
:
m
×
m
U:m\times m
U:m×m
注意到, A A T AA^T AAT是 m × m m\times m m×m的方阵,也就是说可以对其进行特征值分解,由它的所有特征向量 u i u_i ui可以组成一个 m × m m\times m m×m的矩阵,这个矩阵就是矩阵 U U U,称作左奇异矩阵, U U U中的每一个特征向量称作矩阵 A A A的左奇异向量。
(3)求奇异值矩阵
∑
\sum
∑:
A
=
U
∑
V
T
A
V
=
U
∑
V
T
V
A
V
=
U
∑
A=U\sum V^T\\ AV=U\sum V^TV\\ AV=U\sum
A=U∑VTAV=U∑VTVAV=U∑
A
[
v
1
v
2
⋯
v
n
]
=
[
u
1
u
2
⋯
u
n
⋯
u
m
]
[
σ
1
0
0
⋯
0
0
σ
2
0
⋯
0
0
0
σ
3
⋯
0
⋮
⋮
⋮
⋱
⋮
0
0
0
⋯
σ
n
⋮
⋮
⋮
⋯
⋮
0
0
0
⋯
0
]
m
×
n
A
由于奇异值矩阵只在对角线处有值,其他位置均是0,而
∑
\sum
∑ 并不是标准的方阵,它的对角线如上式内所表示,只在
n
×
n
n\times n
n×n 处有值,并非从左上角一路划到右下角。
展开上面的矩阵乘法:
A
v
1
=
u
1
σ
1
A
v
2
=
u
2
σ
2
A
v
3
=
u
3
σ
3
.
.
.
A
v
n
=
u
n
σ
n
Av_1=u_1\sigma_1\\ Av_2=u_2\sigma_2\\ Av_3=u_3\sigma_3\\ ...\\ Av_n=u_n\sigma_n
Av1=u1σ1Av2=u2σ2Av3=u3σ3...Avn=unσn
可以看出,各奇异值的计算方式:
σ
i
=
A
m
×
n
(
v
i
)
n
×
1
(
u
i
)
m
×
1
\sigma_i=\frac{A_{m\times n}(v_i)_{n\times 1}}{(u_i)_{m\times 1}}
σi=(ui)m×1Am×n(vi)n×1
上式中,分子的结果是一个
m
×
1
m\times 1
m×1的向量,分母是一个
m
×
1
m\times 1
m×1的向量,但向量之间是没有除法的,除非两个向量共线(即平行),结果是两个共线向量的倍数关系。在SVD中,上式实际上就是求两个共线向量的倍数关系。
另一方面,特征值矩阵等于奇异值矩阵的平方,也就是说,特征值和奇异值满足如下关系:
σ
i
=
λ
i
\sigma _i=\sqrt{\lambda_i}
σi=λi
即,可以通过求出
A
T
A
A^TA
ATA(
n
×
n
n\times n
n×n的方阵)的特征值再取平方根来求奇异值。
对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。
也就是说,我们也可以用最大的 k k k 个奇异值和它们对应的左右奇异向量来近似描述矩阵。
由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。
实际上SVD在PCA降维上只是使用了 V V V 矩阵(右奇异矩阵),其原因就是 U U U 矩阵(左奇异矩阵)是进行行压缩,而 V V V 矩阵(右奇异矩阵)是对列进行压缩,而PCA降维只需要减少特征从而进行降维,所以PCA只用到了SVD的 V V V 矩阵(右奇异矩阵)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。