关于
PCA(Principal component analysis)主成分分析,是SVD(Singular value decomposition)奇异值分析的一种特殊情况。主要用于数据降维,特征提取。
Matlab演示
生成一个随机矩阵
这里生成一个 3∗3 的小矩阵便于说明。
A = rand(3,3);
A=⎡⎣⎢2.7694−1.34993.03490.7254−0.06310.7147−0.2050−0.12411.4897⎤⎦⎥
特征值分解
[V,D] = eig(A);
V=⎡⎣⎢0.30460.94450.1230−0.73680.15180.65880.6036−0.29140.7421⎤⎦⎥
D=⎡⎣⎢0.06550001.306000020⎤⎦⎥
V是特征向量,D是特征向量对应的特征值。特征值从小到大依次为20,1.3060,0.0655。最后一个特征非常小,因为我们可以舍去。
构造子空间的基
SubSpace = V(:,2:end);
SubSpace=⎡⎣⎢−0.73680.15180.65880.6036−0.29140.7421⎤⎦⎥
我们选取最大的两个特征值对应的特征向量,构成我们的子空间。
构造子空间上的正交投影
Q = SubSpace * SubSpace ’;
Q=⎡⎣⎢0.9072−0.2877−0.0375−0.28770.1079−0.1162−0.0375−0.11620.9849⎤⎦⎥
子空间投影
B = Q'*A ;
B=⎡⎣⎢2.7871−1.29533.04200.6494−0.29860.6841−0.2061−0.12761.4893⎤⎦⎥
计算子空间与原始空间的差值
可以看出这里我们使用子空间投影复原的矩阵
B
和原始矩阵
norm(A-B,'fro');
ans=0.2560
数学好的同学已经看出来了,其实这也就是矩阵的低秩逼近问题。
min||X−Xr||2F,s.t.rank(Xr)<=r
完。
Licenses
作者 | 日期 | 联系方式 |
---|---|---|
风吹夏天 | 2015年8月10日 | wincoder@qq.com |