svd奇异值分解_奇异值分解SVD
奇異值分解(SVD)在計算機視覺中有著廣泛的應用,如數據降維、推薦系統、自然語言處理等。本文是介紹SVD的數學計算過程,并從SVD的性質說明其應用的原理。
01特征值與特征向量奇異值分解(SVD)與特征分解類似,是將矩陣分解為由奇異值(特征值)和特征向量表示的矩陣之積的方法。因而,在介紹SVD前有必要先介紹特征值、特征向量和特征分解。
由線性代數知識可知特征值與特征向量的定義:
? ? ? ? ? ? ? ? ? ? ? ? Aα = λα ? ? ? ? ? ? ? ? ? ? ? ? ?
其中:A是nxn矩陣,λ是特征值,α是特征值對應的n維特征向量。通過線性代數知識可以求解特征值和特征向量
02特征分解特征分解是將矩陣分解為由特征值和特征向量表示的矩陣之積的方法。如大小為 nxn 的矩陣 A 可以用如下特征分解表示:
? ? ? ? ? ? ? ? ? ? ? ?? A=WΣW-1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
其中:W是n個特征向量組成的nxn矩陣,Σ是以n個特征值為主對角線的nxn矩陣。一般情況下需要將W矩陣中n個特征向量標準化,即 ||ωi||2=1,或 ωiTωi=1,那么W矩陣為酉矩陣,即 WTW=I,WT=W-1 。則矩陣A的特征分解可以寫為:
? ? ? ? ? ? ? ? ? ? ? ? A=WΣWT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
由此可見,我們只需計算矩陣A的特征值和特征向量就能夠實現矩陣分解
03奇異值分解上述特征分解是對大小為nxn的矩陣(方陣)的分解,對于非方陣的求解則需要采用SVD。假設A是mxn的矩陣,那么其相應的奇異值分解可表示為:
? ? ? ? ? ? ? ? ? ? ? ? A=UΣVT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
其中:U是AAT矩陣的特征向量組成的mxm的矩陣,Σ是以奇異值 σ 為主對角線的mxn的矩陣,V是ATA矩陣的特征向量組成的nxn的矩陣,U,V均為酉矩陣,即UUT=I,VVT=I。
由此可以看出SVD分解后的矩陣計算方法與特征分解的計算方法略有不同。對于U、V矩陣可分別計算AAT矩陣的特征向量和 ATA 矩陣的特征向量來實現,但 Σ 矩陣包含奇異值 σ?,那么我們需要說明奇異值的計算。
由SVD分解的定義可知:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A=UΣVT ? ? ? ? ? ? ? ? ? ? ? ? ? ?
因為V為酉矩陣,即:VTV=I,那么:
? ? ? ? ? ? ? ? ? ? ? AV=UΣVTV=UΣ ? ? ? ? ? ? ? ? ? ?
定義 V 矩陣由特征向量 νi (稱為右奇異向量)組成, U 矩陣由特征向量 μi (稱為左奇異向量)組成,那么
? ? ? ? ? ? ? ? ? ? ? ? ?? Aνi? = σi?μi ? ? ? ? ? ? ? ? ? ? ? ??
因為 νi 和 μi 可以由前述過程得到,所以通過此式能夠得到奇異值,從而構建 Σ 矩陣。注意其中 i 的最大值是min( n, m)。
04SVD性質SVD分解中奇異值 σ 類似于特征分解中的特征值 λ,在 Σ 矩陣中依據 σ 大小排列后,可發現 σ 數值減少趨勢明顯,通常數值較大的 σ 之和占據了全部奇異值之和的絕大部分比例。因而,我們可以使用前 k 個最大的奇異值和對應的左右奇異向量來近似描述矩陣,即:
? ?? Amn = UmmΣmnVnnT ? UmkΣkkVknT ? ??
其中k遠小于n,那么矩陣A可以使用小矩陣表示。因為SVD這個性質,因而SVD可用于降維、去噪等。
END
掃碼關注我們臭皮匠快速編程總結
以上是生活随笔為你收集整理的svd奇异值分解_奇异值分解SVD的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: minhash算法检索相似文本_基于向量
- 下一篇: java s结尾的工具类_Filenam