Principle component analysis (PCA) (主成分分析)

时间:2024-03-31 11:23:47

1.以一个二维数据为例说明PCA的目标

Principle component analysis (PCA) (主成分分析)

如上图所示,我们要在二维空间中找到一个维度(一个vector),将原数据集上的数据映射到这个vector上进行降维。如果没有施加限制,那么我们有无穷多种映射方法。
但是,我们知道,为了使数据集含有更多的信息,我们应该尽可能将降维后的数据区分开。以上图为例,如果选择Small variance的那条向量,很多数据点映射后挤在一起,那么我们就会损失许多有用信息。因此,PCA就是要找出一条vector,使数据降维后,有最大的方差。转化成数学公式就是:
V a r ( z 1 ) = 1 N ∑ z z ( z 1 − z 1 ‾ ) s . t . ∣ ∣ w 1 ∣ ∣ 2 = 1 Var(z_1)=\frac{1}{N}\sum_{z_z}(z_1-\overline{z_1})\\ s.t. ||w^1||_2=1 Var(z1)=N1zz(z1z1)s.t.w12=1

2. 高维情况

Principle component analysis (PCA) (主成分分析)

扩展1.中的情况,如果我们的原数据是一个很高维度的数据,我们要对其降维。设我们降维后的向量组成的矩阵为 W W W。对于第一维 w 1 w_1 w1,我们只需要求数据映射到本维度后方差最大即可。而对于后续维度,以 w 2 w_2 w2为例。除了要求数据映射到本维度后方差最大,还需限制本维度( w 2 w_2 w2)与之前的维度( w ! w_! w!)是正交(orthogonal)的。

解释:如果不施加限制,显然我们找到的第二个维度与第一个维度一定是相同的。同时,限制 w 2 w_2 w2 w 1 w_1 w1正交可以使降维后的各个维度之间是不相关的,能够降低后续模型过拟合的风险。

后续维度 w i w_i wi与上述分析相同。

那么,最后我们得到的降维后的维度矩阵 W W W,一定是一个正交阵(Orthogonal matrix)。

数学推导:

设映射到的第一个维度为 w 1 w_1 w1,数据 x x x映射到 w 1 w_1 w1后的数据集为 z 1 z_1 z1

z 1 = 1 N ∑ z 1 = 1 N ∑ w 1 ⋅ x = w 1 ⋅ 1 N ∑ x = w 1 ⋅ x ‾ z_1=\frac{1}{N}\sum z_1 = \frac{1}{N}\sum w^1 \cdot x=w^1 \cdot \frac{1}{N} \sum{x} =w^1 \cdot \overline{x} z1=N1z1=N1w1x=w1N1x=w1x

我们的目标是使 V a r ( z 1 ) Var(z_1) Var(z1)最大
V a r ( z 1 ) = 1 N ∑ z 1 ( z 1 − z 1 ‾ ) 2 = 1 N ∑ x ( w 1 ⋅ x − w 1 ⋅ z 1 ‾ ) 2 = 1 N ∑ ( w 1 ⋅ ( x − x ‾ ) ) 2 ① = 1 N ∑ ( w 1 ) T ( x − x ‾ ) ( x − x ‾ ) T w 1 = ( w 1 ) T 1 N ∑ ( x − x ‾ ) ( x − x ‾ ) T w 1 = ( w 1 ) T C o v ( x ) w 1 \begin{aligned} Var(z_1)&=\frac{1}{N} \sum_{z_1}(z_1-\overline{z_1})^2\\ &=\frac{1}{N}\sum_{x} (w^1 \cdot x - w^1 \cdot \overline{z_1})^2\\ &=\frac{1}{N}\sum (w^1 \cdot (x- \overline{x}))^2 ①\\ &=\frac{1}{N}\sum(w^1)^T(x-\overline{x})(x-\overline{x})^Tw^1\\ &=(w^1)^T\frac{1}{N}\sum(x-\overline{x})(x-\overline{x})^Tw^1\\ &=(w^1)^TCov(x)w^1 \end{aligned} Var(z1)=N1z1(z1z1)2=N1x(w1xw1z1)2=N1(w1(xx))2=N1(w1)T(xx)(xx)Tw1=(w1)TN1(xx)(xx)Tw1=(w1)TCov(x)w1
①: ( a ⋅ b ) = ( a T b ) 2 = a T b a T b = a T b ( a T b ) T = a T b b T a (a\cdot b)=(a^Tb)^2=a^Tba^Tb=a^Tb(a^Tb)^T=a^Tbb^Ta (ab)=(aTb)2=aTbaTb=aTb(aTb)T=aTbbTa

S = C o v ( x ) S=Cov(x) S=Cov(x)(协方差矩阵) 显然 S S S是一个实对称矩阵

那么我们的算法目标变为:
w 1 = max ⁡ w 1 ( w 1 ) T S w 1 s . t . ( w 1 ) T w 1 = 1 w_1=\max_{w_1} (w^1)^TSw^1\\ s.t. (w^1)^Tw^1=1 w1=w1max(w1)TSw1s.t.(w1)Tw1=1
只是一个优化问题,我们使用拉格朗日乘子法进行优化:

