PCA降維—降維后樣本維度大小


之前對PCA的原理挺熟悉,但一直沒有真正使用過。最近在做降維,實際用到了PCA方法對樣本特征進行降維,但在實踐過程中遇到了降維后樣本維數大小限制問題。

MATLAB自帶PCA函數:[coeff, score, latent, tsquared] = pca(X)

其中,X是n*p的,n是樣本個數,p是特征維數。
  (1)coeff矩陣是返回的轉換矩陣,就是把原始樣本轉換到新空間中的轉換矩陣。
  (2)score是原始樣本矩陣在新樣本空間中的表示,也就是原始樣本乘上轉換矩陣,但是還不是直接乘,要減去一個樣本的均值。將原始數據轉換到新樣本空間中的算法是這樣實現的:X0 = bsxfun(@minus,X,mean(X,1)); score = X0 * coeff.
  (3)latent是返回的按降序排列的特征值,根據這個你可以手動的選擇降維以后的數據要選擇前多少列。
  (4)tsquared是X中樣本的T平方統計量,PCA在整個空間中計算使用所有主成分來計算tsquared。
  注意:
  (1)當樣本個數遠小於特征維數的時候,coeff是比較大的,比如你的降維矩陣是100*50000,那么這個轉換矩陣的大小是50000*99(並不是50000*50000)。也就是說PCA降維時,降維后特征維數要小於樣本個數。
  (2)選擇降維后維度的大小:cumsum(latent)./sum(latent),通過這樣計算特征值的累計貢獻率,一般來說都選擇前95%的特征值對應的特征向量。比如矩陣100*50000,如果你計算得到前50個特征值的累計貢獻率已經超過99.9%,那么就完全可以只要降維后的數據的前50列。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM