分享

主成分分析(Principal Component Analysis)

 心不留意外尘 2016-04-28

http://blog.csdn.net/lin360580306/article/details/51255285

2016.04

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

  • 方差最大化
  • PCA的代码实现

方差最大化

考虑一个观察的数据集{xn},n=1,...,N,并且xn是一个D维的变量。当我们从方差最大化的角度去考虑PCA的时候,我们的目标其实是要将原始数据投影到一个低维(维数M<D)空间,并且要最大化投影后的数据的方差。为了讨论的简便,我们假设M是给定的。
首先我们考虑M=1的情况。我们用一个D维的单位向量u1来表示低维空间的方向。从原始数据到低维空间的投影可以由uT1xn来获得。所以低维空间上数据的均值为uT1xˉ,其中xˉ=1NNn=1xn,方差为1NNn=1uT1xn?uT1xˉ2=uT1Su1。这里的S=1NNn=1(xn?xˉ)(xn?xˉ)T是原始数据的协方差矩阵。
我们现在只需要通过改变u1来最大化uT1Su1就解决问题了,这里很容易看出来,如果u1的模没有约束的话,这个最大化问题是没有解的。由此也可以说明前面假设u1为单位向量是有利于问题的讨论且不失一般性的。为了求解这个带约束的优化问题,我们引入拉格朗日乘子λ1,问题可以转化为最大化uT1Su1+λ11?uT1u1。我们可以利用求导数并令导数为0得到问题的可行解是Su1=λ1u1,这说明u1应当是S的特征向量。我们通过简单变换可以得到uT1Su1=λ1。由此我们可以得出结论,如果想要最大化方差,就需要u1是最原始数据协方差矩阵的大特征值所对应的特征向量。
对于M>1的情况,我们可以考虑是在M=1的情况下每次给低维空间添加一个与之前已有的方向向量正交的新的方向向量并且它可以最大化低维数据的方差。
所以对于一般的M,这个问题的结果应当是根据原始数据的协方差矩阵S的特征值从大到小选择对应的特征向量组成低维向量空间的方向向量。

pca的代码实现

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

[coeff,score,latent,tsquared,explained]= pca(X) (1)
[COEFF,SCORE,latent,tsquare] = princomp(X) (2)
  • 1
  • 2
  • 1
  • 2

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多