基变换的矩阵表示
众所周知,在平面直角坐标系上,一个数据点或者说一个向量的坐标实际就是这个向量与两个坐标轴的单位向量做点积的结果,比如有一个向量
x
\bm x
x 和 两个坐标轴基向量
i
\bm i
i 和
j
\bm j
j:
x
=
(
1
2
)
,
i
=
(
1
0
)
,
j
=
(
0
1
)
\bm{x}=\begin{pmatrix} 1\\ 2 \end{pmatrix}, \bm{i}=\begin{pmatrix} 1\\ 0 \end{pmatrix}, \bm{j}=\begin{pmatrix} 0\\ 1 \end{pmatrix}
x=(12),i=(10),j=(01),
x
\bm x
x 的横坐标和纵坐标分别是:
x
1
=
x
T
i
=
1
x
2
=
x
T
j
=
2
\begin{aligned} x_1 &= \bm{x}^T\bm{i}=1 \\ x_2 &=\bm{x}^T\bm{j}=2 \end{aligned}
x1x2=xTi=1=xTj=2
当然在平面上我们也可以选择另外两个线性无关的向量作为基向量比如取这么一组基向量
i
\bm i
i 和
j
\bm j
j:
i
=
(
1
2
1
2
)
,
j
=
(
−
1
2
1
2
)
\bm{i}=\begin{pmatrix} \frac{1}{\sqrt 2}\\ \frac{1}{\sqrt 2} \end{pmatrix}, \bm{j}=\begin{pmatrix} -\frac{1}{\sqrt 2}\\ \frac{1}{\sqrt 2} \end{pmatrix}
i=(2121),j=(−2121)
x
\bm x
x 的在新基下的横坐标和纵坐标分别是:
x
1
′
=
x
T
i
=
5
2
x
2
′
=
x
T
j
=
1
2
\begin{aligned} x^\prime_1 &= \bm{x}^T\bm{i}=\frac{5}{\sqrt 2} \\ x^\prime_2 &=\bm{x}^T\bm{j}=\frac{1}{\sqrt 2} \end{aligned}
x1′x2′=xTi=25=xTj=21
求新坐标的过程可以用矩阵运算来表示 :
(
i
T
j
T
)
x
=
(
x
1
′
x
2
′
)
\begin{pmatrix} \bm{i}^T\\ \bm{j}^T \end{pmatrix} \bm{x}=\begin{pmatrix} x^\prime_1 \\ x^\prime_2 \end{pmatrix}
(iTjT)x=(x1′x2′)即
(
1
2
1
2
−
1
2
1
2
)
(
1
2
)
=
(
3
2
1
2
)
\begin{pmatrix} \frac{1}{\sqrt 2} & \frac{1}{\sqrt 2} \\ -\frac{1}{\sqrt 2} & \frac{1}{\sqrt 2} \end{pmatrix} \begin{pmatrix} 1\\ 2 \end{pmatrix}= \begin{pmatrix} \frac{3}{\sqrt 2}\\ \frac{1}{\sqrt 2} \end{pmatrix}
(21−212121)(12)=(2321)
左边矩阵第一行是第一个基向量,第二行是第二个基向量,乘以原向量,结果就是新基下的坐标。假如我们有很多数据点
(
1
,
2
)
,
(
2
,
3
)
,
(
3
,
4
)
(1,2), (2,3), (3,4)
(1,2),(2,3),(3,4),则它们在新基下的坐标就是:
(
1
2
1
2
−
1
2
1
2
)
(
1
2
3
2
3
4
)
=
(
3
2
5
2
7
2
1
2
1
2
1
2
)
\begin{pmatrix} \frac{1}{\sqrt 2} & \frac{1}{\sqrt 2} \\ -\frac{1}{\sqrt 2} & \frac{1}{\sqrt 2} \end{pmatrix} \begin{pmatrix} 1 & 2 & 3\\ 2 & 3 & 4 \end{pmatrix}= \begin{pmatrix} \frac{3}{\sqrt 2} & \frac{5}{\sqrt 2} & \frac{7}{\sqrt 2}\\ \frac{1}{\sqrt 2} & \frac{1}{\sqrt 2} & \frac{1}{\sqrt 2} \end{pmatrix}
(21−212121)(122334)=(232125212721)
写成通用的形式就是:
(
p
1
T
p
2
T
⋮
p
k
T
)
(
a
1
a
2
…
a
m
)
=
(
p
1
T
a
1
p
1
T
a
2
…
p
1
T
a
m
p
2
T
a
1
p
2
T
a
2
…
p
2
T
a
m
⋮
⋮
⋱
⋮
p
k
T
a
1
p
k
T
a
2
…
p
k
T
a
m
)
\begin{pmatrix} \bm{p^T_1} \\ \bm{p^T_2} \\ \vdots \\ \bm{p^T_k} \end{pmatrix} \begin{pmatrix} \bm{a_1} & \bm{a_2} & \ldots & \bm{a_m} \end{pmatrix}= \begin{pmatrix} \bm{p^T_1a_1} & \bm{p^T_1a_2} & \ldots & \bm{p^T_1a_m} \\ \bm{p^T_2a_1} & \bm{p^T_2a_2} & \ldots & \bm{p^T_2a_m} \\ \vdots & \vdots & \ddots & \vdots \\ \bm{p^T_ka_1} & \bm{p^T_ka_2} & \ldots & \bm{p^T_ka_m} \end{pmatrix}
⎝⎜⎜⎜⎛p1Tp2T⋮pkT⎠⎟⎟⎟⎞(a1a2…am)=⎝⎜⎜⎜⎛p1Ta1p2Ta1⋮pkTa1p1Ta2p2Ta2⋮pkTa2……⋱…p1Tamp2Tam⋮pkTam⎠⎟⎟⎟⎞
这里的
p
i
\bm p_i
pi 和
a
i
\bm a_i
ai 都是列向量。
a
i
\bm a_i
ai 表示第
i
i
i 个样本数据看到这里我们就明白了:
一个矩阵乘以一个列向量可以解释为把该列向量变换到以矩阵的行向量为基向量的空间中去。
两个矩阵相乘就可以看作是把右边矩阵的每一个列向量变换到以左边矩阵的所有行向量组成的基向量的空间中去。
最大可分性
选择不同的基可以对同样一组数据给出不同的表示,如果基的数量少于向量本身的维数,则可以达到降维的效果。
那么如果我们想把一组 N 维的数据降到 K维,我们应该如何选择最优的 K 个基呢?或者说我们该如何选择 K 个基,才能尽可能多地保留原来数据的信息呢?
一种直观的看法是:希望投影后的投影值尽可能分散,因为如果重叠就会有样本消失。当然这个也可以从熵的角度进行理解,投影值越分散,投影值的方差就越大,熵就越大所含信息越多。
总体方差和样本方差
数值的分散可以用 方差来表示,方差分为总体方差和样本方差。在数据是一维的情况下,设有一个一维随机变量
A
A
A, 则总体方差是:
V
a
r
(
A
)
=
1
m
∑
i
=
1
m
(
a
i
−
μ
)
2
Var(A)=\frac{1}{m}\sum_{i=1}^{m}{(a_i-\mu)^2}
Var(A)=m1i=1∑m(ai−μ)2
而为了保证样本方差是总体方差的无偏估计,样本方差的定义中,是除以
m
−
1
m-1
m−1 而非样本数
m
m
m:
S
(
A
)
=
1
m
−
1
∑
i
=
1
m
(
a
i
−
μ
)
2
S(A)=\frac{1}{m-1}\sum_{i=1}^{m}{(a_i-\mu)^2}
S(A)=m−11i=1∑m(ai−μ)2
我们要降维的数据属于样本,故应该用样本方差来衡量数据的分散程度。为了简便计算,我们对 数值先做归一化,使它们的均值为
0
0
0 :
S
(
A
)
=
1
m
−
1
∑
i
=
1
m
a
i
2
(1)
S(A)=\frac{1}{m-1}\sum_{i=1}^{m}{a_i^2} \tag{1}
S(A)=m−11i=1∑mai2(1)
我们的问题就转化为寻找一个基向量,使得样本点投影到该基向量方向上的投影值尽可能分散,即投影值的方差最大。
协方差
在一维的情况下,我们用方差来衡量随机变量自身的分散程度,如果有多个随机变量,我们用协方差来衡量它们之间的相关性。, A 和 B 两个随机变量的协方差是:
C
o
v
(
A
,
B
)
=
1
m
−
1
∑
i
=
1
m
(
a
i
−
μ
a
)
(
b
i
−
μ
b
)
Cov(\bm{A}, \bm{B})=\frac{1}{m-1}\sum_{i=1}^{m}{(a_i-\mu_a)(b_i-\mu_b)}
Cov(A,B)=m−11i=1∑m(ai−μa)(bi−μb)
如果协方差为0,则表示这两个一维随机变量是线性无关的。
为了简便,我们同样先对数据做零均值化:
C
o
v
(
A
,
B
)
=
1
m
−
1
∑
i
=
1
m
a
i
b
i
(2)
Cov(\bm{A}, \bm{B})=\frac{1}{m-1}\sum_{i=1}^{m}{a_ib_i} \tag{2}
Cov(A,B)=m−11i=1∑maibi(2)
协方差为零表示两个随机变量线性无关。 为了使保留下来的信息尽可能多,不冗余,我们选择的 K 个基向量应该是线性无关的,即相互正交。一般我们会把基向量归一化成单位向量。我们的目标就是即把一组N维数据降到K维,需要找到K个N维正交单位向量,使原始数据变换到这组基向量空间后,各个随机变量之间的协方差为0,而自身的变量方差最大。 这里所说的变量就是数据的特征,数据从N维降到K维就是从N个数据特征降到K个数据特征的过程。
协方差矩阵
设有两个特征,即两个随机变量
A
\bm{A}
A 和
B
\bm{B}
B , 有
m
m
m 个样本,把它们用矩阵表示,每列是一个样本,每行是一个特征:
X
=
(
a
T
b
T
)
=
(
a
1
a
2
…
a
m
b
1
b
2
…
b
m
)
X=\begin{pmatrix}\bm a^T \\ \bm b^T\end{pmatrix}= \begin{pmatrix} a_1 & a_2 & \ldots & a_m \\ b_1 & b_2 & \ldots & b_m \\ \end{pmatrix}
X=(aTbT)=(a1b1a2b2……ambm)
其中
a
\bm a
a 和
b
\bm b
b 分别是:
a
=
(
a
1
a
2
⋮
a
m
)
,
b
=
(
b
1
b
2
⋮
b
m
)
\bm a= \begin{pmatrix} a_1 \\ a_2 \\ \vdots\\ a_m \end{pmatrix}, \bm b= \begin{pmatrix} b_1 \\ b_2 \\ \vdots\\ b_m \end{pmatrix}
a=⎝⎜⎜⎜⎛a1a2⋮am⎠⎟⎟⎟⎞,b=⎝⎜⎜⎜⎛b1b2⋮bm⎠⎟⎟⎟⎞
相当于我们现在有一个随机向量
v
\bm{v}
v:
v
=
(
A
B
)
\bm{v}= \begin{pmatrix} A \\ B \end{pmatrix}
v=(AB)
然后有m个服从
v
\bm{v}
v的分布的样本, 每列一个样本组成了
X
X
X。在多维空间下,我们用协方差矩阵来衡量随机向量的各个维度对应的随机变量之间的协方差。当然了一维随机变量与自身的协方差就是方差即
C
o
v
(
A
,
A
)
=
S
(
A
)
Cov(A,A)=S(A)
Cov(A,A)=S(A)。协方差矩阵公式如下:
C
o
v
(
v
)
=
(
C
o
v
(
A
,
A
)
C
o
v
(
A
,
B
)
C
o
v
(
B
,
A
)
C
o
v
(
B
,
B
)
)
Cov(\bm v)= \begin{pmatrix} Cov(A,A) &Cov(A,B) \\ Cov(B,A) &Cov(B,B) \end{pmatrix}
Cov(v)=(Cov(A,A)Cov(B,A)Cov(A,B)Cov(B,B))
考虑
(
1
)
(1)
(1) 和
(
2
)
(2)
(2),有:
C
o
v
(
v
)
=
(
1
m
−
1
∑
i
=
1
m
a
i
2
1
m
−
1
∑
i
=
1
m
a
i
b
i
1
m
−
1
∑
i
=
1
m
b
i
a
i
1
m
−
1
∑
i
=
1
m
b
i
2
)
=
1
m
−
1
(
a
T
a
a
T
b
b
T
a
b
T
b
)
=
1
m
−
1
(
a
T
b
T
)
(
a
b
)
=
1
m
−
1
X
X
T
\begin{aligned} Cov(\bm v) &= \begin{pmatrix} \displaystyle\frac{1}{m-1}\displaystyle\sum_{i=1}^{m}{a_i^2} & \displaystyle\frac{1}{m-1}\displaystyle\sum_{i=1}^{m}{a_ib_i}\\ \displaystyle\frac{1}{m-1}\displaystyle\sum_{i=1}^{m}{b_ia_i}& \displaystyle\frac{1}{m-1}\displaystyle\sum_{i=1}^{m}{b_i^2}\\ \end{pmatrix} \\ &=\displaystyle\frac{1}{m-1} \begin{pmatrix} \bm{a^Ta}& \bm{a^Tb} \\ \bm{b^Ta}& \bm{b^Tb} \end{pmatrix} \\ &=\displaystyle\frac{1}{m-1} \begin{pmatrix}\bm a^T \\ \bm b^T\end{pmatrix}\begin{pmatrix}\bm a &\bm b\end{pmatrix}\\ &=\displaystyle\frac{1}{m-1}XX^T \end{aligned}
Cov(v)=⎝⎜⎜⎜⎛m−11i=1∑mai2m−11i=1∑mbiaim−11i=1∑maibim−11i=1∑mbi2⎠⎟⎟⎟⎞=m−11(aTabTaaTbbTb)=m−11(aTbT)(ab)=m−11XXT
至此,我们得到了原始数据矩阵和随机向量
v
\bm v
v的协方差矩阵的关系式:
C
o
v
(
v
)
=
1
m
−
1
X
X
T
Cov(\bm v)=\displaystyle\frac{1}{m-1}XX^T
Cov(v)=m−11XXT
目前的随机向量
v
\bm v
v 是2维的,当它是
n
n
n 维的时候,显然也有:
设有一个
n
n
n 维随机向量
v
\bm v
v, 它每一维都是一个一维随机变量,有
m
m
m 个服从
v
\bm v
v 分布的
n
n
n 维向量按照每列一个
n
n
n 维向量共
m
m
m 列组成原始数据矩阵
X
X
X,则随机向量
v
v
v 的协方差矩阵
C
C
C 和数据矩阵
X
X
X 的关系满足 :
C
=
1
m
−
1
X
X
T
(3)
C=\displaystyle\frac{1}{m-1}XX^T \tag{3}
C=m−11XXT(3)
矩阵对角化
现在我们的目标就是使得基变换后降维的随机变量的协方差矩阵的对角线元素尽可能的大,而对角线以外的元素为0,这样就能保证在各个投影轴上的投影值尽可能分散,而各个投影轴直接是线性无关即相互正交,使得降维后的各个新特征的信息不冗余。设我们的基变换矩阵是
P
P
P, 原始数据矩阵
X
X
X 变换后的新数据矩阵是
Y
=
P
X
Y=PX
Y=PX , 变换后新随机向量
v
′
\bm {v\prime}
v′ 的协方差矩阵是
D
D
D, 我们有:
D
=
1
m
−
1
Y
Y
T
=
1
m
−
1
(
P
X
)
(
P
X
)
T
=
1
m
−
1
P
X
X
T
P
T
=
P
(
1
m
−
1
X
X
T
)
P
T
=
P
C
P
T
\begin{aligned} D &= \frac{1}{m-1}YY^T \\ &= \frac{1}{m-1}(PX)(PX)^T \\ &= \frac{1}{m-1}PXX^TP^T \\ &= P(\frac{1}{m-1}XX^T)P^T \\ &=PCP^T \end{aligned}
D=m−11YYT=m−11(PX)(PX)T=m−11PXXTPT=P(m−11XXT)PT=PCPT
到这里我们发现,我们要找的基变换矩阵
P
P
P 是把原协方差矩阵
C
C
C 对角化并且使得
P
C
P
T
PCP^T
PCPT 的对角线元素从从上往下是从大到小排列的矩阵,如果我们要把原来的数据从
n
n
n 维降到
k
k
k 维,那么只要取
P
P
P 的前
k
k
k 行作为降维的基变换矩阵即可达到我们的目标。
那么我们该如何找到矩阵
P
P
P 呢?协方差矩阵
C
C
C 是一个实对称矩阵, 实对称矩阵有以下性质:
- 实对称矩阵的不同特征值对应的特征向量相互正交
- 设特征向量 λ \lambda λ 的重数为 r r r ,必定存在 r r r 个线性无关的特征向量对应于 λ \lambda λ,因此可以将这 r r r 个线性无关的特征向量单位正交化。
注意我们的协方差矩阵
C
C
C 是大小是
n
×
n
n×n
n×n ,对于这样的实对称矩阵一定可以对角化,我们一定可以找到
n
n
n 个正交单位向量
e
1
,
e
2
,
…
,
e
n
\bm {e_1, e_2, \ldots,e_n}
e1,e2,…,en, 把它们按列组成矩阵
E
=
(
e
1
,
e
2
,
…
,
e
n
)
E = (\bm{e_1, e_2, \ldots,e_n})
E=(e1,e2,…,en),则我们有以下结论:
E
T
C
E
=
Λ
=
(
λ
1
λ
2
⋱
λ
n
)
E^TCE=\Lambda= \begin{pmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ & & \ddots & \\ & & & \lambda_n \end{pmatrix}
ETCE=Λ=⎝⎜⎜⎛λ1λ2⋱λn⎠⎟⎟⎞
其中
Λ
\Lambda
Λ 是对角阵,对角线上的元素是
C
C
C 的特征值。现在我们可以发现,
Λ
\Lambda
Λ 实际就是
D
D
D, 其对角线元素即
C
C
C 的每个特征值就是投影后在各个轴上的方差:
P
=
E
T
(4)
P = E^T \tag{4}
P=ET(4)
P
P
P 是协方差矩阵
C
C
C 的特征向量单位化后按行排列出的矩阵,其中每一行都是
C
C
C 的一个特征向量。如果设
P
P
P 按照
Λ
\Lambda
Λ 中特征值从大到小,将特征向量从上到下排列,则用 P 的前 K 行组成的矩阵乘以原始数据矩阵
X
X
X,就得到了我们需要的降维后的数据矩阵
Y
Y
Y。
拉格朗日乘子法
我们也可以用拉格朗日乘子法来推导找到
P
P
P ,设原数据矩阵
X
=
(
x
1
,
x
2
,
…
,
x
n
)
X=(\bm{x_1, x_2, \ldots, x_n})
X=(x1,x2,…,xn)
样本点
x
i
\bm x_i
xi 在某个单位正交基
w
j
\bm{w_j}
wj 方向上的投影值是
x
i
T
w
j
\bm{x_i^T w_j}
xiTwj, 我们有原始数据在
w
j
\bm{w_j}
wj 方向上的投影值的方差:
D
j
=
1
m
−
1
∑
i
=
1
m
(
x
i
T
w
j
)
2
=
1
m
−
1
∑
i
=
1
m
(
x
i
T
w
j
)
T
(
x
i
T
w
j
)
=
1
m
−
1
∑
i
=
1
m
w
j
T
x
i
x
i
T
w
j
=
w
j
T
(
1
m
−
1
∑
i
=
1
m
x
i
x
i
T
)
w
j
=
w
j
T
(
1
m
−
1
X
X
T
)
w
j
=
w
j
T
C
w
j
\begin{aligned} D_j&=\frac{1}{m-1}{\sum_{i=1}^{m}{(\bm{x_i^T w_j)^2}}}\\ &=\frac{1}{m-1}{\sum_{i=1}^{m}{(\bm{x_i^T w_j)}^T(\bm{x_i^T w_j)}} } \\ &=\frac{1}{m-1}{\sum_{i=1}^m\bm{w_j^Tx_i x_i^Tw_j}} \\ &=\bm{w_j^T}(\frac{1}{m-1}\sum_{i=1}^m\bm{x_ix_i^T})\bm{w_j}\\ &=\bm{w_j^T}(\frac{1}{m-1}XX^T)\bm{w_j} \\ &=\bm{w_j^T}C\bm{w_j} \end{aligned}
Dj=m−11i=1∑m(xiTwj)2=m−11i=1∑m(xiTwj)T(xiTwj)=m−11i=1∑mwjTxixiTwj=wjT(m−11i=1∑mxixiT)wj=wjT(m−11XXT)wj=wjTCwj
现在我们的目标和条件是:
{
m
a
x
{
w
j
T
C
w
j
}
w
j
T
w
j
=
1
\begin{cases} max \{\bm{w_j^T}C\bm{w_j}\} \\ \bm{w_j^Tw_j=1} \end{cases}
{max{wjTCwj}wjTwj=1
用拉格朗日函数表示:
L
(
w
j
)
=
w
j
T
C
w
j
+
λ
(
1
−
w
j
T
w
j
)
L(\bm {w_j})=\bm{w_j^T}C\bm{w_j}+ \lambda(1-\bm{w_j^Tw_j})
L(wj)=wjTCwj+λ(1−wjTwj)
对
w
j
\bm{w_j}
wj 求导, 令其为
0
0
0 :
C
w
j
=
λ
w
j
C\bm{w_j}= \lambda\bm{w_j}
Cwj=λwj
这里表明,
w
j
\bm{w_j}
wj是
C
C
C 的特征向量,
λ
\lambda
λ 是对应的特征值。而且有:
D
j
=
w
j
T
C
w
j
=
w
j
T
λ
w
j
=
λ
w
j
T
w
j
=
λ
D_j=\bm{w_j^T}C\bm{w_j}=\bm{w_j^T}\lambda\bm{w_j}=\lambda\bm{w_j^T}\bm{w_j}=\lambda
Dj=wjTCwj=wjTλwj=λwjTwj=λ
我们发现投影后的最大方差就是基向量
w
j
\bm{w_j}
wj 对应的特征值。我们要找的
k
k
k 个投影用的基向量就是
C
C
C 的最大的
k
k
k 个特征值对应的单位特征向量。
总结PCA的步骤
PCA的求解步骤如下:
1.把
m
m
m 个
n
n
n 维向量表示的样本按列组成原始数据矩阵
X
X
X
2.把
X
X
X 的每个特征,即每一行进行零均值化,即每个元素减去这行的均值
3.求出协方差矩阵
C
=
1
m
−
1
X
X
T
C=\displaystyle\frac{1}{m-1}XX^T
C=m−11XXT 的特征值和对应的单位特征向量
4.把
C
C
C 的单位特征向量按照特征值从大到小,按行组成矩阵,取前
k
k
k 行组成基变换矩阵
P
P
P
5.降维后的
k
k
k 行
m
m
m 列数据矩阵就是
Y
=
P
X
Y=PX
Y=PX
PCA的特点
- 缓解维度灾难:PCA降维后,使得样本的采样密度增大了。
- 降噪:当数据收到噪声影响时,最小的特征值对应的特征向量往往与噪声相关,降维的过程中将它们舍弃,可以起到降噪的效果。
- 过拟合:由于PCA舍去了一些信息,而这些信息可能是分类或者回归需要的关键信息,只是在训练集上没有重要表现,导致在训练集上过拟合。
- 特征独立:PCA不仅使数据降到低维,还使得降维之后的数据特征相互独立。
细节
零均值化
当使用PCA对训练集进行降维时,也需要对验证集和测试集做同样的PCA。而且对验证集、测试集零均值化用的均值必须是训练集的均值,因为验证集和测试集是不可观测的。
PCA和SVD的关系
PCA本质是特征值分解,而特征值和特征向量只有方阵才有,而对与任意矩阵都可以做奇异值分解。
PCA
对于一个实对称方阵
A
A
A ,总可以对角化:
A
=
P
Λ
P
−
1
A=P\Lambda P^{-1}
A=PΛP−1
如果
P
P
P 是正交矩阵,有
P
T
=
P
−
1
P^T=P^{-1}
PT=P−1, 进而有:
A
=
P
Λ
P
T
A=P\Lambda P^{T}
A=PΛPT
SVD
一个矩阵
A
n
,
m
A_{n,m}
An,m 可以 进行奇异值分解:
A
n
,
m
=
U
n
,
n
Σ
n
,
m
V
T
m
,
m
≈
U
n
,
k
Σ
k
,
k
V
T
k
,
m
A_{n,m}=U_{n,n}\Sigma_{n,m} {V^T}_{m,m} \approx U_{n,k}\Sigma_{k,k} {V^T}_{k,m}
An,m=Un,nΣn,mVTm,m≈Un,kΣk,kVTk,m
这里的
U
n
,
n
U_{n,n}
Un,n 和
V
m
,
m
V_{m,m}
Vm,m 都是正交矩阵,。 满足
U
n
,
n
U
T
n
,
n
=
I
n
U_{n,n} {U^T}_{n,n}=I_{n}
Un,nUTn,n=In,
V
m
,
m
V
T
m
,
m
=
I
m
V_{m,m} {V^T}_{m,m}=I_{m}
Vm,mVTm,m=Im。后面的约等于是因为
Σ
\Sigma
Σ 有多个奇异值,对角线上的奇异值按从大到小从上往下排列,那么后面很多其实很小接近于
0
0
0, 不妨近似取前
k
k
k 个较大的。
A
T
A
=
(
U
Σ
V
T
)
T
(
U
Σ
V
T
)
=
V
Σ
2
V
T
A
A
T
=
(
U
Σ
V
T
)
(
U
Σ
V
T
)
T
=
U
Σ
2
U
T
\begin{aligned} A^TA&=(U\Sigma V^T)^T(U\Sigma V^T)=V\Sigma^2 V^T \\ AA^T &= (U\Sigma V^T)(U\Sigma V^T)^T=U\Sigma^2 U^T \end{aligned}
ATAAAT=(UΣVT)T(UΣVT)=VΣ2VT=(UΣVT)(UΣVT)T=UΣ2UT可见,
V
V
V 的每一列是
A
T
A
A^TA
ATA 的特征向量,
U
U
U 的每一列是
A
A
T
AA^T
AAT 的特征向量。
Σ
2
\Sigma^2
Σ2 的对角线元素是
A
T
A
A^TA
ATA 和
A
A
T
AA^T
AAT 的特征值。记它们的特征值矩阵维
Λ
\Lambda
Λ:
Λ
=
Σ
2
\Lambda=\Sigma^2
Λ=Σ2 可见
A
T
A
A^TA
ATA 和
A
A
T
AA^T
AAT 的特征值是
A
A
A 的对应奇异值的平方。
在PCA中,我们需要对协方差矩阵
C
=
1
m
−
1
X
X
T
C=\frac{1}{m-1}XX^T
C=m−11XXT 进行特征值分解,如果令
A
=
1
m
−
1
X
A=\frac{1}{\sqrt{m-1}}X
A=m−11X, 则
C
=
A
A
T
C=AA^T
C=AAT, 对
A
A
A 进行奇异值分解可以等价于对
C
C
C 进行特征值分解。
可以用 SVD 替代来求解 PCA:
- 当样本维度很高时,协方差矩阵计算太慢;
- 方阵特征值分解计算效率不高;
- SVD 出了特征值分解这种求解方式外,还有更高效更准球的迭代求解方式,避免了 X X T XX^T XXT 的计算;
- 其实 PCA 与 SVD 的右奇异向量的压缩效果相同。