本文将记录有关PCA降维的内容。
当样本维度过高但是数据集数量较小时,在训练模型时很容易陷入过拟合,处理过拟合可以采用正则化、增加数据量、降低数据维度。在降低数据维度可以采用的方法有特征选择、线性降维(PCA)、非线性降维(流形)
PCA
数据集共有N个样本,
x
i
∈
R
P
x_i\in R^P
xi∈RP,降维之后的样本
x
^
∈
R
q
,
q
≪
p
\hat{x}\in R^q,q\ll p
x^∈Rq,q≪p
X
=
(
x
1
,
x
2
,
.
.
,
x
N
)
N
×
P
T
X
=
(
x
1
T
x
2
T
.
.
.
x
N
T
)
=
(
x
11
,
x
12
,
.
.
.
,
x
1
P
x
21
,
x
22
,
.
.
.
,
x
2
P
.
.
.
x
N
1
,
x
N
2
,
.
.
.
,
x
N
P
)
X=(x_1,x_2,..,x_N)^T_{N\times P}\\ X= \left( \begin{array}{ccc} x_1^T \\ x_2^T\\ ...\\ x_N^T \end{array} \right )=\left( \begin{array}{} x_{11},x_{12},...,x_{1P} \\ x_{21},x_{22},...,x_{2P}\\ ...\\ x_{N1},x_{N2},...,x_{NP} \end{array} \right )
X=(x1,x2,..,xN)N×PTX=⎝⎜⎜⎛x1Tx2T...xNT⎠⎟⎟⎞=⎝⎜⎜⎛x11,x12,...,x1Px21,x22,...,x2P...xN1,xN2,...,xNP⎠⎟⎟⎞
样本均值
X
ˉ
=
1
N
∑
i
N
x
i
X
ˉ
=
1
N
(
x
1
,
x
2
,
.
.
.
,
x
N
)
P
×
N
⋅
(
1
1
.
.
.
1
)
N
×
1
=
1
N
X
T
×
1
N
×
1
\bar X =\frac1N\sum_i^Nx_i\\ \bar X= \frac1N(x_1,x_2,...,x_N)_{P\times N} \cdot \left(\begin{array}{}1\\1\\...\\1\end{array}\right)_{N\times1}=\frac1NX^T\times 1_{N\times 1}
Xˉ=N1i∑NxiXˉ=N1(x1,x2,...,xN)P×N⋅⎝⎜⎜⎛11...1⎠⎟⎟⎞N×1=N1XT×1N×1
矩阵协方差,当x为列向量时:
x
x
T
xx^T
xxT,当x是行向量是
x
T
x
x^Tx
xTx
S
=
1
N
∑
i
N
(
x
i
−
X
ˉ
)
(
x
i
−
X
ˉ
)
T
S = \frac1N\sum_i^N(x_i-\bar X)(x_i-\bar X)^T
S=N1i∑N(xi−Xˉ)(xi−Xˉ)T
展开可知
S
=
1
N
(
x
1
−
X
ˉ
,
x
2
−
X
ˉ
,
.
.
.
,
x
N
−
X
ˉ
)
⋅
(
(
x
1
−
X
ˉ
)
T
(
x
2
−
X
ˉ
)
T
.
.
.
(
x
N
−
X
ˉ
)
T
)
S=\frac1N(x_1-\bar X,x_2-\bar X,...,x_N-\bar X)\cdot \left(\begin{array}{}(x_1-\bar X)^T\\(x_2-\bar X)^T\\...\\(x_N-\bar X)^T\end{array}\right)
S=N1(x1−Xˉ,x2−Xˉ,...,xN−Xˉ)⋅⎝⎜⎜⎛(x1−Xˉ)T(x2−Xˉ)T...(xN−Xˉ)T⎠⎟⎟⎞
该式的第一部分可化为
=
(
(
x
1
,
x
2
,
.
.
.
x
N
)
−
X
ˉ
⋅
1
N
×
1
T
)
=
X
T
−
1
N
x
T
⋅
1
N
×
1
⋅
1
N
×
1
T
=
X
T
(
E
−
1
N
1
N
×
1
⋅
1
N
×
1
T
)
=((x_1,x_2,...x_N)-\bar X\cdot 1_{N\times 1}^T)\\ =X^T-\frac1Nx^T\cdot 1_{N\times1}\cdot 1_{N\times1}^T\\ =X^T(E-\frac1N1_{N\times1}\cdot 1_{N\times1}^T)
=((x1,x2,...xN)−Xˉ⋅1N×1T)=XT−N1xT⋅1N×1⋅1N×1T=XT(E−N11N×1⋅1N×1T)
则第二部分转置为
(
E
−
1
N
1
N
×
1
⋅
1
N
×
1
T
)
T
⋅
X
(E-\frac1N1_{N\times1}\cdot 1_{N\times1}^T)^T\cdot X
(E−N11N×1⋅1N×1T)T⋅X
则可以得到协方差矩阵
S
=
1
N
X
T
H
H
T
X
S=\frac1N X^THH^TX
S=N1XTHHTX
其中定义中心矩阵
H
=
(
E
−
1
N
1
N
×
1
⋅
1
N
×
1
T
)
H=(E-\frac1N1_{N\times1}\cdot 1_{N\times1}^T)
H=(E−N11N×1⋅1N×1T)
中心矩阵的作用是将样本的均值变成0, x i ^ = H x i , ∑ i x i ^ = 0 \hat{x_i}=Hx_i,\sum_i\hat{x_i}=0 xi^=Hxi,∑ixi^=0
中心矩阵是一个对称矩阵, H T = ( E − 1 N 1 N × 1 ⋅ 1 N × 1 T ) = H H^T=(E-\frac1N1_{N\times1}\cdot1_{N\times1}^T)=H HT=(E−N11N×1⋅1N×1T)=H
计算可得 H ⋅ H = H , H N = H H\cdot H=H,H^N=H H⋅H=H,HN=H
则协方差矩阵可化简为 S = 1 N X T H X S=\frac1NX^THX S=N1XTHX
PCA的核心思想即为对样本空间特征的重构并进行特征选择,也就是在特征空间找找到一个超平面,将样本映射在该超平面中从而实现降维,基于的方法是1样本对于超平面的最大投影方差;2样本的最小投影距离(最小重构距离)。
假设超平面的单位基向量为
u
,
∣
u
∣
2
=
1
,
u
u
=
1
u,|u|^2=1,u^u=1
u,∣u∣2=1,uu=1
基于最大投影方差
- 样本完成中心化 x i − X ˉ x_i-\bar X xi−Xˉ
- 中心化之后的样本到超平面的投影
( x i − X ˉ ) T ⋅ u (x_i-\bar X)^T\cdot u (xi−Xˉ)T⋅u - 所有样本的投影方差为
J
=
1
N
∑
i
N
(
(
x
i
−
X
ˉ
)
T
⋅
u
−
0
)
2
J=\frac1N\sum_i^N((x_i-\bar X)^T\cdot u-0)^2
J=N1∑iN((xi−Xˉ)T⋅u−0)2
可以转化为
J = 1 N ∑ i N u T ( x i − X ˉ ) ( x i − X ˉ ) T u J = u T ( 1 N ∑ i N ( x i − X ˉ ) ( x i − X ˉ ) T ) u J = u T S u J=\frac1N\sum_i^N u^T(x_i-\bar X)(x_i-\bar X)^T u\\ J=u^T(\frac1N\sum_i^N(x_i -\bar X)(x_i-\bar X)^T) u\\ J=u^TSu J=N1i∑NuT(xi−Xˉ)(xi−Xˉ)TuJ=uT(N1i∑N(xi−Xˉ)(xi−Xˉ)T)uJ=uTSu - 则可以得到一个最优化问题
u ^ = arg max u T S u s . t .    u T u = 1 \hat{u}=\arg\max u^TSu\\ s.t.\;u^Tu=1 u^=argmaxuTSus.t.uTu=1
通过拉格朗日数乘法求解u
L ( u , λ ) = u t S u + λ ( 1 − u t u ) ∂ l ∂ u = 2 S u − 2 λ u = 0 S u = λ u s . t .    u T u = 1 L(u,\lambda)=u^tSu+\lambda (1-u^tu)\\ {\partial l\over \partial u}=2Su-2\lambda u=0\\ Su=\lambda u\\ s.t. \;u^Tu=1 L(u,λ)=utSu+λ(1−utu)∂u∂l=2Su−2λu=0Su=λus.t.uTu=1
则得到超平面的基向量是矩阵协方差矩阵的特征向量。那么得到的特征向量即是对原样本空间特征的重构。将特征值从大到小排列,可以得到其对应的特征向量,即可得到所需要的降维之后的超平面的基向量,至此完成了对样本的降维。
降维之后的向量为 Z i = ∑ j q ( x i − X ˉ ) ⋅ u j u j Z_i=\sum_j^q(x_i-\bar X)\cdot u_ju_j Zi=∑jq(xi−Xˉ)⋅ujuj
基于最小投影距离
最小投影距离等价于最小的重构距离,即对于要投影的超平面的基向量u和投影之后的向量Z,现在得到将Z恢复到X需要距离最小的那个u,即是最优的超平面的基向量。
假设将样本空间重构之后的基向量为
u
1
,
u
2
,
u
p
u_1,u_2,u_p
u1,u2,up,则对于每个样本而言可以得到其坐标
x
i
=
∑
j
p
x
i
u
j
u
j
x_i=\sum_j^px_iu_ju_j
xi=∑jpxiujuj,因为样本空间没变只是改变了基向量,所有样本和之前基向量的样本是一样的;得到降维之后的样本其坐标
x
i
^
=
∑
j
q
x
i
u
j
u
j
\hat{x_i}=\sum_j^q x_iu_ju_j
xi^=∑jqxiujuj,则可以得到两者之间的差值,即为投影所需要的重构距离也可以理解为投影距离。
J
=
1
N
∑
i
N
(
∣
x
i
−
x
i
^
∣
2
)
J
=
1
N
∑
i
N
(
∣
∑
j
p
x
i
u
j
u
−
∑
j
q
x
i
u
j
u
j
∣
2
)
J
=
1
N
∑
i
N
(
∣
∑
k
=
p
+
1
q
x
i
u
k
u
k
∣
2
)
(
括
号
里
面
的
是
个
向
量
)
J
=
1
N
∑
i
N
∑
k
=
p
+
1
q
(
x
i
u
k
)
2
(
转
化
为
求
欧
式
距
离
)
J
=
1
N
∑
i
N
∑
k
=
p
+
1
q
(
(
x
i
−
X
ˉ
)
u
k
)
2
(
样
本
中
心
化
)
J
=
∑
k
=
p
+
1
q
1
N
∑
i
N
(
(
x
i
−
X
ˉ
)
u
k
)
2
J
=
∑
k
=
p
+
1
q
u
k
S
u
k
J=\frac1N\sum_i^N(|x_i-\hat{x_i}|^2)\\ J=\frac1N\sum_i^N(|\sum_j^px_iu_ju_-\sum_j^q x_iu_ju_j|^2)\\ J=\frac1N\sum_i^N(|\sum_{k=p+1}^qx_iu_ku_k|^2) (括号里面的是个向量)\\ J=\frac1N\sum_i^N\sum_{k=p+1}^q(x_iu_k)^2(转化为求欧式距离)\\ J=\frac1N\sum_i^N\sum_{k=p+1}^q((x_i-\bar X)u_k)^2(样本中心化)\\ J=\sum_{k=p+1}^q\frac1N\sum_{i}^N((x_i-\bar X)u_k)^2\\ J=\sum_{k=p+1}^qu_kSu_k
J=N1i∑N(∣xi−xi^∣2)J=N1i∑N(∣j∑pxiuju−j∑qxiujuj∣2)J=N1i∑N(∣k=p+1∑qxiukuk∣2)(括号里面的是个向量)J=N1i∑Nk=p+1∑q(xiuk)2(转化为求欧式距离)J=N1i∑Nk=p+1∑q((xi−Xˉ)uk)2(样本中心化)J=k=p+1∑qN1i∑N((xi−Xˉ)uk)2J=k=p+1∑qukSuk
则得到重构代价函数:
u
^
=
arg
min
∑
k
=
p
+
1
q
u
S
u
s
.
t
.
  