Principle component analysis (PCA) (主成分分析)

在优化的过程中我们可以发现, w 1 w^1 w1 S S S对应的一个特征向量, α \alpha α w 1 w^1 w1对应的特征值。

我们的优化目标变为最大化 α \alpha α,那么显而易见,我们应该选择此时最大的特征值 λ 1 \lambda_1 λ1,其对应的特征向量就是我们要找的目标向量 w 1 w_1 w1

同理我们求 w 2 w_2 w2同时对 w 2 w_2 w2施加与 w 1 w_1 w1正交的约束。

Principle component analysis (PCA) (主成分分析)

( w 1 ) T S w 2 = ( ( w 1 ) T S w 2 ) T = ( w 2 ) T S T w 1 = ( w 2 ) T S w 1 = λ 1 ( w 2 ) T w 1 = 0 (w^1)^TSw^2=((w^1)^TSw^2)^T=(w^2)^TS^Tw^1=(w^2)^TSw^1=\lambda_1(w^2)^Tw^1=0 (w1)TSw2=((w1)TSw2)T=(w2)TSTw1=(w2)TSw1=λ1(w2)Tw1=0

同时 ( w 2 ) T w 1 = 0 (w^2)^Tw^1=0 (w2)Tw1=0

因此:

Principle component analysis (PCA) (主成分分析)

即, β = 0 \beta=0 β=0

则:

Principle component analysis (PCA) (主成分分析)

w 3 , w 4 . . . w k w_3,w_4...w_k w3,w4...wk推导同理。

Principle component analysis (PCA) (主成分分析)

由上图推导可得,PCA最终降维得到的 z z z的协方差矩阵是一个对角阵,说明经过PCA后得到 的特征之间是没有相关性的。

3. 另一种观点的PCA

Principle component analysis (PCA) (主成分分析)

以MNIST识别手写数字为例,由上图都,每一个数字都可以看作是多个小的component( u i u^i ui)组成的。那么,我们就可以用一个权值向量 c = [ c 1   c 2   . . .   c K ] c=[c_1 \ c_2 \ ... \ c_K] c=[c1 c2 ... cK]来表示原图。

此时,相当于我们将原来图片的高维向量进行降维,使用 u = [ u 1   u 2   . . .   u K ] u=[u_1 \ u_2 \ ... \ u_K] u=[u1 u2 ... uK]来表示当前的特征。

那么我们的优化目标就变为:

Principle component analysis (PCA) (主成分分析)

数学上可以证明,最后优化出的 u = [ u 1   u 2   . . .   u K ] u=[u_1 \ u_2 \ ... \ u_K] u=[u1 u2 ... uK]与PCA得到的 w = [ w 1   w 2   . . .   w K ] w=[w_1 \ w_2 \ ... \ w_K] w=[w1 w2 ... wK]是同一个向量。

过程如下:

Principle component analysis (PCA) (主成分分析)

我们的目标是使右边相乘的矩阵与左边的矩阵 X X X越接近越好。

Principle component analysis (PCA) (主成分分析)

而我们知道,对矩阵 X X X使用奇异值分解(SVD)后得到的相乘矩阵是与A最接近的矩阵(相似程度取决于 K K K的选取)。如上图所示,我们把 Σ V \Sigma V ΣV看作上面的矩阵 C C C,而后进行优化,最后即可得到矩阵 U U U

4. 使用神经网络

PCA看起来像一个只有一个隐藏层(线性**函数)的神经网络。

Principle component analysis (PCA) (主成分分析)

不过需要注意的是,该神经网络解出的结果与PCA的结果是不同的。原因在于PCA要求 w i w_i wi之间是正交的,而该神经网络没有这个要求。

5. 应用例子

5.1 神奇宝贝

Principle component analysis (PCA) (主成分分析)

我们有800个宝可梦的样本,每个样本有6个feature。对其做特征值分解后,我们可以发现,前四个特征值占的比例较大。则我们可以认为前四个特征值对应的维度已经足够用来区分不同的宝可梦。

那么我们分别将不同样本投影到着四个维度:

Principle component analysis (PCA) (主成分分析)

投影到这四个维度后,原来不同的特征会有不同的投影值,其中数值较大的说明本维度的影响较大。

5.2 MNIST

Principle component analysis (PCA) (主成分分析)

我们同样进行特征值分解后,取出影响最大的30个components。对其可视化后得到上图。

我们发现,PCA得到的component不是我们想象中的一个个小的片段。每一个component都有完整的轮廓。

这是因为, w i w^i wi的系数 a i a_i ai可以取负值。举例来说,我们要组成一个数字9,那么我们可以先找到一个8,然后把多余的部分再删除掉。

6. PCA的缺点

  1. PCA算法是线性的,只能进行线性变换导致其对数据的变化能力较弱,可能使降维后的数据无法区分:

Principle component analysis (PCA) (主成分分析)

  1. PCA是unpervised的,其只考虑了数据之间分布的方差。在某些问题上可能效果不是很好:

Principle component analysis (PCA) (主成分分析)

对于上图中下面部分的图,可以使用有监督的LDA进行划分。




参考资料:李宏毅教授机器学习PPT