PCA 原理
1、PCA 原理推导
假设有 M 个样本
x
1
,
x
2
,
.
.
.
,
x
m
x_1, x_2, ..., x_m
x1,x2,...,xm ,每个样本点
x
i
x_i
xi 含有 N 个特征,则每个样本数据可以表示为:
x
i
=
(
x
i
(
1
)
,
(
x
i
(
2
)
,
.
.
.
,
(
x
i
(
n
)
)
x_i =( x^{(1)}_i, (x^{(2)}_i,..., (x^{(n)}_i)
xi=(xi(1),(xi(2),...,(xi(n)),整体样本数据在 N 维特征空间的原始坐标系为
I
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
I=(i_1, i_2, ..., i_n)
I=(i1,i2,...,in),
I
I
I 是一组标准正交基,即有如下性质:
∣
∣
i
s
∣
∣
2
=
1
i
s
T
⋅
i
t
=
0
,
s
≠
t
\begin{aligned} ||i_s||_2 =& \ 1 \\ i_s^T \cdot i_t =& \ 0 \ , \ s ≠ t \end{aligned}
∣∣is∣∣2=isT⋅it= 1 0 , s=t
样本点
x
i
x_i
xi 在原始坐标系中的表示为:
x
i
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
⋅
(
x
i
(
1
)
x
i
(
2
)
⋮
x
i
(
n
)
)
,
i
=
1
,
2
,
3...
,
m
x_i= (i_1, i_2, ...,i_n)\cdot \begin{pmatrix} x^{(1)}_i \\ x^{(2)}_i \\ \vdots \\ x^{(n)}_i \end{pmatrix} \ , \ i=1,2,3...,m
xi=(i1,i2,...,in)⋅⎝⎜⎜⎜⎜⎛xi(1)xi(2)⋮xi(n)⎠⎟⎟⎟⎟⎞ , i=1,2,3...,m
假设进行线性变换之后得到的新的坐标系为
J
=
(
j
1
,
j
2
,
.
.
.
,
j
n
′
)
J=(j_1, j_2, ..., j_{n'})
J=(j1,j2,...,jn′),
J
J
J 同样是一组标准正交基,即满足上述正交基的性质。则样本点
x
i
x_i
xi 在新的坐标系中的近似表示为:
x
i
∼
=
(
j
1
,
j
2
,
.
.
.
,
j
n
′
)
⋅
(
z
i
(
1
)
z
i
(
2
)
⋮
z
i
(
n
′
)
)
,
i
=
1
,
2
,
3...
,
m
\mathop{{x_i}}\limits^{\sim } = (j_1, j_2, ...,j_{n'})\cdot \begin{pmatrix} z^{(1)}_i \\ z^{(2)}_i \\ \vdots \\ z^{(n')}_i \end{pmatrix} \ , \ i=1,2,3...,m
xi∼=(j1,j2,...,jn′)⋅⎝⎜⎜⎜⎜⎛zi(1)zi(2)⋮zi(n′)⎠⎟⎟⎟⎟⎞ , i=1,2,3...,m
根据正交基的性质,
j
s
j_s
js 可以等价于:
j
s
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
⋅
(
j
s
⋅
i
1
j
s
⋅
i
2
⋮
j
s
⋅
i
n
)
,
s
=
1
,
2
,
3...
,
m
′
j_s= (i_1, i_2, ...,i_n)\cdot \begin{pmatrix} j_s \cdot i_1 \\ j_s \cdot i_2 \\ \vdots \\ j_s \cdot i_n \\ \end{pmatrix} \ , \ s=1,2,3...,m'
js=(i1,i2,...,in)⋅⎝⎜⎜⎜⎛js⋅i1js⋅i2⋮js⋅in⎠⎟⎟⎟⎞ , s=1,2,3...,m′
令:
w
s
=
(
j
s
⋅
i
1
j
s
⋅
i
2
⋮
j
s
⋅
i
n
)
,
s
=
1
,
2
,
3...
,
m
′
w_s= \begin{pmatrix} j_s \cdot i_1 \\ j_s \cdot i_2 \\ \vdots \\ j_s \cdot i_n \\ \end{pmatrix} \ , \ s=1,2,3...,m'
ws=⎝⎜⎜⎜⎛js⋅i1js⋅i2⋮js⋅in⎠⎟⎟⎟⎞ , s=1,2,3...,m′
则
w
s
w_s
ws 是一个新的基向量,其各分量就是基向量
j
s
j_s
js 在原始坐标系
(
i
1
,
i
2
,
.
.
.
,
i
n
)
(i_1, i_2, ..., i_n)
(i1,i2,...,in) 中的投影。所以,
j
s
j_s
js 可以写为:
j
s
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
⋅
w
s
,
s
=
1
,
2
,
.
.
.
,
n
′
j_s = (i_1, i_2, ...,i_n)\cdot w_s \ , \ s =1 ,2 ,..., n'
js=(i1,i2,...,in)⋅ws , s=1,2,...,n′
根据正交基性质,有
∣
∣
w
s
∣
∣
2
=
1
,
w
s
T
⋅
w
t
=
0
,
s
≠
t
||w_s||_2\ =\ 1 \ , \ w_s^T \cdot w_t = \ 0 \ , \ s≠t
∣∣ws∣∣2 = 1 , wsT⋅wt= 0 , s=t。
类似的有
w
1
,
w
2
,
.
.
.
,
w
n
′
w_1,w_2,...,w_{n'}
w1,w2,...,wn′,将其写成矩阵形式为:
W
=
[
w
1
,
w
2
,
.
.
.
,
w
N
′
]
=
(
j
1
⋅
i
1
j
2
⋅
i
1
⋯
j
n
′
⋅
i
1
j
1
⋅
i
2
j
2
⋅
i
2
⋯
j
n
′
⋅
i
2
⋮
⋮
⋱
⋮
j
1
⋅
i
n
j
2
⋅
i
n
⋯
j
n
′
⋅
i
n
)
W = [w_1, w_2, ...,w_{N'}] = \begin{pmatrix} j_1 \cdot i_1 & j_2 \cdot i_1 & \cdots & j_{n'} \cdot i_1\\ j_1 \cdot i_2 & j_2 \cdot i_2 & \cdots & j_{n'} \cdot i_2\\ \vdots & \vdots & \ddots & \vdots \\ j_1 \cdot i_n & j_2 \cdot i_n & \cdots & j_{n'} \cdot i_n\\ \end{pmatrix}
W=[w1,w2,...,wN′]=⎝⎜⎜⎜⎛j1⋅i1j1⋅i2⋮j1⋅inj2⋅i1j2⋅i2⋮j2⋅in⋯⋯⋱⋯jn′⋅i1jn′⋅i2⋮jn′⋅in⎠⎟⎟⎟⎞
则 W 就称为坐标变换矩阵,且有
W
=
W
T
,
W
W
T
=
I
W = W^T, \ WW^T =I
W=WT, WWT=I 。根据坐标变换矩阵,新坐标系和原始坐标系直接的关系可以表示为:
(
j
1
,
j
2
,
.
.
.
,
j
n
′
)
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
⋅
W
(j_1, j_2, ...,j_{n'}) = (i_1, i_2, ...,i_n)\cdot W
(j1,j2,...,jn′)=(i1,i2,...,in)⋅W
将其带入前面
x
i
x_i
xi 在新坐标系中的近似表达式,可得:
x
l
∼
=
(
j
1
,
j
2
,
.
.
.
,
j
n
′
)
⋅
(
z
i
(
1
)
z
i
(
2
)
⋮
z
i
(
n
′
)
)
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
W
⋅
(
z
i
(
1
)
z
i
(
2
)
⋮
z
i
(
n
′
)
)
\mathop{{x_l}}\limits^{\sim} = (j_1, j_2, ...,j_{n'})\cdot \begin{pmatrix} z^{(1)}_i \\ z^{(2)}_i \\ \vdots \\ z^{(n')}_i \end{pmatrix} = (i_1, i_2, ...,i_n) W \cdot \begin{pmatrix} z^{(1)}_i \\ z^{(2)}_i \\ \vdots \\ z^{(n')}_i \end{pmatrix}
xl∼=(j1,j2,...,jn′)⋅⎝⎜⎜⎜⎜⎛zi(1)zi(2)⋮zi(n′)⎠⎟⎟⎟⎟⎞=(i1,i2,...,in)W⋅⎝⎜⎜⎜⎜⎛zi(1)zi(2)⋮zi(n′)⎠⎟⎟⎟⎟⎞
再将其与
x
i
x_i
xi 在原始坐标系中的表达式
x
i
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
⋅
(
x
i
(
1
)
x
i
(
2
)
⋮
x
i
(
n
)
)
x_i = (i_1, i_2, ...,i_n)\cdot \begin{pmatrix}x^{(1)}_i \\ x^{(2)}_i \\\vdots \\ x^{(n)}_i \end{pmatrix}
xi=(i1,i2,...,in)⋅⎝⎜⎜⎜⎜⎛xi(1)xi(2)⋮xi(n)⎠⎟⎟⎟⎟⎞ 比较可知,通过坐标变换来降维,相当于是用
W
z
i
Wz_i
Wzi 去近似表示了
x
i
x_i
xi ,使:
x
i
=
W
z
i
x_i = W z_i
xi=Wzi
即:
z
i
=
W
−
1
x
i
=
W
T
x
i
z_i = W^{-1}x_i=W^Tx_i
zi=W−1xi=WTxi
则有:
z
i
=
w
s
T
x
i
,
s
=
1
,
2
,
3...
,
n
′
z_i = w_s^Tx_i \ , \quad\quad\quad\quad s=1,2,3...,n'
zi=wsTxi ,s=1,2,3...,n′
一般,
n
′
n'
n′ 会远小于
n
n
n ,这样就可以达到降维的目的了。将维度由
M
M
M 降到
M
′
M'
M′ ,相当于人为的丢弃了部分坐标。我们的要求是:基于将为后的坐标重构样本时,得到的重构样本与原始原本坐标尽量相同。对于样本点
x
i
x_i
xi 来说,即要使
W
z
i
W z_i
Wzi 和
x
i
x_i
xi 的距离最小化,推广到整体样本点,即:
m
i
n
∑
i
=
1
M
∣
∣
W
z
i
−
x
i
∣
∣
2
2
min \sum\limits_{i=1}^M|| W z_i - x_i ||^2_2
mini=1∑M∣∣Wzi−xi∣∣22
先计算
∣
∣
W
z
i
−
x
i
∣
∣
2
2
|| W z_i - x_i ||^2_2
∣∣Wzi−xi∣∣22,即
∑
i
=
1
M
∣
∣
W
z
i
−
x
i
∣
∣
2
2
=
(
∑
i
=
1
M
x
i
T
x
i
)
−
t
r
[
W
T
(
∑
i
=
1
M
x
i
T
x
i
)
W
]
=
(
∑
i
=
1
M
x
i
T
x
i
)
−
t
r
(
W
T
X
X
T
W
)
\sum\limits_{i=1}^M|| W z_i - x_i ||^2_2 \\ \begin{aligned} &= (\sum\limits_{i=1}^Mx_i^Tx_i) - tr[W^T(\sum\limits_{i=1}^Mx_i^Tx_i)W] \\ &= (\sum\limits_{i=1}^Mx_i^Tx_i) - tr(W^TXX^TW) \end{aligned}
i=1∑M∣∣Wzi−xi∣∣22=(i=1∑MxiTxi)−tr[WT(i=1∑MxiTxi)W]=(i=1∑MxiTxi)−tr(WTXXTW)
因为对于给定 M 个样本,
∑
i
=
1
n
x
i
T
x
i
\sum\limits^n_{i=1}x_i^Tx_i
i=1∑nxiTxi 是一个固定值,因此最小化上面的结果等价于:
m
i
n
−
t
r
(
W
T
X
X
T
W
)
s
.
t
.
W
T
W
=
I
min \ - tr(W^TXX^TW) \\ s.t. \quad W^TW=I
min −tr(WTXXTW)s.t.WTW=I
构造拉格朗日函数:
L
(
W
)
=
−
t
r
(
W
T
X
X
T
W
)
+
λ
(
W
T
W
−
I
)
L(W) = - tr(W^TXX^TW) + \lambda(W^TW-I)
L(W)=−tr(WTXXTW)+λ(WTW−I)
对
W
W
W 求导,可得:
− X X T W + λ W = 0 -XX^TW + \lambda W = 0 −XXTW+λW=0
移项可得;
X
X
T
W
=
λ
W
XX^TW = \lambda W
XXTW=λW
可以看出,坐标变换矩阵
W
W
W 为
X
X
T
XX^T
XXT 的
M
′
M'
M′ 个特征向量组成的矩阵,而
λ
\lambda
λ 为
X
X
T
XX^T
XXT 的特征值。当我们将原始数据集从
N
N
N 维降到
N
’
N’
N’ 维时,只需要找到
X
X
T
XX^T
XXT 最大的
N
’
N’
N’ 个特征值对应的特征向量,将其组成坐标变换矩阵(投影矩阵)
W
W
W ,然后利用
z
i
=
W
T
x
i
z_i = W^Tx_i
zi=WTxi 即可实现降维的目的。
文中实例及参考:
- 《机器学习基础》