u
k
u
=
1
\hat{u}=\arg\min\sum_{k=p+1}^quSu\\ s.t.\;u_ku=1
u^=argmink=p+1∑quSus.t.uku=1
因为每个U之间线性无关,则对于每一个U,都可以分别求解
u
k
^
=
arg
min
∑
k
=
p
+
1
q
u
k
S
u
k
s
.
t
.
  
u
k
u
k
=
1
\hat{u_k}=\arg\min\sum_{k=p+1}^qu_kSu_k\\ s.t.\;u_ku_k=1
uk^=argmink=p+1∑qukSuks.t.ukuk=1
则可以分别得到
k
=
q
+
1
,
.
.
.
,
p
k={q+1,...,p}
k=q+1,...,p的特征向量,剩余的q个特征向量就是需要的降维的q个降维之后的基向量。
核化PCA
当高维空间到低维空间中是线性变化的时候可以采用PCA的方法,但如果高维数据不是线性的时候,需要先从将原始样本映射到一个更高维的空间中,在更高维的空间中采用PCA的方法
将原始的求协方差矩阵
X
T
X
x
=
λ
x
X^TX x=\lambda x
XTXx=λx
映射到高维的空间中求协方差矩阵的特征向量
ϕ
(
X
T
)
ϕ
(
X
)
x
=
λ
x
\phi(X^T)\phi(X)x=\lambda x
ϕ(XT)ϕ(X)x=λx
其中
ϕ
(
X
)
\phi(X)
ϕ(X)映射核函数,通常不会显示的给出,而是定义
K
(
x
,
z
)
=
ϕ
(
x
)
ϕ
(
z
)
K(x,z)=\phi(x)\phi(z)
K(x,z)=ϕ(x)ϕ(z)
LDA
有关带类别的样本降维采用LDA的方式,相关内容已经有大佬总结过这里做一个搬运LDA