PCA 圖的楔形形狀表明什麼?
在他們關於文本分類自動編碼器的論文中, Hinton 和 Salakhutdinov 展示了二維 LSA(與 PCA 密切相關)產生的圖:.
將 PCA 應用於完全不同的稍微高維的數據,我得到了一個看起來相似的圖:(除了在這種情況下,我真的很想知道是否有任何內部結構)。
如果我們將隨機數據輸入 PCA,我們會得到一個圓盤狀的 blob,所以這個楔形形狀不是隨機的。它本身意味著什麼嗎?
假設變量是正數或非負數,則邊緣的邊緣只是數據將分別變為 0 或負數的點。由於這種現實生活中的數據往往是右偏的,我們在分佈的低端看到更大的點密度,因此在楔形的“點”處的密度更大。
更一般地說,PCA 只是數據的旋轉,對這些數據的約束通常會以與問題中所示相同的方式在主成分中可見。
這是一個使用多個對數正態分佈變量的示例:
library("vegan") set.seed(1) df <- data.frame(matrix(rlnorm(5*10000), ncol = 5)) plot(rda(df), display = "sites")
根據前兩台 PC 所暗示的旋轉,您可能會看到楔形,或者您可能會看到稍微不同的版本,使用 (
ordirgl()
代替plot()
)在 3d 中顯示在這裡,在 3d 中,我們看到從中心質量突出的多個尖峰。
對於高斯隨機變量 () 其中每個都有相同的均值和方差,我們看到一個點球體
set.seed(1) df2 <- data.frame(matrix(rnorm(5*10000), ncol = 5)) plot(rda(df2), display = "sites")
對於統一的正隨機變量,我們看到一個立方體
set.seed(1) df3 <- data.frame(matrix(runif(3*10000), ncol = 3)) plot(rda(df3), display = "sites")
請注意,在這裡,為了說明,我僅使用 3 個隨機變量來顯示制服,因此這些點描述了 3d 中的立方體。對於更高維度/更多變量,我們無法在 3d 中完美地表示 5d 超立方體,因此不同的“立方體”形狀會有些失真。類似的問題會影響顯示的其他示例,但仍然很容易看到這些示例中的約束。
對於您的數據,在 PCA 之前對變量進行對數轉換會拉入尾部並拉伸聚集數據,就像您可能在線性回歸中使用這種轉換一樣。
PCA圖中可能會出現其他形狀;一種這樣的形狀是保存在 PCA 中的度量表示的人工製品,被稱為馬蹄形。對於具有長梯度或主要梯度的數據(沿單個維度排列的樣本,其中變量從 0 增加到最大值,然後沿數據的部分再次減小到 0,眾所周知會產生此類偽影。考慮
ll <- data.frame(Species1 = c(1,2,4,7,8,7,4,2,1,rep(0,10)), Species2 = c(rep(0, 5),1,2,4,7,8,7,4,2,1, rep(0, 5)), Species3 = c(rep(0, 10),1,2,4,7,8,7,4,2,1)) rownames(ll) <- paste0("site", seq_len(NROW(ll))) matplot(ll, type = "o", col = 1:3, pch = 21:23, bg = 1:3, ylab = "Abundance", xlab = "Sites")
這產生了一個極端的馬蹄形,軸末端的點彎曲回到中間。