前面两篇文章讲了PCA和SVD,发现要完全理解,必须要有一些矩阵的基础知识。在这里再补充一下自己对特征值的理解,希望对大家有所帮助,有不正确的地方,欢迎大家指出。
首先,让我们来理解一下矩阵。很多地方都提到过,我们可以将向量与矩阵相乘,理解成对向量的一次转换,也就是行列变换。
假设我们有一个
3
×
3
3\times 3
3×3的单位矩阵
I
I
I,有一个向量
a
a
a。我们知道
I
a
=
a
Ia=a
Ia=a。
I
=
[
1
0
0
0
1
0
0
0
1
]
,
a
=
[
a
1
,
a
2
,
a
3
]
T
I= \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{matrix} \right] , a=[a_1,a_2,a_3]^T
I=⎣⎡100010001⎦⎤,a=[a1,a2,a3]T
现在我们将单位矩阵的第一行乘上2,
I
′
=
[
2
0
0
0
1
0
0
0
1
]
,
I
′
a
=
[
2
a
1
,
a
2
,
a
3
]
T
I'= \left[ \begin{matrix} 2 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{matrix} \right], I'a=[2a_1,a_2,a_3]^T
I′=⎣⎡200010001⎦⎤,I′a=[2a1,a2,a3]T
可以看到,矩阵a的第一行也变成了原来的两倍。我们再将
I
′
I'
I′的第二行加到第一行上面去,
I
′
′
=
[
2
1
0
0
1
0
0
0
1
]
,
I
′
′
a
=
[
2
a
1
+
a
2
,
a
2
,
a
3
]
T
I''= \left[ \begin{matrix} 2 & 1 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{matrix} \right], I''a=[2a_1+a_2,a_2,a_3]^T
I′′=⎣⎡200110001⎦⎤,I′′a=[2a1+a2,a2,a3]T
可以看到,矩阵a也将第二行加到第一行上面去了。所以,我们的确可以将向量与矩阵相乘,理解成对向量的一次行列变换。
现在,我们来看一看矩阵的特征值和特征向量。
我们发现有些向量
x
x
x比较特殊,用矩阵对它进行行列变换后,向量的方向没有变化,只是在原来的基础上,扩大或缩小了
λ
\lambda
λ倍,
A
x
=
λ
x
Ax=\lambda x
Ax=λx。我们把这样的向量,称作矩阵的特征向量,而把这个
λ
\lambda
λ称作矩阵的特征值。(注:只有方阵才有特征值,特征值的数量和矩阵的行数相等)
特征值的发现能够方便我们计算。假设
x
1
x_1
x1和
x
2
x_2
x2是矩阵
A
A
A的两个特征向量,
A
x
1
=
λ
x
1
Ax_1=\lambda x_1
Ax1=λx1,
A
x
2
=
λ
x
2
Ax_2=\lambda x_2
Ax2=λx2;假设空间中的某个向量可以由特征向量表示,
a
=
α
x
1
+
β
x
2
a=\alpha x_1 + \beta x_2
a=αx1+βx2。
用矩阵
A
A
A对向量
a
a
a进行转换,
A
a
=
α
A
x
1
+
β
A
x
2
=
α
λ
1
x
1
+
β
λ
2
x
2
Aa=\alpha Ax_1 + \beta Ax_2=\alpha \lambda_1 x_1 + \beta \lambda_2 x_2
Aa=αAx1+βAx2=αλ1x1+βλ2x2,只用把两个向量相加,我们就能知道变换后的结果,大大简化了我们的行列计算。
其实,我们可以把特征向量理解成一个特殊坐标系,每一个特征向量表示一个坐标轴,用矩阵 A A A的特征向量组成的坐标系来表示空间中的向量 a a a,能够大大简化矩阵 A A A对向量 a a a的转换计算。
上面讲的,都是线性代数中的概念,没有什么实际意义。
在实际情况中,我们遇到的是数据,想处理的也是数据。一个
m
×
n
m\times n
m×n矩阵包含的信息是一组数据,比如
n
n
n个样本,每个样本又有
m
m
m个维度的值。它不是一个方阵,也没有特征值和特征向量。我们能够用特征值对这个矩阵作什么处理呢?
虽然我们得到的数据矩阵 A m × n A_{m\times n} Am×n没有特征值和特征向量,但是 A A T AA^T AAT却是一个 m × m m\times m m×m的方阵,并且是一个对称方阵。矩阵 A A T AA^T AAT是有特征值的, { e 1 , e 2 , . . . , e m } \{e_1,e_2,...,e_m\} {e1,e2,...,em}。并且对称矩阵还有一个很重要的性质,对称矩阵的特征值两两正交, e i T e j = 0 , i ≠ j e_i^T e_j = 0, i\neq j eiTej=0,i̸=j。
证明:
λ i e i T ⋅ e j = ( λ i e i ) T e j = ( A A T e i ) T e j = e i T A A T e j = e i T λ j e j λ i e i ⋅ e j = λ j e i ⋅ e j \lambda_ie_i^T \cdot e_j=(\lambda_ie_i)^Te_j \\ =(AA^Te_i)^Te_j \\ =e_i^TAA^Te_j \\ =e_i^T\lambda_j e_j \\ \lambda_i e_i \cdot e_j = \lambda_j e_i \cdot e_j λieiT⋅ej=(λiei)Tej=(AATei)Tej=eiTAATej=eiTλjejλiei⋅ej=λjei⋅ej
如果特征值 λ \lambda λ 不相等的话,那么 e i T e j = 0 e_i^T e_j = 0 eiTej=0,特征向量 e i , e j e_i,e_j ei,ej 就是正交。
假设矩阵
E
=
{
e
1
,
e
2
,
.
.
.
,
e
m
}
E=\{ e_1,e_2,...,e_m \}
E={e1,e2,...,em},它是列由
A
A
T
AA^T
AAT 的特征向量构成的一个矩阵,那么有
A
A
T
E
=
{
λ
1
e
1
,
λ
2
e
2
,
.
.
.
,
λ
m
e
m
}
AA^TE=\{ \lambda_1 e_1,\lambda_2 e_2,...,\lambda_m e_m\}
AATE={λ1e1,λ2e2,...,λmem}。假设
D
D
D是一个对称矩阵,
D
=
[
λ
1
0
⋯
0
0
λ
2
⋯
0
⋮
⋮
⋱
0
0
0
0
λ
m
]
D= \left[ \begin{matrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & 0 \\ 0 & 0 & 0 & \lambda_m \end{matrix} \right]
D=⎣⎢⎢⎢⎡λ10⋮00λ2⋮0⋯⋯⋱0000λm⎦⎥⎥⎥⎤
E D = { λ 1 e 1 , λ 2 e 2 , . . . , λ m e m } ED=\{\lambda_1 e_1,\lambda_2 e_2,...,\lambda_m e_m\} ED={λ1e1,λ2e2,...,λmem}。所以 A A T E = E D , A A T = E D E − 1 AA^TE=ED,AA^T = EDE^{-1} AATE=ED,AAT=EDE−1。我们知道特征值 { e 1 , e 2 , . . . , e m } \{ e_1,e_2,...,e_m \} {e1,e2,...,em}两两正交,因而 E E E是一个正交矩阵。正交矩阵有一个性质, E − 1 = E T E^{-1}=E^T E−1=ET。
证明:让我们来看下 E T E E^TE ETE 的第 i j t h ij^{th} ijth 个元素, ( E T E ) i j = e i T e j (E^TE)_{ij}=e_i^Te_j (ETE)ij=eiTej。由于正交矩阵的列两两正交,那么 e i T e j = 0 , i ≠ j e_i^T e_j = 0, i \neq j eiTej=0,i̸=j, e i T e i = 1 e_i^T e_i = 1 eiTei=1(因为 e i e_i ei是单位向量),所以有
E T E = [ e 1 T e 1 0 ⋯ 0 0 e 2 T e 2 ⋯ 0 ⋮ ⋮ ⋱ 0 0 0 0 e m T e m ] E^TE= \left[ \begin{matrix} \ e_1^Te_1 & 0 & \cdots & 0 \\ 0 & e_2^Te_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & 0 \\ 0 & 0 & 0 & e_m^Te_m \end{matrix} \right] ETE=⎣⎢⎢⎢⎡ e1Te10⋮00e2Te2⋮0⋯⋯⋱0000emTem⎦⎥⎥⎥⎤
所以, E T E = E − 1 E = I E^TE=E^{-1}E=I ETE=E−1E=I,即 E T = E − 1 E^T=E^{-1} ET=E−1。
于是,对于一个对称矩阵
M
M
M,我们可以将其表示为:
M
=
E
D
E
T
M=EDE^T
M=EDET,其中,
E
E
E是一个正交矩阵,列向量是矩阵
M
M
M 的特征向量;
D
D
D是一个对角矩阵,对角线上的值是矩阵
M
M
M 的特征值。
这个性质很巧,正式我们在PCA里面用到的矩阵的斜对角定理。
有了这样的特征矩阵,我们可以将 E E E看作一个坐标系,这个坐标系有一个很好的性质,就是和我们经常看见的 x y xy xy 坐标系一样,它的各个坐标系之间相互垂直。
我们最想做的事情是,对数据 A m × n A_{m\times n} Am×n进行转换,转换后它各个维度之间相互独立,相关性为0,这样可以有助于我们更清晰的分析各个维度。矩阵 A A T AA^T AAT 的特征向量构成的坐标系 E E E,正好就有就有让原数据 A A A转化后,各个维度之间相互独立的这个神奇的特点。
将原数据 A A A转换到该坐标系上, E T A E^TA ETA。我们再来计算一下转换后矩阵的协方差系数,发现矩阵 E T A E^TA ETA各个坐标系之间的数据相互独立,即 E T A ( E T A ) T = E T A A T E = D E^TA (E^TA)^T=E^TAA^TE=D ETA(ETA)T=ETAATE=D, D D D是一个对角矩阵,就是说转化后的矩阵 E T A E^TA ETA,各行之间的数据相关性为0。这就是我们在PCA详解里面说的主要思想,这里 E E E 中的每一个特征向量,表示一个“主”成份。
由于这次讲的概念比较简单,我贴了两个证明过程,增加一点内容,希望能够帮助大家理解。同样,有问题欢迎大家提出。
至此,我的PCA,SVD,特征值三部曲全部完成。