SVD奇異值分解

爱吐水的小火龙發表於2024-05-05

利用矩陣 SVD 分解,擬合直線與平面

SVD 分解

奇異值分解(Singular Value
Decomposition,以下簡稱SVD)就是解決最小二乘法的利器,它不僅可以擬合直線、平面,還可以得到點雲的最小包圍盒。關於 SVD 與最小二乘的數學原理和關聯,可以直接網上搜尋查詢,資料大把。本文主要講解其幾何意義和程式碼實現。

首先,我們可以將一大堆需要擬合點的座標(x,y,z),組成一個 n 行三列的矩陣 A(需要提前減去平均值(\(x_0,y_0,z_0\)
,即點雲的中心與(0,0,0)對齊)也就是去中心化, 然後進行 SVD 分解,得到三個矩陣 \(U\Sigma V^T\)
,矩陣V的第一列(Column)即是直線的方向向量,而第三列就是平面的法線向量。
img

幾何意義來看

讓我們先從二維上一個圓說起:
假設一堆點,組成了一個橢圓(圖右上角),如果我們要擬合直線,就需要找到這個橢圓的長軸。而矩陣 A 的含義就是,將一個標準圓,經過變換得到我們要擬合的橢圓。
img

img

ACM 的解釋有意思可以看看

https://www.ams.org/publicoutreach/feature-column/fcarc-svd

奇異值分解(Singular Value Decomposition,SVD)是一種線上性代數中重要的矩陣分解方法。對於一個矩陣A,SVD將其分解為三個矩陣的乘積,即:A = UΣV^T1

在這個分解中,U和V都是正交矩陣,Σ是一個對角矩陣,對角線上的元素稱為奇異值,且按降序排列。奇異值反映了矩陣A在相應維度上的“能量”或“強度”2

右奇異向量(即矩陣V中的列向量)可以被看作是原始資料空間中的新特徵。這是因為,對於一個mn的矩陣A,我們可以透過計算A^TA得到一個nn的方陣,然後對這個方陣進行特徵值分解,得到的特徵向量就是右奇異向量1

這些右奇異向量描述了資料的主要變化方向。特別地,對於高維資料,我們可以透過選擇前N個最大的奇異值對應的右奇異向量,來近似描述資料的主要變化方向1

因此,右奇異向量可以被看作是資料的方向,而對應的奇異值則表示了這個方向的重要性1。這就是為什麼一組資料經過SVD得到的右奇異向量可以看作這組資料的方向的原因。希望這個解釋對你有所幫助!

源: 與必應的對話, 2024/4/25
(1) 強大的矩陣奇異值分解(SVD) - 知乎. https://zhuanlan.zhihu.com/p/122259109.
(2) 降維演算法之奇異值分解 (Singular Value Decomposition, SVD) - CSDN部落格. https://blog.csdn.net/qq_39297053/article/details/136596791.
(3) 特徵向量與奇異向量 - 知乎. https://zhuanlan.zhihu.com/p/297714734.
(4) 對稱矩陣奇異值分解得到的左奇異矩陣和右奇異矩陣一定相等嗎? - 知乎. https://www.zhihu.com/question/497528522.

個人理解

我們輸入一組資料的矩陣A可以得到資料的空間示意圖:例如

img

img

img

img

相關文章