奇異值分解 是什麼?

Singular Value Decomposition — 奇異值分解 的完整解釋

奇異值分解(SVD)是一種將矩陣分解為三個矩陣乘積的技術,廣泛應用於降維、推薦系統和資料壓縮等領域。

容易混淆

主成分分析 (PCA) PCA 像找到資料中最重要的幾個「方向」來投影,有點像從特定角度看資料。 SVD 則更像是一種底層的「萬能分解器」,它能把任何矩陣都拆開,PCA 其實就是 SVD 的一種應用,SVD 功能更廣泛,能處理更多不同類型的問題。

最關鍵的區別:先看它是在比意思、比結構,還是在做任務輸出。

記住這句就好

把矩陣拆成三部分,找出重要方向,就是 SVD。

實際案例

圖片壓縮會保留主要奇異值,丟掉不重要的部分,檔案就變小。 推薦系統可用矩陣分解找出使用者與商品的潛在偏好。

算法與應用

SVD 會把矩陣分成 U、Σ、V^T,奇異值越大代表那個方向越重要。 截斷奇異值後,常能得到低秩近似、降噪和特徵抽取。

情境判斷

Q1(直覺題): 如果你只想把資料壓縮得更小,SVD 有幫助嗎?

→ 有。保留主要奇異值就能做近似壓縮。

Q2(判斷題): 如果資料本身很稀疏,還能直接用 SVD 嗎?

→ 看情況。稀疏矩陣常需要配合更省記憶體的演算法。

相關術語

常見問題

SVD 和 PCA 有什麼關係?

SVD 和 PCA (主成分分析) 密切相關。PCA 可以看作是使用 SVD 對資料進行降維的一種特殊情況。具體來說,PCA 是對資料的協方差矩陣進行特徵值分解,而協方差矩陣可以通過 SVD 分解得到。因此,SVD 可以用於實現 PCA。

如何選擇 SVD 降維的維度 k?

選擇 SVD 降維的維度 k 需要權衡信息保留和降維效果。一種常用的方法是觀察奇異值的衰減情況。通常,選擇前 k 個奇異值,使得它們的平方和佔所有奇異值平方和的較大比例(例如 90% 或 95%)。也可以通過交叉驗證等方法來選擇最佳的 k 值。

SVD 的計算複雜度是多少?

SVD 的計算複雜度取決於矩陣的大小。對於一個 m x n 的矩陣,其計算複雜度通常為 O(mn<sup>2</sup>) 或 O(m<sup>2</sup>n),取決於 m 和 n 的大小關係。對於大型矩陣,可以使用一些優化算法來加速 SVD 的計算,例如隨機 SVD。