主成分分析PCA(Principal Component Analysis),作用是:
- 聚类 Clustering:把复杂的多维数据点,简化成少量数据点,易于分簇
- 降维:降低高维数据,简化计算,达到数据降维,压缩,降噪的目的
PCA 的目的就是找到一个低维映射空间,使得数据映射后方差最大。
理论实现:
首先对样本空间为
d 维全部的数据中心化,使得均值为 0,即将所有的样本与样本均值相减获得新的样本:
xi=xi−μ
也就是说转换后:
N1i=1∑Nxi=0d
知识补充:
求向量 u 在向量 v 上的投影:
那么根据上图可以列出以下公式
u′dcosθ=∣v∣dv=∣u∣cosθ=∣u∣∣v∣uT⋅v
所以可以解出向量
u 在向量
v 上的投影
u′ 为:
u′=∣v∣2uT⋅vv
那么将向量
v 所在直线视为一维空间,那么向量
u 映射在该维度的表示为
uv=∣v∣uT⋅v=∣v∣vT⋅u
也就是说映射后的长度(有方向)成为向量
u 映射在该维度的表示。
那么现在求取映射后空间,先考虑映射到一维空间,也就是说向一个向量做投影,假如现在向向量
u1 做投影。
那么由于一开始的中心化操作,使得映射后均值仍然为零:
n1i=1∑n∣u1∣u1Txi=∣u1∣u1Ti=1∑nn1xi=0
那么映射后的方差有:
n1i=1∑n(∣u1∣u1Txi−0)2=n1i=1∑n∣u1∣u1TxixiT∣u1∣u1=∣u1∣u1Tn1i=1∑nxixiT∣u1∣u1=∣u1∣u1TS∣u1∣u1
其中
S 为数据集的协方差矩阵:
S=n1i,j=1∑nxiT⋅xj
现在想要映射在该一维空间后数据的方差最大,那么该优化问题为:
u1max s.t.u1T⋅S⋅u1∥u1∥22=1
其中为了方便,将映射向量的长度定为一作为约束条件。为了去掉这一约束条件,使用拉格朗日乘数法转换该最优化问题:
u1max{u1T⋅S⋅u1+λ(1−∥u1∥22)}
对于凸优化问题,在最优点出导数为零,所以最优解的必要条件为:
2u1⋅S+λ(−2u1)=0
也就是说:
Su1=λu1
可以看出
u1 是协方差矩阵
S 的一个特征向量,那么现在代入到原最优化问题:
u1max s.t.u1T⋅λ⋅u1∥u1∥22=1
可以进一步转换为:
u1max s.t.λ∥u1∥22=1
也就是说在约束条件下希望该特征值最大。那么推广到多维空间映射,仍然适用。那么最佳的多维空间则由 Top
d′ 特征值(最大的
d′ 个特征值)所对应的特征向量构成。
那么PCA的具体实现流程 :
1. let x=N1n=1∑Nxn, and let xn←xn−x,XT=[x1,⋯,xN] 2. calculate d~ top eigenvectors w1,w2,…,wd~ of XTX 3. return feature transform Φ(x)=W(x−x)