2013-05-27 123 views
0

數據集由N個元素和K個變量組成。使用PCA我可以減少變量的數量,但是如何檢查提供最多信息的變量K?使用PCA的特徵選擇

例如,我有數據設置是這樣的:

1 1 1 2 
2 2 1 4 
3 3 2 11 
1 1 2 7 
2 2 3 14 
3 3 3 16 
1 1 4 17 
2 2 4 19 
3 3 3 16 

我知道第一列是相同的像第2和第4列是通過關係式確定:2 *第一+ 5 *第三-5。因此,第1欄和第3欄提供的信息最多,其餘部分不提供任何其他信息。但是如何使用PCA來計算這個值呢?

回答

2

對於示例:

  PC1   PC2   PC3   PC4 
[1,] 0.3516359 -0.79142416 2.497231e-17 -1.299998e-16 
[2,] 0.3516359 -0.79142416 1.713028e-16 1.168541e-16 
[3,] 1.0831644 0.32331520 4.906878e-16 -3.286408e-17 
[4,] 6.1190936 0.03372767 -9.813756e-17 6.572817e-18 

主成分是(特徵值)×協方差矩陣的特徵向量(這些都保證真實和正交自冠狀病毒是對稱半正定)的平方根。

在您的示例中可以看到,由於PC3和PC4幾乎爲零,所以有兩個因子足以解釋舍入容差範圍內的所有變量(即協方差矩陣的「排名」爲2)。

這有效地旋轉到一個向量空間,該向量空間將軸與隱藏變量對齊。要討論原始問題中的列,您需要重新映射。例如。你可以看看最大的項目;在這裏,我們會說PC1主要與'Col 4'相關聯,但這是任意的,PC2在'Col 1'和'Col 2'上具有相同的權重 - 兩種選擇看起來都不錯。記住相關並不意味着因果關係。

+0

你能寫出Matlab代碼來獲得這個矩陣嗎? – veeveeoor

+1

我沒有MatLab本身,但是pca()/ princomp()從原始數據集計算組件,而pcacov()將(對稱正半定)協方差矩陣作爲輸入。 – jayprich

+0

看着SciLab等價物,我認爲這些將計算一個樣本協方差矩陣,並分別報告矢量和因子。我的矩陣是x'* x的一個因子分解矩陣,相當於人口協方差的4x4矩陣。 對於這樣的退化情況,可能值得探討奇異值分解或近似,這些也可用並可以返回等級。 – jayprich