PCA算法

1.正交投影

向量$z$投影在$x$向量上的投影向量为$p$,则$z-p$垂直于$x$,有$<z-p, x> = 0$. 

令$p=kx$, 根据内积为0,有$x^T(z-kx)=0$, 

故得到$ k = \frac{x^Tz}{x^Tx}$,$p=kx = \frac{x^Tz x}{x^Tx} = \frac{xx^Tz}{x^Tx}$.

一般称$P=\frac{xx^T}{x^Tx}$为投影矩阵。 

2.拓展到高维,比如三维空间。 

对于将三维空间中向量$x$投影到一个平面上,设平面的两个基分为$a_1,a_2$,矩阵$A=[a_1,a_2]$, 容易得到投影后的向量$p=c_1 a_1 + c_2 a_2 = A c$.

其中$c=\begin{bmatrix} c_1\\ c_2 \end{bmatrix}$。

为了求投影,就是为了求$c$。容易有$<x-Ac, a1> = 0, <x-Ac,a2>=0$,有:

$\begin{bmatrix} {a_1}^T\\ {a_2}^T  \end{bmatrix} (x-Ac) = \begin{bmatrix} 0\\ 0 \end{bmatrix}$,即 $A^T (x-Ac) = 0$:

有, $A^TAc = A^Tx\\ c= (A^TA)^{-1} A^T x$ 。

故$x$ 在平面上的投影为$p = Ac = A(A^TA)^{-1} A^T x$,一般称 $P=A(A^TA)^{-1} A^T $为投影矩阵。 

当平面的两个基$a_1,a_2$标准正交时,则有投影为$p = Ac = AA^T x$,投影矩阵为$P=  AA^T$。

3.讲完投影,开始讲PCA算法。PCA是一种降维算法,目的是将一个高维的向量$x\in R^D$用更低维的向量$\hat{x} \in R^M$来表示。  

3.1假设估计的$\hat{x} = \sum_{j=1}^{M} \beta_{jn} b_{j}$,

其中$b_j, j= 1.,..,M$  为低维空间中的一组标准正交基.

$J = \frac{1}{N} \sum_{n=1}^N \|x-\hat{x} \| ^2 $ ,其中$N$为样本个数。 

3.2为了寻找合适的$\beta_{jn}$,使得误差$J$最小, 需要对$J$求导数。 

$\frac{\partial{J}}{\partial{\hat{x}}} = - \frac{2}{N} (x_n - \hat{x_n})^T$

$ \frac{\partial{J}}{ \partial{\beta_{jn}}} = \frac{\partial{J}}{\partial{\hat{x_n}}}  \frac{\partial{\hat{x_n}}}{\partial{\beta_{jn}}}$,

其中$\frac{\hat{x_n}}{\partial{\beta_{in}}} = b_j, j = 1, ..., M$。

当满足$\frac{J}{\beta_{jn}} = 0$时,我们可以认为找到了最合适的基坐标,或者说是基稀疏,使得误差$J$最小。

即$\frac{\partial{J}}{\partial{\beta_{jn}}} = - \frac{2}{N} (x_n-\hat{x_n})^T b_j $

 $=-\frac{2}{N} (x_n - \sum_{i=1}^M \beta_{in}b_i )^T b_j $

 $=-\frac{2}{N}({x_n}^T b_j - \beta_{jn}) = 0$

故我们得到$\beta_{jn} = {x_n}^T b_j $,即最优的$\beta_{jn}$是$x_n$在$b_j$上的投影长度。 

3.3假设我们主成分空间的基为$b_1...b_M$,

可以得到:

$x_n = \sum_{j=1}^{M}\beta_{jn}b_j$

$=\sum_{j=1}^M {x_n}^T b_j b_j$

$=\sum_{j=1}^{M}b_j {b_j}^T x_n $

$=(\sum_{j=1}^{M})b_j {b_j}^T)x_n$

其中$(\sum_{j=1}^{M})b_j {b_j}^T)$为投影矩阵。 

原来的数据$x_n = \sum_{j=1}^{M} (b_j {b_j}^T ) x_n + \sum_{j=M+1}^{D}b_j {b_j}^Tx_n$

故有$(x_n - \hat{x}) = \sum_{j=M+1}^D b_j {b_j}^T x_n$

$J= \sum_{j=M+1}^{D}b_j {b_j}^Tx_n = \sum_{j=M+1}{D} {b_j}^T x_n b_j$  

重新写误差函数$J$:

$J = \frac{1}{N} \sum_{n=1}^N {\| x-\hat{x}\|} ^2 $

$ = \frac{1}{N} \sum_{n=1}^N {\|\sum_{j=M+1}^D ({b_j}^T x_n)b_j }^2$ 

$ = \frac{1}{N} \sum_{n=1}^N \sum_{j=M+1}^D (b_j ^Tx_n) ^2$ 

$ = \frac{1}{N} \sum_n \sum_j  b_j^T x_n x_n^T b_j$ 

$= \sum_{j=M+1}{D}b_j^T(\frac{1}{N} \sum_{n=1}^Nx_nx_n^T ) b_j $ 

$= \sum_{j=M+1}^D b_j^T S b_j$

其中$\frac{1}{N} \sum_{n=1}^Nx_nx_n^T$为数据协方差矩阵。

3.4 我们先从二维空间来推导PCA,假设主成分空间的基向量为$b_1$,其正交补空间为$b_2$,假设基向量都是标准正交。

$J = b_2^T S b_2, b_2^T b_2 =1$ 

构造拉格朗日乘子:

$L= b_2^TSb_2+\lambda(1-b_2^Tb_2)$ ,对$\lambda,b_2$求导数:

$\frac{\partial{L}}{\partial{\lambda}} = 1 - b_2^Tb_2 = 0$

$\frac{\partial{L}}{\partial{b_2}} = 2b_2^TS - 2\lambda b_2^T = 0$

我们得到$Sb_2 = \lambda b_2$,也就说,最佳正交补空间基为S矩阵的特征值$\lambda$对应的特征向量。

$J = b_2^TSb_2 = b_2^T \lambda b_2 = \lambda$,

当缩小$J$即是缩小对应的特征值,也就是说主成分空间的基对应的是特征值大的特征向量。 

故拓展到$D$维的时候,有 $J = \sum_{j=M+1}^D\lambda_j, j=M+1, ...,D$

$J = \sum_{j=M+1}^Db_j^T Sb_j = \sum_{j=M+1}^D \lambda_j$

4.总结

综上所述,我们求得的主成分空间为对应于特征值大的特征向量,设

$B = [b_1,b_2...,b_M]$为主成分空间基组成的矩阵,我们最后求得的$\hat{x}$为投影于此主成分空间的投影向量。

有$\hat{x} = B B^Tx$。

 

posted @ 2018-12-19 10:45  卷积  阅读(574)  评论(0编辑  收藏  举报