PCA 推导

写在之前

时间充裕的话,可以从文末给出的参考链接中观看李正轩博士视频,本文是其讲课资料整理。

基本概念

对于给定0均值的训练样本\({x_1, x_2, ...x_n} \in R ^d\), PCA的目的就是在空间\(R^d\)中,找p(p<d)个向量组成的集合,使其包含训练样本的最大方差。

可以证明:向量\(x_j\)在单位向量\(v\)的投影坐标为\(<x_j , v> = v^T x_j\)

投影方差为;

\[\sigma ^2 = \frac{1}{N} \sum _{i=1}^{N}(v^Tx_i- 0)^2 =\frac{1}{N} \sum _{i=1}^{N}(v^Tx_i)(v^Tx_i)^T \\= \frac{1}{N} \sum _{i=1}^{N}v^Tx_ix_i^Tv = v^T C v \]

其中$C = \frac{1}{N} \sum _{i= 1} ^N x_ix_i^T $

为使投影方差最大:

\[v= argmax_{v \in R^d ,||v||=1} (v^TCv) \]

使用Lagrangian求:

\[f(v, \lambda ) = v^T Cv - \lambda(v^Tv-1) \]

\[\frac {\partial f}{\partial v} = 2Cv -2 \lambda v \Rightarrow Cv = \lambda v \]

\[\frac {\partial f}{\partial \lambda} = v^Tv -1 \Rightarrow v^Tv =1 \]

\[v= argmax(v^TCv) = argmax(v^T\lambda v)= argmax(\lambda) \]

找到最大的特征值,对应一个方向下最大的方差;最大的两个特征值,就是两个方向下最大的方差。

单个数据在k个特征向量的投影坐标:

\[V_k^T x_j =[v_1, v_2, ...v_k]^T x_j \]

多个数据在k个特征向量的投影坐标:

\[V_k^T X^T =[v_1, v_2, ...v_k]^T [x_1, ...x_n] \]

算法流程

  1. 数据归一化
  2. 求协方差矩阵C
  3. 求协方差矩阵C的前k个最大的特征向量
  4. 计算投影坐标

参考文献

[1]https://www.youtube.com/watch?v=G2NRnh7W4NQ&index=2&list=PLt0SBi1p7xrRKE2us8doqryRou6eDYEOy
[2]http://www.iis.ee.ic.ac.uk/ComputerVision/docs/lectures/lec1314.pdf

posted on 2017-05-10 15:48  hainingwyx  阅读(1390)  评论(0编辑  收藏  举报

导航