Principal Component Analysis(PCA)
主成分分析(Principle Component Analysis)的本质是对原始特征空间的重构,具体动机是针对原始特征空间中可能存在线性相关的特征,使用一系列正交变换将其转化为一组两两相互正交的正交基。
输入: 原始数据 X ∈ R d × n X∈R^{d×n} X∈Rd×n 、降维后的维数k
输出: Y=PX,即降维后的数据。
算法步骤:
- 1.将X的每一行进行中心化,即减去这一行的均值(目的是将所有样本平移至样本空间的中心位置,而演样本之间的相对位置不发生变化): x c e n t e r e d = x − μ x_{centered}= x−μ xcentered=x−μ
- 2.求出协方差矩阵 C = 1 n X X T C=\frac1nXX^T C=n1XXT
- 3.求出协方差矩阵的特征值和特征向量
- 4.将特征向量按对应的特征值的大小从上到下按行排列成矩阵,取前k行组成矩阵P
- 5. Y = P X Y=PX Y=PX即为降维后的数据
最优化方法的推导证明:
(一)基于最大投影方差
最大投影方差的思想是:以原始样本点到某一特征方向的投影结果方差达到最大的特征方向作为第一个主成分,从而找到一组相互正交的正交基。
我们希望变化后的数据,协方差为0且数据内方差尽可能大
当样本进行了中心化之后==投影的均值为零==,证明如下:
μ
=
1
n
∑
i
=
1
n
[
w
⊤
(
x
i
−
x
ˉ
)
]
=
w
⊤
[
1
n
∑
i
=
1
n
(
x
i
−
x
ˉ
)
]
=
w
⊤
(
1
n
∑
i
=
1
n
x
i
−
1
n
⋅
n
⋅
x
ˉ
)
=
w
⊤
(
x
ˉ
−
x
ˉ
)
=
0
\mu=\frac1n\sum_{i=1}^n[w^\top (x_i-\bar{x})]\\=w^\top[\frac1n\sum_{i=1}^n (x_i-\bar{x})]\\=w^\top(\frac1n\sum_{i=1}^n x_i-\frac1n ·n·\bar{x})\\ =w^\top(\bar{x}-\bar{x})=0
μ=n1i=1∑n[w⊤(xi−xˉ)]=w⊤[n1i=1∑n(xi−xˉ)]=w⊤(n1i=1∑nxi−n1⋅n⋅xˉ)=w⊤(xˉ−xˉ)=0
本点 x i x_i xi在基 w w w 下的投影结果为: ( x i , w ) = w ⊤ x i (x_i,w)=w^\top x_i (xi,w)=w⊤xi ,于是我们有方差:
样本方差计算公式 : S 2 = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 样本方差计算公式:\\ \\ S^2=\frac1{n-1}\sum_{i=1}^n(x_i-\bar{x})^2 样本方差计算公式:S2=n−11i=1∑n(xi−xˉ)2
投影方差为:
(
投影后投影均值为
0
)
D
(
x
)
=
1
n
∑
i
=
1
n
(
w
⊤
(
x
i
−
x
ˉ
)
−
0
)
2
=
1
n
∑
i
=
1
n
[
(
w
⊤
(
x
i
−
x
ˉ
)
)
(
w
⊤
(
x
i
−
x
ˉ
)
)
⊤
]
=
1
n
Σ
i
=
1
n
w
⊤
(
x
i
−
x
ˉ
)
(
x
i
−
x
ˉ
)
⊤
w
=
w
⊤
(
1
n
Σ
i
=
1
n
(
x
i
−
x
ˉ
)
(
x
i
−
x
ˉ
)
⊤
)
w
\\ \\(投影后投影均值为0)\\ D(x)=\frac1n∑_{i=1}^n(w^\top (x_i-\bar{x})-0)^2 \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\frac1n∑_{i=1}^n[(w^\top (x_i-\bar{x}))(w^\top (x_i-\bar{x}))^\top]\\ \ \ \ \ \ \ \ \ \ \ \ \ =\frac1n Σ_{i=1}^n w^\top(x_i-\bar{x})(x_i-\bar{x})^\top w \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =w^\top (\frac1nΣ_{i=1}^n (x_i-\bar{x})(x_i-\bar{x})^\top ) w\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
(投影后投影均值为0)D(x)=n1i=1∑n(w⊤(xi−xˉ)−0)2 =n1i=1∑n[(w⊤(xi−xˉ))(w⊤(xi−xˉ))⊤] =n1Σi=1nw⊤(xi−xˉ)(xi−xˉ)⊤w =w⊤(n1Σi=1n(xi−xˉ)(xi−xˉ)⊤)w
直接用中心化之后的样本计算:
D
(
x
)
=
1
n
∑
i
=
1
n
(
w
⊤
x
i
)
2
=
1
n
∑
i
=
1
n
[
(
w
⊤
x
i
)
(
w
⊤
x
i
)
⊤
]
=
1
n
Σ
i
=
1
n
w
⊤
x
i
x
i
⊤
w
=
w
⊤
(
1
n
Σ
i
=
1
n
x
i
x
i
⊤
)
w
D(x)=\frac1n∑_{i=1}^n(w^\top x_i)^2 \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\frac1n∑_{i=1}^n[(w^\top x_i)(w^\top x_i)^\top]\\ \ \ \ \ \ \ \ \ \ \ \ \ =\frac1n Σ_{i=1}^n w^\top x_ix_i^\top w \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =w^\top (\frac1nΣ_{i=1}^n x_ix_i^\top ) w\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
D(x)=n1i=1∑n(w⊤xi)2 =n1i=1∑n[(w⊤xi)(w⊤xi)⊤] =n1Σi=1nw⊤xixi⊤w =w⊤(n1Σi=1nxixi⊤)w
Σ
i
=
1
n
(
x
i
−
x
ˉ
)
(
x
i
−
x
ˉ
)
⊤
)
Σ_{i=1}^n (x_i-\bar{x})(x_i-\bar{x})^\top )
Σi=1n(xi−xˉ)(xi−xˉ)⊤) (中心化之后是
1
n
Σ
i
=
1
n
x
i
x
i
⊤
\frac1nΣ_{i=1}^n x_ix_i^\top
n1Σi=1nxixi⊤)就是协方差矩阵(或者叫做散度矩阵),我们另这个矩阵为
Λ
\Lambda
Λ ,于是我们有:
{
w
=
a
r
g
m
a
x
w
⊤
Λ
w
s
.
t
.
w
T
w
=
1
\begin{cases} w=arg \ max\ \ {w^\top \Lambda w} \\ s.t.w^Tw=1 \end{cases}
{w=arg max w⊤Λws.t.wTw=1
然后构造拉格朗日函数:
L
(
w
)
=
w
t
Λ
w
+
λ
(
1
−
w
T
w
)
L(w) = w^t Λw + \lambda(1-w^Tw)
L(w)=wtΛw+λ(1−wTw)
对 w 求导:
Λ
w
=
λ
w
Λw=\lambda w
Λw=λw
此时我们的方差为:
D
(
x
)
=
w
T
Λ
w
=
λ
w
T
w
=
λ
D(x)=w^TΛw=\lambda w^Tw=\lambda
D(x)=wTΛw=λwTw=λ
于是我们发现,x 投影后的方差就是协方差矩阵的特征值。我们要找到最大方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量,次佳就是第二大特征值对应的特征向量,以此类推。
(二)基于最小重构误差
特征空间重构是基于样本内部维度特征之间可能存在线性相关的情况,从而通过正交变换,使可能存在线性相关的一组特征转换成相互正交的(必然也是线性无关的) 的一组新特征。
以二维举例:
样本点 x i = [ x i 1 x i 2 ] x_i=\begin{bmatrix}x_{i_1}\\x_{i_2}\end{bmatrix} xi=[xi1xi2]在特征空间重构之后得到新的向量结果 x i ′ = [ w i 1 w i 2 ] x_i'=\begin{bmatrix}w_{i_1}\\ w_{i_2}\end{bmatrix} xi′=[wi1wi2],图像如下:
能够得到:
w
i
1
=
w
1
⊤
x
i
w
i
2
=
w
2
⊤
x
i
x
i
′
=
(
w
1
⊤
x
i
,
w
2
⊤
x
i
)
⊤
=
[
w
1
⊤
x
i
]
w
1
+
[
w
2
⊤
x
i
]
w
2
w_{i_1}=w_1^\top x_i\\ w_{i_2}=w_2^\top x_i\\ x_i'=(w_1^\top x_i,w_2^\top x_i)^\top\\ =[w_1^\top x_i]w_1+[w_2^\top x_i]w_2
wi1=w1⊤xiwi2=w2⊤xixi′=(w1⊤xi,w2⊤xi)⊤=[w1⊤xi]w1+[w2⊤xi]w2
x
i
′
x_i'
xi′写成这样的原因:
[
w
1
⊤
x
i
]
[w_1^\top x_i]
[w1⊤xi]是一个标量或者是一个系数,对应的
[
w
1
⊤
x
i
]
w
1
[w_1^\top x_i]w_1
[w1⊤xi]w1可以表示为如下的形式:
[
w
1
⊤
x
i
]
w
1
=
[
w
1
⊤
x
i
0
]
[w_1^\top x_i]w_1= \begin{bmatrix} w_1^\top x_i \\ 0 \end{bmatrix}
[w1⊤xi]w1=[w1⊤xi0]
同理
[
w
2
⊤
x
i
]
w
2
[w_2^\top x_i]w_2
[w2⊤xi]w2可以表示为如下:
[
w
2
⊤
x
i
]
w
2
=
[
0
w
2
⊤
x
i
]
[w_2^\top x_i]w_2= \begin{bmatrix} 0\\ w_2^\top x_i\end{bmatrix}
[w2⊤xi]w2=[0w2⊤xi]
因而:
x
i
′
=
[
w
1
⊤
x
i
0
]
+
[
0
w
2
⊤
x
i
]
=
[
w
1
⊤
x
i
w
2
⊤
x
i
]
x_i'=\begin{bmatrix} w_1^\top x_i \\ 0 \end{bmatrix}+\begin{bmatrix} 0\\ w_2^\top x_i\end{bmatrix}=\begin{bmatrix}w_1^\top x_i\\ w_2^\top x_i\end{bmatrix}
xi′=[w1⊤xi0]+[0w2⊤xi]=[w1⊤xiw2⊤xi]
将二维延伸到高维特征空间中,假设
x
i
x_i
xi∈
X
X
X的d维特征表示如下:
x
i
=
[
x
i
1
x
i
2
.
.
.
x
i
d
]
x_i= \begin{bmatrix} x_{i_1}\\ x_{i_2}\\ ...\\ x_{i_d}\\ \end{bmatrix}
xi=
xi1xi2...xid
通过特征空间重构的方式得到一组正交基,正交基的特征向量和对应特征值为:
特征值 | λ 1 λ_1 λ1 | λ 2 λ_2 λ2 | … | λ d λ_d λd | |
---|---|---|---|---|---|
特征向量 | w 1 w_1 w1 | w 2 w_2 w2 | … | w d w_d wd |
如果重构过程中没有丢失信息,那么特征空间重构条件下的
x
i
′
x_i'
xi′表示如下:
x
i
′
=
[
w
1
⊤
x
i
0
0
.
.
.
0
]
+
[
0
w
2
⊤
x
i
0
.
.
.
0
]
+
.
.
.
+
[
0
0
0
.
.
.
w
d
⊤
x
i
]
=
[
w
1
⊤
x
i
w
2
⊤
x
i
w
3
⊤
x
i
.
.
.
w
d
⊤
x
i
]
x_i'= \begin{bmatrix} w_1^\top x_i \\ 0 \\0\\...\\0 \end{bmatrix}+ \begin{bmatrix} 0\\ w_2^\top x_i\\0\\...\\0 \end{bmatrix}+...+ \begin{bmatrix} 0 \\ 0 \\0\\...\\w_d^\top x_i \end{bmatrix} =\begin{bmatrix}w_1^\top x_i\\ w_2^\top x_i\\w_3^\top x_i\\...\\w_d^\top x_i\end{bmatrix}
xi′=
w1⊤xi00...0
+
0w2⊤xi0...0
+...+
000...wd⊤xi
=
w1⊤xiw2⊤xiw3⊤xi...wd⊤xi
重构的核心出发点是降维
基于上述特征重构结果,选择 最大的q 个特征值对应的特征向量,其余特征值结果忽略不计。
这种操作极大概率导致样本点的特征信息造成损失。
执行降维之后的重构样本点表示为:
x
i
′
′
=
∑
k
=
1
q
[
w
k
⊤
x
i
]
w
k
x_i''=\sum_{k=1}^q[w_k^\top x_i]w_k
xi′′=k=1∑q[wk⊤xi]wk
重构代价
重构代价表示样本点重构前与重构后之间差值的模:
∣
x
i
′
−
x
i
′
′
∣
=
∣
∣
x
i
′
−
x
i
′
′
∣
∣
2
|x_i'-x_i''|=\sqrt{||x_i'-x_i''||^2}
∣xi′−xi′′∣=∣∣xi′−xi′′∣∣2
为了方便运算,去掉根号后的重构代价为:
∣
∣
x
i
′
−
x
i
′
′
∣
∣
2
||x_i'-x_i''||^2
∣∣xi′−xi′′∣∣2
N个样本点的重构总代价为:
∑
i
=
1
n
∣
∣
x
i
′
−
x
i
′
′
∣
∣
2
\sum_{i=1}^n||x_i'-x_i''||^2
i=1∑n∣∣xi′−xi′′∣∣2
为了方便运算添加一个系数
1
n
\frac1n
n1:
J
=
1
n
∑
i
=
1
n
∣
∣
x
i
′
−
x
i
′
′
∣
∣
2
J=\frac1n\sum_{i=1}^n||x_i'-x_i''||^2
J=n1i=1∑n∣∣xi′−xi′′∣∣2
将
x
i
′
和
x
i
′
′
x_i'\ \ 和\ \ x_i''
xi′ 和 xi′′带入得到:
J
=
1
n
∑
i
=
1
n
∣
∣
∑
k
=
q
+
1
d
[
w
k
⊤
x
i
]
w
k
∣
∣
2
J=\frac1n\sum_{i=1}^n||\sum_{k=q+1}^d[w_k^\top x_i]w_k||^2
J=n1i=1∑n∣∣k=q+1∑d[wk⊤xi]wk∣∣2
[
w
k
⊤
x
i
]
w
k
[w_k^\top x_i]w_k
[wk⊤xi]wk该向量具体结果表示如下:
[
w
k
⊤
x
i
]
w
k
=
[
0
0
.
.
.
w
k
⊤
x
i
0
.
.
.
0
]
[w_k^\top x_i]w_k= \begin{bmatrix} 0\\ 0\\ ...\\ w_k^\top x_i\\ 0\\ ...\\ 0 \end{bmatrix}
[wk⊤xi]wk=
00...wk⊤xi0...0
则该向量模的平方为:
∣
∣
[
w
k
⊤
x
i
]
w
k
∣
∣
2
=
0
2
+
.
.
.
+
[
w
k
⊤
x
i
]
2
+
.
.
.
+
0
2
=
[
w
k
⊤
x
i
]
2
||[w_k^\top x_i]w_k||^2=0^2+...+[w_k^\top x_i]^2+...+0^2=[w_k^\top x_i]^2
∣∣[wk⊤xi]wk∣∣2=02+...+[wk⊤xi]2+...+02=[wk⊤xi]2
则:
J
=
1
n
∑
i
=
1
n
∑
k
=
q
+
1
d
[
w
k
⊤
x
i
]
2
J=\frac1n\sum_{i=1}^n\sum_{k=q+1}^d[w_k^\top x_i]^2
J=n1i=1∑nk=q+1∑d[wk⊤xi]2
将样本点中心化加入到公式:
J
=
1
n
∑
i
=
1
n
∑
k
=
q
+
1
d
[
w
k
⊤
(
x
i
−
x
ˉ
)
]
2
=
1
n
∑
i
=
1
n
∑
k
=
q
+
1
d
[
w
k
⊤
(
x
i
−
x
ˉ
)
]
[
w
k
⊤
(
x
i
−
x
ˉ
)
]
⊤
=
1
n
∑
i
=
1
n
∑
k
=
q
+
1
d
w
k
⊤
(
x
i
−
x
ˉ
)
(
x
i
−
x
ˉ
)
⊤
w
k
=
∑
k
=
q
+
1
d
w
k
⊤
[
1
n
∑
i
=
1
n
(
x
i
−
x
ˉ
)
(
x
i
−
x
ˉ
)
⊤
]
w
k
=
∑
k
=
q
+
1
d
w
k
⊤
Λ
w
k
J=\frac1n\sum_{i=1}^n\sum_{k=q+1}^d[w_k^\top (x_i-\bar{x})]^2\\ =\frac1n\sum_{i=1}^n\sum_{k=q+1}^d[w_k^\top (x_i-\bar{x})][w_k^\top (x_i-\bar{x})]^\top\\ =\frac1n\sum_{i=1}^n\sum_{k=q+1}^d w_k^\top (x_i-\bar{x}) (x_i-\bar{x})^\top w_k\\ =\sum_{k=q+1}^d w_k^\top [\frac1n\sum_{i=1}^n(x_i-\bar{x}) (x_i-\bar{x})^\top ]w_k\\ =\sum_{k=q+1}^d w_k^\top \Lambda w_k\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
J=n1i=1∑nk=q+1∑d[wk⊤(xi−xˉ)]2=n1i=1∑nk=q+1∑d[wk⊤(xi−xˉ)][wk⊤(xi−xˉ)]⊤=n1i=1∑nk=q+1∑dwk⊤(xi−xˉ)(xi−xˉ)⊤wk=k=q+1∑dwk⊤[n1i=1∑n(xi−xˉ)(xi−xˉ)⊤]wk=k=q+1∑dwk⊤Λwk
基于最小重构代价转化为优化问题:
{
a
r
g
m
i
n
J
w
k
s
.
t
.
w
k
⊤
w
k
=
1
\begin{cases} \underset{w_k}{arg\ min\ J} \\ s.t.\ \ w_k^\top w_k=1 \end{cases}
⎩
⎨
⎧wkarg min Js.t. wk⊤wk=1
构造拉格朗日函数:
L
(
w
)
=
∑
k
=
q
+
1
d
w
k
⊤
Λ
w
k
+
λ
(
1
−
w
k
⊤
w
k
)
L(w)=\sum_{k=q+1}^d w_k^\top \Lambda w_k+\lambda(1-w_k^\top w_k)
L(w)=k=q+1∑dwk⊤Λwk+λ(1−wk⊤wk)
对
w
k
w_k
wk求偏导数零其等于零:
∂
L
(
w
)
∂
w
=
0
→
Λ
w
=
λ
w
\frac{\partial L(w)}{\partial w}=0→\Lambda w=\lambda w
∂w∂L(w)=0→Λw=λw
虽然最终结果和最大投影方差的表示结果相同,但由于求解的是重构代价的最小值。因此,在选择特征向量过程中,从 最小特征值对应的特征向量开始选取。而最大投影方差从最大特征值对应得特征向量开始选取。