SVD 和 PCA 之間的關係。如何使用 SVD 執行 PCA?
主成分分析 (PCA) 通常通過協方差矩陣的特徵分解來解釋。但是,它也可以通過數據矩陣的奇異值分解 (SVD) 來執行. 它是如何工作的?這兩種方法之間有什麼聯繫?SVD和PCA有什麼關係?
或者換句話說,如何使用數據矩陣的 SVD 進行降維?
讓數據矩陣 $ \mathbf X $ 屬於 $ n \times p $ 大小,在哪裡 $ n $ 是樣本數和 $ p $ 是變量的數量。讓我們假設它是居中的,即列均值已被減去,現在等於零。
然後 $ p \times p $ 協方差矩陣 $ \mathbf C $ 是(誰)給的 $ \mathbf C = \mathbf X^\top \mathbf X/(n-1) $ . 它是一個對稱矩陣,因此可以對角化:$$ \mathbf C = \mathbf V \mathbf L \mathbf V^\top, $$在哪裡 $ \mathbf V $ 是一個特徵向量矩陣(每列是一個特徵向量)和 $ \mathbf L $ 是具有特徵值的對角矩陣 $ \lambda_i $ 在對角線上按降序排列。特徵向量稱為數據的主軸或主方向。數據在主軸上的投影稱為主成分,也稱為PC 分數;這些可以被視為新的、轉換的變量。這 $ j $ -th 主成分由下式給出 $ j $ - 第列 $ \mathbf {XV} $ . 的坐標 $ i $ - 新 PC 空間中的第一個數據點由 $ i $ - 第行 $ \mathbf{XV} $ .
如果我們現在執行奇異值分解 $ \mathbf X $ ,我們得到一個分解$$ \mathbf X = \mathbf U \mathbf S \mathbf V^\top, $$在哪裡 $ \mathbf U $ 是一個酉矩陣並且 $ \mathbf S $ 是奇異值的對角矩陣 $ s_i $ . 從這裡可以很容易看出$$ \mathbf C = \mathbf V \mathbf S \mathbf U^\top \mathbf U \mathbf S \mathbf V^\top /(n-1) = \mathbf V \frac{\mathbf S^2}{n-1}\mathbf V^\top, $$意味著右奇異向量 $ \mathbf V $ 是主要方向,奇異值與協方差矩陣的特徵值通過 $ \lambda_i = s_i^2/(n-1) $ . 主成分由下式給出 $ \mathbf X \mathbf V = \mathbf U \mathbf S \mathbf V^\top \mathbf V = \mathbf U \mathbf S $ .
總結一下:
- 如果 $ \mathbf X = \mathbf U \mathbf S \mathbf V^\top $ ,然後列 $ \mathbf V $ 是主要方向/軸。
- 的列 $ \mathbf {US} $ 是主要成分(“分數”)。
- 奇異值通過以下方式與協方差矩陣的特徵值相關 $ \lambda_i = s_i^2/(n-1) $ . 特徵值 $ \lambda_i $ 顯示各個 PC 的差異。
- 標準化分數由以下列給出 $ \sqrt{n-1}\mathbf U $ 和載荷由列給出 $ \mathbf V \mathbf S/\sqrt{n-1} $ . 例如,請參閱此處和此處,了解為什麼“裝載”不應與主要方向混淆。
- **以上是正確的,僅當 $ \mathbf X $ 居中。**只有這樣,協方差矩陣才等於 $ \mathbf X^\top \mathbf X/(n-1) $ .
- 以上僅適用於 $ \mathbf X $ 在行中有樣本,在列中有變量。如果變量在行中,樣本在列中,則 $ \mathbf U $ 和 $ \mathbf V $ 交換解釋。
- 如果要對相關矩陣(而不是協方差矩陣)執行 PCA,則 $ \mathbf X $ 不僅應該居中,還應該標準化,即除以它們的標準差。
- 為了減少數據的維數 $ p $ 到 $ k<p $ , 選擇 $ k $ 的第一列 $ \mathbf U $ , 和 $ k\times k $ 的左上角 $ \mathbf S $ . 他們的產品 $ \mathbf U_k \mathbf S_k $ 是必需的 $ n \times k $ 包含第一個矩陣 $ k $ 件。
- 進一步乘以第一個 $ k $ 對應主軸的 PC $ \mathbf V_k^\top $ 產量 $ \mathbf X_k = \mathbf U_k^\vphantom \top \mathbf S_k^\vphantom \top \mathbf V_k^\top $ 具有原始矩陣 $ n \times p $ 大小但等級較低(等級 $ k $ )。這個矩陣 $ \mathbf X_k $ 提供從第一個原始數據的重建 $ k $ 件。它具有最低的重建錯誤,請參閱我的答案here。
- 嚴格來講, $ \mathbf U $ 是 $ n\times n $ 尺寸和 $ \mathbf V $ 是 $ p \times p $ 尺寸。然而,如果 $ n>p $ 然後是最後一個 $ n-p $ 列 $ \mathbf U $ 是任意的(以及相應的行 $ \mathbf S $ 是常數零);因此,應該使用一個經濟尺寸(或薄)的 SVD,它返回 $ \mathbf U $ 的 $ n\times p $ 大小,刪除無用的列。對於大 $ n\gg p $ 矩陣 $ \mathbf U $ 否則將是不必要的巨大。這同樣適用於相反的情況 $ n\ll p $ .
更多鏈接
- SVD 和 PCA 之間的直觀關係是什麼——math.SE 上一個非常流行且非常相似的線程。
- 為什麼要通過數據的 SVD 對數據進行 PCA?– 討論通過 SVD 執行 PCA 的好處[簡短回答:數值穩定性]。
- PCA 和對應分析與 Biplot 的關係——在一些同類技術的背景下,PCA 均基於 SVD。
- SVD 比 PCA 有什麼優勢嗎?- 一個問題,詢問使用 SVD代替PCA 是否有任何好處 [簡短回答:不適定問題]。
- 理解主成分分析、特徵向量和特徵值——我的回答是對 PCA 的非技術性解釋。為了引起注意,我在這裡複製一個圖: