您的位置:首页 > 其它

主成分分析(Principal Component Analysis)

2016-04-27 20:41 260 查看

主成分分析(Principal Component Analysis)

主成分分析(PCA)是一个被广泛用于降维、有损数据压缩、特征提取和数据可视化的技术。PCA有两种常用的定义,分别是从最大化投影后数据的方差和最小化投影后数据与原始数据之间的误差两个角度考虑的。两个定义最终的结果是一致的,我们从方差最大化的角度具体讨论一下PCA。

方差最大化

PCA的代码实现

方差最大化

考虑一个观察的数据集{xn},n=1,...,N\{x_n\},n=1,...,N,并且xnx_n是一个DD维的变量。当我们从方差最大化的角度去考虑PCA的时候,我们的目标其实是要将原始数据投影到一个低维(维数M<DM)空间,并且要最大化投影后的数据的方差。为了讨论的简便,我们假设MM是给定的。

首先我们考虑M=1M=1的情况。我们用一个DD维的单位向量u1u_1来表示低维空间的方向。从原始数据到低维空间的投影可以由uT1xnu_1^Tx_n来获得。所以低维空间上数据的均值为uT1x¯u_1^T\overline{x},其中x¯=1N∑Nn=1xn\overline{x}=\frac{1}{N}\sum_{n=1}^{N}x_n,方差为1N∑Nn=1{uT1xn−uT1x¯}2=uT1Su1\frac{1}{N}\sum_{n=1}^{N}{ u_1^Tx_n-u_1^T\overline{x}}^2=u_1^TSu_1。这里的S=1N∑Nn=1(xn−x¯)(xn−x¯)TS=\frac{1}{N}\sum_{n=1}^{N}(x_n-\overline{x})(x_n-\overline{x})^T是原始数据的协方差矩阵。

我们现在只需要通过改变u1u_1来最大化uT1Su1u_1^TSu_1就解决问题了,这里很容易看出来,如果u1u_1的模没有约束的话,这个最大化问题是没有解的。由此也可以说明前面假设u1u_1为单位向量是有利于问题的讨论且不失一般性的。为了求解这个带约束的优化问题,我们引入拉格朗日乘子λ1\lambda_1,问题可以转化为最大化uT1Su1+λ1(1−uT1u1)u_1^TSu_1+\lambda_1(1-u_1^Tu_1)。我们可以利用求导数并令导数为0得到问题的可行解是Su1=λ1u1Su_1=\lambda_1u_1,这说明u1u_1应当是SS的特征向量。我们通过简单变换可以得到uT1Su1=λ1u_1^TSu_1=\lambda_1。由此我们可以得出结论,如果想要最大化方差,就需要u1u_1是最原始数据协方差矩阵的大特征值所对应的特征向量。

对于M>1M>1的情况,我们可以考虑是在M=1M=1的情况下每次给低维空间添加一个与之前已有的方向向量正交的新的方向向量并且它可以最大化低维数据的方差。

所以对于一般的MM,这个问题的结果应当是根据原始数据的协方差矩阵SS的特征值从大到小选择对应的特征向量组成低维向量空间的方向向量。

pca的代码实现

matlab已经实现了pca,有以下两个函数可以调用:

[coeff,score,latent,tsquared,explained]= pca(X) (1)
[COEFF,SCORE,latent,tsquare] = princomp(X) (2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: