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]
\]
算法流程
- 数据归一化
- 求协方差矩阵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
posted on 2017-05-10 15:48 hainingwyx 阅读(1390) 评论(0) 编辑 收藏 举报