PCA的数学原理Matlab演示

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bluecol/article/details/47399283

关于

PCA(Principal component analysis)主成分分析,是SVD(Singular value decomposition)奇异值分析的一种特殊情况。主要用于数据降维,特征提取。

Matlab演示

生成一个随机矩阵

这里生成一个33的小矩阵便于说明。

A = rand(3,3);

A=2.76941.34993.03490.72540.06310.71470.20500.12411.4897

特征值分解

[V,D] = eig(A);

V=0.30460.94450.12300.73680.15180.65880.60360.29140.7421

D=0.06550001.306000020

V是特征向量,D是特征向量对应的特征值。特征值从小到大依次为20,1.3060,0.0655。最后一个特征非常小,因为我们可以舍去。

构造子空间的基

SubSpace = V(:,2:end);

SubSpace=0.73680.15180.65880.60360.29140.7421

我们选取最大的两个特征值对应的特征向量,构成我们的子空间。

构造子空间上的正交投影

Q = SubSpace * SubSpace ’;

Q=0.90720.28770.03750.28770.10790.11620.03750.11620.9849

子空间投影

B = Q'*A ;

B=2.78711.29533.04200.64940.29860.68410.20610.12761.4893

计算子空间与原始空间的差值

可以看出这里我们使用子空间投影复原的矩阵B和原始矩阵A差异非常小,我们可以使用Frobenius范数度量两个矩阵的差异。

 norm(A-B,'fro');

ans=0.2560

数学好的同学已经看出来了,其实这也就是矩阵的低秩逼近问题。
min||XXr||2F,s.t.rank(Xr)<=r

完。

Licenses

作者 日期 联系方式
风吹夏天 2015年8月10日 wincoder@qq.com
展开阅读全文

没有更多推荐了,返回首页