Correlation

是否應該在進行 PCA 之前刪除高度相關的變量?

  • February 21, 2013

我正在閱讀一篇論文,其中作者在進行 PCA 之前由於與其他變量的高度相關性而丟棄了幾個變量。變量總數約為 20。

這有什麼好處嗎?這對我來說似乎是一種開銷,因為 PCA 應該自動處理這個問題。

這闡述了@ttnphns 在評論中提供的有見地的提示。

相鄰的幾乎相關的變量增加了它們共同的潛在因素對 PCA 的貢獻。 我們可以從幾何上看到這一點。考慮 XY 平面中的這些數據,顯示為點雲:

散點圖

幾乎沒有相關性,協方差大致相等,並且數據居中:PCA(無論如何進行)將報告兩個大致相等的分量。

現在讓我們輸入第三個變量等於加上少量的隨機誤差。的相關矩陣除了在第二和第三行和列之間(和):

在幾何上,我們幾乎垂直地移動了所有原始點,將前一張圖片從頁面平面中提升出來。這個偽 3D 點雲試圖用側面透視圖來說明提升(基於不同的數據集,儘管生成方式與以前相同):

3D 繪圖

這些點最初位於藍色平面中,並被提升到紅點。原本的軸指向右側。由此產生的傾斜*也將點沿 YZ 方向拉伸,從而使它們對方差的貢獻加倍。*因此,這些新數據的 PCA 仍將識別兩個主要主成分,但現在其中一個的方差將是另一個的兩倍。

中的一些模擬證實了這種幾何期望R。為此,我通過第二次、第三次、第四次和第五次創建第二個變量的近共線副本來重複“提升”過程,並命名它們通過. 這是一個散點圖矩陣,顯示了最後四個變量如何很好地相關:

散點圖矩陣

PCA 是使用相關性完成的(儘管對於這些數據並不重要),使用前兩個變量,然後是三個,…,最後是五個。我使用主成分對總方差的貢獻圖來顯示結果。

主成分分析結果

最初,對於兩個幾乎不相關的變量,貢獻幾乎相等(左上角)。在添加一個與第二個相關的變量之後——就像在幾何插圖中一樣——仍然只有兩個主要成分,一個現在是另一個的兩倍。(第三個分量反映了缺乏完美的相關性;它測量了 3D 散點圖中煎餅狀雲的“厚度”。)添加另一個相關變量後(),第一部分現在約佔總數的四分之三;加上五分之一後,第一個成分幾乎佔總數的五分之四。在所有四種情況下,大多數 PCA 診斷程序都可能認為第二個之後的組件無關緊要;在最後一種情況下,某些程序可能會得出結論,只有一個主要成分值得考慮。

我們現在可以看到**,丟棄被認為是衡量一組變量的相同潛在(但“潛在”)方面的**變量可能是有好處的,因為包括幾乎冗餘的變量會導致 PCA 過分強調它們的貢獻。這樣的程序在數學上沒有任何正確(或錯誤)的地方。這是基於分析目標和數據知識的判斷。但應該非常清楚的是,擱置已知與其他變量密切相關的變量會對 PCA 結果產生重大影響。


這是R代碼。

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)

引用自:https://stats.stackexchange.com/questions/50537

comments powered by Disqus