写在之前
时间充裕的话,可以从文末给出的参考链接中观看李正轩博士视频,本文是其讲课资料整理。
基本概念
对于给定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^Tlambda 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]
]
算法流程
- 数据归一化
- 求协方差矩阵C
- 求协方差矩阵C的前k个最大的特征向量
- 计算投影坐标
参考文献
[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