Pca

在 PCA 雙圖上定位箭頭

  • March 10, 2015

我希望在 JavaScript 中實現一個用於主成分分析 (PCA) 的雙圖。我的問題是,我如何確定箭頭的坐標數據矩陣的奇異向量分解 (SVD) 的輸出?

這是由 R 生成的示例雙圖:

biplot(prcomp(iris[,1:4]))

鳶尾花數據集的雙圖

我嘗試在有關 biplot 的 Wikipedia 文章中查找它,但它不是很有用。或正確。不確定是哪個。

有許多不同的方法可以生成 PCA 雙圖,因此您的問題沒有唯一的答案。這是一個簡短的概述。

我們假設數據矩陣擁有行中的數據點並居中(即列均值均為零)。目前,我們假設它是標準化的,即我們在協方差矩陣(而不是相關矩陣)上考慮 PCA。PCA 相當於奇異值分解

您可以在此處查看我的答案以了解詳細信息:SVD 和 PCA 之間的關係。如何使用 SVD 執行 PCA? 在 PCA 雙圖中,將兩個第一主成分繪製為散點圖,即繪製在其第二列上。但是標準化可以不同;例如,可以使用:

  1. 的列:這些是按單位平方和縮放的主成分;
  2. 的列:這些是標準化的主成分(單位方差);
  3. 的列:這些是“原始”主成分(對主方向的預測)。

此外,原始變量被繪製為箭頭;IE一個坐標-th 箭頭端點由- 第一列和第二列的值. 但同樣,可以選擇不同的歸一化,例如:

  1. 的列: 我不知道這裡的解釋是什麼;
  2. 的列:這些是載荷;
  3. 的列:這些是主軸(又名主方向,又名特徵向量)。

以下是 Fisher Iris 數據集的所有內容:

Fisher Iris 雙圖,協方差的 PCA

將上面的任何子圖與下面的任何子圖組合起來可能的標準化。但是根據Gabriel, 1971 中介紹的雙標圖的原始定義,用於主成分分析的矩陣的雙標圖圖形顯示(順便說一下,本文有 2k 次引用),用於雙標圖的矩陣在相乘時應該近似(這就是重點)。所以“適當的雙標圖”可以使用例如和. 因此只有三個是“正確的雙圖”:即上面的任何子圖與正下方的子圖的組合。

[無論使用哪種組合,都可能需要按某個任意常數因子縮放箭頭,以使箭頭和數據點大致顯示在相同的比例上。]

使用載荷,即, 因為箭頭有一個很大的好處,因為它們有有用的解釋(另見這里關於加載)。加載箭頭的長度近似於原始變量的標準差(平方長度近似於方差),任意兩個箭頭之間的標量積近似於它們之間的協方差,箭頭之間的角度的餘弦近似於原始變量之間的相關性。要製作“適當的雙標圖”,應該選擇,即標準化 PC,用於數據點。Gabriel (1971) 將此稱為“PCA 雙圖”並寫道

這個 [特定選擇] 可能會在解釋觀察的多元矩陣時提供最有用的圖形幫助,當然,前提是這些可以在等級二處充分近似。

使用和允許一個很好的解釋:箭頭是原始基向量在 PC 平面上的投影,請參見@hxd1011 的插圖

甚至可以選擇繪製原始 PC連同載荷。這是一個“不正確的雙標圖”,但例如由@vqv 在我見過的最優雅的雙標圖上完成:可視化一百萬,PCA 版——它顯示了葡萄酒數據集的 PCA。

您發布的圖(Rbiplot函數的默認結果)是一個“正確的雙標圖”和. 該函數縮放兩個子圖,使它們跨越相同的區域。不幸的是,該biplot函數做出了一個奇怪的選擇,將所有箭頭按比例縮小並顯示箭頭端點應該在的文本標籤。(此外,biplot沒有正確獲得縮放比例,實際上最終繪製了分數平方和,而不是. 請參閱@AntoniParellada 的詳細調查:R 中 PCA 雙圖中基礎變量的箭頭。)

相關矩陣上的 PCA

如果我們進一步假設數據矩陣已標準化,因此列標準差都等於,然後我們在相關矩陣上執行 PCA。以下是同一圖的樣子:

Fisher Iris 雙圖,PCA 相關性

這裡的載荷更有吸引力,因為(除了上述屬性之外),它們給出了原始變量和 PC 之間的準確(而不是近似)相關係數。相關性都小於並且加載箭頭必須在半徑的“相關圓”內,有時也會在雙標圖上繪製(我將它繪製在上面相應的子圖上)。請注意,@vqv(上面鏈接)的雙圖是針對相關矩陣上的 PCA 完成的,並且還具有相關圈。


進一步閱讀:

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

comments powered by Disqus