PCA的數學原理Matlab演示

關於

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日 [email protected]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章