文章由两部分构成,第一部分主要讲解PCA算法的步骤,第二部分讲解PCA算法的原理。
那么首先进入第一部分
--PCA算法的步骤
① 样本矩阵X的构成
假设待观察变量有M个,其实相当于一个数据在M维各维度上的坐标,我们的目标是在保证比较数据之间相似性不失真的前提下,将描述数据的维度尽量减小至L维(L<M)。
样本矩阵X在这里用x1,x2,...,xN共N个数据(这些数据都是以列向量的形式出现)来表示,那么X=[x1 x2 ... xN]MxN显而易见。
② 计算样本X均值
计算第m维(m=1,2,...,M)的均值如下:
③ 计算观察值与均值的偏差
在每一维上,用当前值X[m,n]减去u[m],用矩阵运算表示如下:
明显,h是一行向量,u是一列向量。
④ 计算协方差矩阵
根据协方差矩阵的计算定义wikihttp://en.wikipedia.org/wiki/Covariance_matrix
我们认为bi代表B的第i行,那么由协方差矩阵
推知
<>表示向量的内积,也就是每一项的积之和。
⑤ 计算协方差矩阵C的特征值和特征向量
若XA=aA,其中A为一列向量,a为一实数。那么a就被称为矩阵X的特征值,而A则是特征值a对应的特征向量。
顺便扯一下,在matlab里面,求解上述A以及a,使用eig函数。如[D,V] = eig(C),那么D就是n个列特征向量,而V是对角矩阵,对角线上的元素就是特征值。
⑥ 排序
将特征值按从大到小的顺序排列,并根据特征值调整特征向量的排布。
D'=sort(D);V'=sort(V);
⑦ 计算总能量并选取其中的较大值
若V'为C的对角阵,那么总能量为对角线所有特征值之和S。
由于在步骤⑥里面已对V进行了重新排序,所以当v'前几个特征值之和大于等于S的90%时,可以认为这几个特征值可以用来"表征"当前矩阵。
假设这样的特征值有L个。
⑧ 计算基向量矩阵W
实际上,W是V矩阵的前L列,所以W的大小就是 MxL 。
⑨ 计算z-分数(这一步可选可不选)
Z[i,j]=B[i,j]/sqrt(D[i,i])
⑩ 计算降维后的新样本矩阵
W*表示W的转置的共轭矩阵,大小为 LxM , 而Z的大小为 MxN , 所以Y的大小为 LxN , 即降维为 N 个 L 维向量。
现在进入第二部分
--PCA算法的原理
首先让我们来了解一下特征值和特征向量的几何意义
根据上面步骤⑤的说法,很明显的发现一个特定的变换,它的特征向量是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已(再想想特征向量的原始定义Ax=cx, cx是方阵A对向量x进行变换后的结果,但显然cx和x的方向相同)。
一个变换(矩阵)可由它的所有特征向量完全表示,而每一个向量所对应的特征值,就代表了矩阵在这一向量上的贡献率——说的通俗一点就是能量(power)。
请看,当x=c1·x1+c2·x2时,而x1和x2均为矩阵A的特征向量(λ1和λ2分别为他们的特征值),那么Ax=c1·λ1·x1+c2·λ2·x2 ,只不过是在两基方向上的投影长度发生了变化。
我们知道,一个变换可由一个矩阵乘法表示,那么一个空间坐标系也可视作一个矩阵,而这个坐标系就可由这个矩阵的所有特征向量表示,用图来表示的话,可以想象就是一个空间张开的各个坐标角度,这一组向量可以完全表示一个矩阵表示的空间的“特征”,而他们的特征值就表示了各个角度上的能量(可以想象成从各个角度上伸出的长短,越长的轴就越可以代表这个空间,它的“特征”就越强,或者说显性,而短轴自然就成了隐性特征),因此,通过特征向量/值可以完全描述某一几何空间这一特点,使得特征向量与特征值在几何(特别是空间几何)及其应用中得以发挥。
假设2x2矩阵的两个特征向量如上图红色虚线和绿色线所示,那么当椭圆的长轴远大于短轴时,可以将2维的点降维成一维,及当前向量在长轴上的投影值。
大家可以看看这篇blog,写的蛮不错的。http://blog.csdn.net/hexbina/article/details/7525850
再举一个例子,如果大家再引入一个M维的向量p和已经降维过后的向量q比较的话,需要先减去②里面每一维的均值,然后除以每一维的特征值的平方根,再乘以W*就OK了。
用公式表示为:
转载请注明blue_lghttp://www.cnblogs.com/blue-lg/archive/2012/07/23/2604995.html
分享到:
相关推荐
pca降维算法,试验已经成功,将39维数据降到12维
文中借鉴经典凸技术聚类算法中的全局线性降维算法PCA与LDA聚类算法思想,提出了一种改进型的PCA降维算法L-PCA,该算法在保证原有样本协方差结构不变的前提下,获取变换矩阵中最重要的主分量进行赋权,通过调节类内与类间...
PCA降维算法讲义ppt slides,pca降维算法,课程资源,ppt
本资源是机器学习常见方法LDA(线性判别分析)的源码,其主要功能类似于PCA,都属于降维算法。本次实现是依托于项目工程,裁剪掉了图像预处理特征提取部分,是降维算法在分类问题上的一次实现,为Matlab代码实现
PCA降维算法,本程序已经调好,可以直接跑数据
本次资源包括pca的python代码,以及测试数据集。 降维是指采用某种映射方法,将原高维空间中的数据点映射...通过降维可以减少 冗余信息所造成的误差,提高识别的精度,或者通过降维算法来寻找数据内部的本质结构特征。
四大机器学习降维算法:PCA、LDA、LLE、Laplacian-Eigenmaps.pdf四大机器学习降维算法:PCA、LDA、LLE、Laplacian-Eigenmaps.pdf四大机器学习降维算法:PCA、LDA、LLE、Laplacian-Eigenmaps.pdf四大机器学习降维算法...
四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps.pdf四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps.pdf四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps.pdf四大机器学习降维算法...
简单的数据降维算法(PCA)举例,构造随机的10维数据,降维成3维的。Sample可替换成用户数据
pca数据降维算法,很好的解决数据灾难的问题。
MATLAB实现PCA-BP主成分降维算法结合BP神经网络多输入单输出回归预测(完整源码和数据) 1.输入多个特征,输出单个变量; 2.多输入单输出回归预测; 3.多指标评价,代码质量极高;excel数据,方便替换,运行环境2018...
用于降维的pca算法,适用于人脸识别中图片维度的降低
一款很好用的PCA降维算法,可以自己修改后随意使用。
一种新的降维算法PCA_LLE在图像识别中的应用.pdf
pca降维
机器学习课程设计—PCA降维算法实践,内含源码及报告(包括应用实例)
四大机器学习降维算法:PCA、LDA、LLE、LaplacianEigenmaps.pdf
PCA算法,主成分分析,主要用于数据降维
python python_特征降维算法PCA的python实现