Principal Component Analysis 主元分析

Principal Compoent Analysis(PCA)是在data mining中非常重要的一个话题。本篇中,我们讨论PCA。所选材料为CMU的一个关于PCA的tutorial,http://www.stat.cmu.edu/~cshalizi/490/pca/pca-handout.pdf

在上一篇中提到了PCA,但是没有进行深入的推导。可能从subspace的角度来推导PCA比较复杂,只从variance出发,可能证明步骤会更简单。

 

PCA是一个通过利用变量之间的关系、在尽可能少的损失信息的情况下、将高维数据表示为更利于处理的低维数据的技术方法。PCA是一种最简单同时也最稳定的降维方法dimensionality reduction。下面我们介绍PCA的数学理论。

我们想将p-维数据映射到q-维的子空间来进行表示。在这个q-维子空间中,q个方向,被我们成为principal components。

演绎PCA的方式有很多种,但最简单的方式还是从variance入手。我们希望找到一种映射projection,使得数据的variance最大。我们希望第一个principal component就是variance最大的那个direction,第二个PC是所有正交于第一个PC的方向中令variance最大的。第k个PC是所有正交于前k-1个PC的方向中令variance最大的。我们一共希望找到p个这样的PC(可见p是给定的)。为什么要使得variance最大?这在做clustering方面会有明显的优势,因为大的variance意味着数据分得更开,更加利于辨别数据之间的差异。会有一些典型的例子,例如两个二维高斯分布,我们得到它们混合的数据后希望进行clustering,如果在一个不好的方向进行映射,那么两个高斯分布的中心很可能非常接近,但如果在一个好的方向上投影,那么我们只需对投影得到的一维数据进行clustering,就能很好地对原数据进行clustering。

如果我们不希望通过最大化variance的角度进行论述的话,还有一种角度是寻找让原向量和投影到PC上的向量的平均距离最小的投影方式。(其实就是前一篇的subspace model。)但实际上两者是一样的。其实从我个人的角度而言,我觉得linear subspace model会更加自然和漂亮。只是上一篇的原作者没有能够进行一个完整的证明。我也没有找到一个好的证明。如果找到,我会把上篇中的证明改掉。

 

在整个讨论中,假设数据已经被“centered”,就是说减掉了mean,被移到中间了。所以每一个维度上的mean为0.

 

1. 使映射余量最小minimizing projection residuals

我们首先看1维映射,即将p维数据集映射到一条线上。这条线的单位向量为 w,那么对于数据 x在这条线上的映射即为 xi·w ,为一个数值。这个值也就是原数据的投影的距离。这个投影在p维中还原即为 (xi·w)w 。投影的mean为0,因为xi的mean为0:

1/n Σi (xi·w)w = ((1/n Σi xi)·w)w

还原向量和原向量之间的误差为映射余量residual。对于任意一个向量xi,我们有

||x- (w·xi)w ||2 = ||xi||2 - 2 (w·xi)(w·xi) + ||w||2 = ||xi||2 - 2 (w·xi)+ 1

将所有的residual加起来,我们有

RSS(w) = Σ(||xi||- 2 (w·xi)+ 1) = (n + Σi ||xi||2) - 2 Σi (w·xi)2 

上式中的第一项与 w 无关。所以为了使RSS最小,我们只需要考虑让第二项更大,即我们需要最大化

Σi (w·xi)2

同样的,由于 n 和 w 无关,所以我们想要最大化

1/n Σi (w·xi)2,即为(w·xi)2的sample mean

1/n Σi (w·xi)= (1/n Σi xi·w)2 + Var[w·xi]

因为投影的mean为0,所以让residual最小化实际上也就是让variance最大化。(印证了前一篇的说法。虽然此证明中仅仅假设投影到一个向量上,但多个向量的计算也是类似,mean仍然是0,交叉项最后都消除了。)

 

2. 令方差最大化 Maximizing Variance

假设我们有n个数据,可以构成一个n*p的矩阵 X, 那么投影即为 Xw,为一个n*1 的矩阵。

那么variance即为

σw2=1/n Σi(xi·w)2= 1/n (Xw)T(Xw) = 1/n wTXTXw = wT (XTX/n) w = wTVw

我们希望通过选取单位向量 w 来使得σw2最大。注意,此时的单位向量为对w的限制,所以问题为限制条件下的目标函数最大化问题。

我们对f(w) 进行最大化(即为 wTVw),等号限制 g(w) = c (此处 g(w) = wTw,c = 1),两边同时减去c,g(w)-c = 0。为了解这个最大化问题,我们引入拉格朗日算子λ,这样我们来考虑

L(w,λ) = f(w) - λ(g(w)-c)

这样,将等式对两个变量分别微分。

∂L/∂w = 0 = ∂f/∂w - λ ∂g/∂w

∂L/∂λ = 0 = -g(w) + c

此时 λ 用来引入限制条件。如果 λ = 0,那么方程将没有限制,如果 λ 越大,那么方程中带来的限制就越多。

对于投影问题,我们有

u = wTVw - λ(wTw - 1)

∂u/∂w = 2Vw - 2λw = 0

Vw = λw

我们可以看到,我们需要的单位向量 w 即为矩阵 V 的eigenvector,同时这个让方差最大的 w 对应的是最大的eigenvalue λ。得到这个结论后,我们只需要找到eigenvalue 和eigenvector即可,这些早已经在矩阵理论中发展得非常好了。

我们知道 V 是一个p*p的矩阵,所以有p个不同的eigenvector。V是协方差矩阵covariance matrix,所以是对称的,同时它的eigenvector都是相互正交的。同时由于V是covariance矩阵,所以是positive matrix,即对任意x,都有 xVx > 0,所以V的所有eigenvalue都 >= 0。

V的eigenvector就是数据的PC。满足前面说的PC的条件。

 

3. 讨论。

如果数据真的是q维,那么会得到q个正的eigenvalue和p-q个为0的eigenvalue。数据接近q维,那么p-q个eigenvalue接近于0。

如果我们挑选前q个PC,我们可以定义一个投影operator Pq,投影即为XPq。那么投影余量即为X-XPq。如果数据真的是q维,那么residual即为0。如果数据接近q维,那么residual会非常小。我们可以定义一个R2来表示PC的variance和原数据的variance的比值,即

R2=(Σiq λi)/(Σip λi)

如何选取R,视data情况而定。一般合适选取80%。

 

4. 应用。

这个应用是在准备plsa的时候发现的,链接如下 http://www.engr.uvic.ca/~seng474/svd.pdf

是利用PCA来进行文章的latent semantic analysis。很有意思。

特别是关于如何得到词汇和文章在subspace中的位置。

 

PCA广泛应用与各个领域。为降维的主要手段之一。

下一篇将讨论PCA的一个统计上的推导,但它带来的好处确不仅仅限于统计上。给予了这个方法更合理的理论解释,也带来了新的应用。这就是probabilistic latent semantic analysis.

下一篇结束后,想继续讨论概率模型,包括一系列mixture model 和求解方法EM algorithm。

在这之后,希望能够讨论数据间的correlation,给予一些统计上的解释,讨论p-value。同时,还有decision tree中应用到的mutual information来进行correlation的方法,都很有意思。

希望能够坚持下去,再接再厉!

posted @ 2012-08-25 17:52  YYNicholas  阅读(584)  评论(0编辑  收藏  举报