奇異值分解的原理 實現及應用

2021-10-21 00:27:50 字數 3090 閱讀 6909

總結有乙個 m×n

m \times n

m×n 的矩陣 a

aa ,可以分解成如下形式

a =u

σvta = u \sigma v^t

a=uσvt

其中 u∈r

m×mu\in r^

u∈rm×m

和 v∈rn

×nv\in r^

v∈rn×n

均為單位正交陣,即有 uut

=iuu^t=i

uut=

i 和 vvt

=ivv^t=i

vvt=

i ,u稱為左奇異矩陣,v稱為右奇異矩陣, σ∈r

m×n\sigma \in r^

σ∈rm×n

僅在主對角線上有值,稱為奇異值

可以用下面的表示奇異值分解的過程,圖中方塊的顏色表示值的大小,顏色越淺,值越大。對於奇異值矩陣 σ

\sigma

σ ,只有其主對角線有奇異值,其餘均為0。

#注:來自網路
import numpy as np

a = np.array([[

1,2,

3],[

4,5,

6]])

print

(a.shape)

print

(a)u,sigma,vt = np.linalg.svd(a)

print

(u)print

(sigma)

print

(vt)

的壓縮與重構

分解之後得到200個奇異值,從svd函式中得到的奇異值sigma的值是從大到小排列的,畫出sigma的值的影象如下:

# 取前30個奇異值對影象重構

nums =

30img_re1 =(u

[:,0

:nums]).

dot(np.

diag

(sigma[

0:nums]))

.dot(vt

[0:nums,:]

)print

(img_re1.shape)

img_re1 = img_re1.

reshape

(200

,200,3

)

# 取前100個奇異值對影象重構

奇異值可以被看作成乙個矩陣的代表值,或者說,奇異值能夠代表這個矩陣的資訊。當奇異值越大時,它代表的資訊越多。因此,我們取前面若干個最大的奇異值,就可以基本上還原出資料本身

從前面的曲線圖可以看出,奇異值的大小下降是非常快的,因此可以只取前面幾個奇異值,便可基本表達出原矩陣的資訊。

奇異值分解

奇異值分解 singular value decomposition 是線性代數中一種重要的 矩陣分解,是矩陣分析中正規矩陣酉對角化的推廣。在訊號處理 統計學等領域有重要應用。1基本介紹 2理論描述 3幾何意義 4範數 5應用 求偽逆 平行奇異值模型 矩陣近似值 奇異值分解在某些方面與 對稱矩陣或 ...

奇異值分解

從幾何 的角度上來看奇異值分解 上圖表明任意的矩陣 a 是可以分解成三個矩陣相乘的形式。v表示了原始域的標準正交基,u表示經過a 變換後的co domain的標準正交基,表示了v 中的向量與u中相對應向量之間的關係。我們仔細觀察上圖發現,線性變換a可以分解為旋轉 縮放 旋轉這三種基本線性變換。接下來...

奇異值分解

本文 知乎 我們先舉乙個例子,假設現在我們拿到這樣一組資料,裡面有兩個屬性,既有以 千公尺 每小時 度量的最大速度特徵,也有 英里 小時 的最大速度特徵,顯然我們一眼就看出這兩個特徵有乙個多餘。怎麼直觀的判斷資料是否冗餘?上圖從左往右,我們可以發現資料之間的關聯性越來越強,也就是說兩組資料越來越 相...