PCA(协方差矩阵和奇异值分解两种方法求特征值特征向量)2015-12-3010:431157人阅读评论(0)收藏举报分类:模式识别(1)1.问题描述在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在大多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。2.过程主成分分析法是一种数据转换的技术,当我们对一个物体进行衡量时,我们将其特征用向量(a1,a2,a3,...an)进行表示,每一维都有其对应的variance(表示在其均值附近离散的程度);其所有维的variance之和,我们叫做总的variance;我们对物体进行衡量时,往往其特征值之间是correlated的,比如我们测量飞行员时,有两个指标一个是飞行技术(x1),另一个是对飞行的喜好程度(x2),这两者之间是有关联的,即correlated的。我们进行PCA(主成分分析时),我们并没有改变维数,但是我们却做了如下变换,设新的特征为(x1,x2,x3...,xn);其中1)x1的variance占总的variance比重最大;2)除去x1,x2的variance占剩下的variance比重最大;....依次类推;最后,我们转换之后得到的(x1,x2,...xn)之间都是incorrelated,我们做PCA时,仅取(x1,x2,....xk),来表示我们测量的物体,其中,k要小于n。主成分的贡献率就是某主成分的方差在全部方差中的比值。这个值越大,表明该主成分综合X1,X2,…,XP信息的能力越强。如果前k个主成分的贡献率达到85%,表明取前k个主成分基本包含了全部测量指标所具有的信息,这样既减少了变量的个数又方便于对实际问题的分析和研究。注意,当(a1,a2,a3,...an)之间都是incorrelated时,我们就没有做PCA的必要了数据点在上图所示的方向上进行投影后,数据仍然有着很大的variance,但在下图所示的方向上,投影后的数据的variance就很小。我们所需要做的就是找到这一系列的向量,使得数据在其上的投影有着较大的variance。3.数学描述为了能够找到这一系列的向量,我们对数据进行预处理注意svd函数只适合行数大于列数的矩阵,如果行数小于列数,可对其转置矩阵做SVD分解A=U*S*V';而(A'*A)*V=(U*S*V')'*(U*S*V')*V=V*S'*U'*(U*S*V')*V=V*S'*(U'*U)*S*(V'*V)=V*(S'*S)*E*E(E是单位矩阵)=(S的平方)*V(S在对角线上才有值,其余全为0)....(2)对照(1)(2)式我们可以看到,A的SVD分解出来的V就是(A'*A)这个矩阵的特征向量!所以PCA算法中我们不需要计算扩散矩阵(A'*A),对A进行SVD分解,得到V,取V的前k个columns即可。1)Alcohol2)Malicacid3)Ash4)Alcalinityofash5)Magnesium6)Totalphenols7)Flavanoids8)Nonflavanoidphenols9)Proanthocyanins10)Colorintensity11)Hue12)OD280/OD315ofdilutedwines13)Proline样本数为130,在matlab下按照以上步骤,进行PCA,得到的特征值如下:选取前k个特征值使得前k个主成分的贡献率达到85%,计算得到的结果为k=1,其对应的特征向量为u=令X=X*u即可得到新的X,其中X原来维数为130×13,进行PCA后的维数为130×1。