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列。
相關文章
相關標籤/搜索