主成分分析(PCA)
定义
主成分分析(Principal Component Analysis)也称为主分量分析,主要是利用降维的思想,把多指标转化为少数几个综合指标(即主成分),其中每一个主成分都能够反映原始变量的大部分信息,并且所含信息互不重复。
优点:降低数据的复杂性,识别最重要的多个特征。
缺点:不一定需要,且可能损失有用信息。
适用数据类型:数值型数据。
求解
PCA由所选的解码函数所决定。具体地,为了简化解码器,使用矩阵乘法将编码映射回Rn,即g(c) = Dc,其中D ∈Rn×l 是定义解码的矩阵。 首先,我们根据一个输入x得到一个最优编码c*。一种方法是最小化原始输入向量x和重构向量 g(c*) 之间的距离。可以使用范数来衡量他们之间的距离。在PCA算法中,我们使用L2范数:c* = arg minc ||x - g(c)||2 ,我们可以用平方L2范数替代L2范数,因为两者在相同的值c上取得最小值(L2 范数是非负的,并且平方运算在非负值上是单调递增的。):
c* = arg minc ||x - g(c)||22 = (x - g(c))T(x - g(c))=xTx - xT g(c) - g(c)Tx + g(c)T g(c) (1.1)
标量 g(c)Tx 的转置等于本身。除去上式中不依赖与c的项,得到如下优化目标:
c* = arg minc - 2 xT g(c) + g(c)T g(c) (1.2)
将g(c) = Dc代入上式,(矩阵D的正交性和单位范数约束)得
c* = arg minc - 2 xT Dc + cT DTDc = arg minc - 2 xT Dc + cT Ilc = arg minc - 2 xT Dc + cT c (1.3)
通过向量微积分求解最优化问题:
▽c( - 2 xT Dc + cT c ) = 0
- 2 DT x + 2 c = 0
解得 c = DT x
最优编码 x只需要一个矩阵-向量乘法操作。为了编码向量,可使用编码函数:f(x) = DT x,进一步使用矩阵乘法,可以定义PCA重构操作:r(x) = g(f(x)) = DDT x
给定一组数据:x = {x1, x2, ..., xn}
求出平均值μ,将x中心化得:{z1, z2, ..., zn} = {x1-μ, x2-μ, ..., xn-μ}
中心化后的数据在第一主轴u1方向上分布散的最开,即u1方向上的投影的绝对值之和最大(也可以说方差最大),计算投影的方法就是将z和u1做内积,因为只需求的u1方向,故设u1是单位向量。最大化:1/n∑i=1n|zi • u1|,即最大化:1/n∑i=1n|zi • u1|2 = 1/n∑i=1n(zi • u1)2
两个向量做内积可以转化成矩阵相乘:zi • u1 =ziT• u1
所以目标函数可以表示为:
1/n∑i=1n(ziT•u1)2 = 1/n∑i=1n(ziT•u1)T(ziT•u1) = 1/n∑i=1n u1T •zi ziT•u1
由于u1和i无关,故原式可化为: 1/n ×u1T(∑i=1n zi ziT)u1 其中,Z = [z1, z2, ..., zn ] , ZT = [z1T, z2 T, ..., zn T ]T
最后目标函数化为:1/n ×u1TZZ T u1
证明XX T 是半正定的对称阵,以及求解目标函数最大值和u1方向后续给出。