小學生都能看明白的特徵值分解和奇異值分解

2021-10-24 09:49:40 字數 3414 閱讀 4158

特徵值和特徵向量不明白的小朋友先看這個

奇異值分解是乙個有著很明顯的物理意義的一種方法,它可以將乙個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。就像是描述乙個人一樣,給別人描述說這個人長得濃眉大眼,方臉,絡腮鬍,而且帶個黑框的眼鏡,這樣寥寥的幾個特徵,就讓別人腦海裡面就有乙個較為清楚的認識,實際上,人臉上的特徵是有著無數種的,之所以能這麼描述,是因為人天生就有著非常好的抽取重要特徵的能力,讓機器學會抽取重要的特徵,svd是乙個重要的方法。

如果說乙個向量v是方陣a的特徵向量,λ

\lambda

λ是方陣a的特徵值,將一定可以表示成下面的形式:

a ν=

λνa\nu=\lambda\nu

aν=λ

ν特徵值分解是將乙個矩陣分解成下面的形式:

a =q

∑q−1

a=q\sum q^

a=q∑q−

1其中q是這個矩陣a的特徵向量組成的矩陣,σ是乙個對角陣,每乙個對角線上的元素就是乙個特徵值。我這裡引用了一些參考文獻中的內容來說明一下。首先,要明確的是,乙個矩陣其實就是乙個線性變換,因為乙個矩陣乘以乙個向量後得到的向量,其實就相當於將這個向量進行了線性變換。比如說下面的乙個矩陣:

[ 30

01]\begin 3&0\\0&1 \end

[30​01

​]這個矩陣m乘以乙個向量(x,y)的結果是:

[ 30

01][

xy]=

[3xy

]\begin 3&0\\0&1 \end \begin x\\y \end =\begin3x\\y\end

[30​01

​][x

y​]=

[3xy

​]其對應的線性變換是

上面的矩陣是對稱的,所以這個變換是乙個對x,y軸的方向乙個拉伸變換(每乙個對角線上的元素將會對乙個維度進行拉伸變換,當值》1時,是拉長,當值<1時時縮短),當矩陣不是對稱的時候,假如說矩陣是下面的樣子:

m =[

1101

]m=\begin 1&1\\0&1 \end

m=[10​

11​]

它所描述的變換是下面的樣子:

這其實是在平面上對乙個軸進行的拉伸變換(如藍色的箭頭所示),在圖中,藍色的箭頭是乙個最主要的變化方向(變化方向可能有不止乙個),如果我們想要描述好乙個變換,那我們就描述好這個變換主要的變化方向就好了。反過頭來看看之前特徵值分解的式子,分解得到的σ矩陣是乙個對角陣,裡面的特徵值是由大到小排列的,這些特徵值所對應的特徵向量就是描述這個矩陣變化方向(從主要的變化到次要的變化排列)

當矩陣是高維的情況下,那麼這個矩陣就是高維空間下的乙個線性變換,這個線性變化可能沒法通過來表示,但是可以想象,這個變換也同樣有很多的變換方向,我們通過特徵值分解得到的前n個特徵向量,那麼就對應了這個矩陣最主要的n個變化方向。我們利用這前n個變化方向,就可以近似這個矩陣(變換)。也就是之前說的:提取這個矩陣最重要的特徵。總結一下,特徵值分解可以得到特徵值與特徵向量,特徵值表示的是這個特徵到底有多重要,而特徵向量表示這個特徵是什麼,可以將每乙個特徵向量理解為乙個線性的子空間,我們可以利用這些線性的子空間幹很多的事情。不過,特徵值分解也有很多的侷限,比如說變換的矩陣必須是方陣

下面談談奇異值分解。特徵值分解是乙個提取矩陣特徵很不錯的方法,但是它只是對方陣而言的,在現實的世界中,我們看到的大部分矩陣都不是方陣,比如說有n個學生,每個學生有m科成績,這樣形成的乙個n * m的矩陣就不可能是方陣,我們怎樣才能描述這樣普通的矩陣呢的重要特徵呢?奇異值分解可以用來幹這個事情,奇異值分解是乙個能適用於任意的矩陣的一種分解的方法:

a =u

∑vta=u\sum v^t

a=u∑vt

假設a是乙個nm的矩陣,那麼得到的u是乙個nn的方陣(裡面的向量是正交的,u裡面的向量稱為左奇異向量),σ是乙個n*m的矩陣(除了對角線的元素都是0,對角線上的元素稱為奇異值),v

tv^t

vt是乙個n *n的矩陣,裡面的向量也是正交的,v裡面的向量稱為右奇異向量),從來反映幾個相乘的矩陣的大小可得下面的

那麼奇異值和特徵值是怎麼對應起來的呢?首先,我們將乙個矩陣at∗

aa^t*a

at∗a

,將會得到乙個方陣,我們用這個方陣求特徵值可以得到:

( at

a)νi

=λiν

i(a^ta)\nu_i=\lambda_i\nu_i

(ata)ν

i​=λ

i​νi

這裡得到的v,就是我們上面的右奇異向量。此外我們還可以得到:

σ i=

λiui

=1σi

aνi\sigma_i=\sqrt\lambda_i\\ u_i=\fraca\nu_i

σi​=λ​

i​ui

​=σi

​1​a

νi​這裡的σ就是上面說的奇異值,u就是上面說的左奇異向量。奇異值σ跟特徵值類似,在矩陣σ中也是從大到小排列,而且σ的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上了。也就是說,我們也可以用前r大的奇異值來近似描述矩陣,這裡定義一下部分奇異值分解:

a m×

n≈um

×r∑r

×rvr

×ntam

×n​≈

um×r

​∑r×

r​vr

×nt​

r是乙個遠小於m、n的數,這樣矩陣的乘法看起來像是下面的樣子:

右邊的三個矩陣相乘的結果將會是乙個接近於a的矩陣,在這兒,r越接近於n,則相乘的結果越接近於a。而這三個矩陣的面積之和(在儲存觀點來說,矩陣面積越小,儲存量就越小)要遠遠小於原始的矩陣a,我們如果想要壓縮空間來表示原矩陣a,我們存下這裡的三個矩陣:u、σ、v就好了

小學生都能看懂的數字dp

數字 dp 歸為計數 dp 通常需要統計乙個區間 l,r 內滿足某些限制條件的個數 數字dp其實很久前就知道了,也做過幾道和其他演算法混在一起的題目,其實通過手玩是能做的 但畢竟是種演算法,還是系統學下比較好 節省手玩時間 p2602 zjoi2010 數字計數 求 l,r 間,0 到 9 在數字上...

小學生都能學會的python 列表

小學生都能學會的python 列表 1.什麼是列表 list 能裝東西的東西 列表中裝的資料是沒有限制的,大小基本上是夠用的 列表使用來表示。在列表中每個元素與元素之間用逗號隔開 有索引和切片 start,end,step 2.增刪改查 1.增加 2.刪除 remove pop clear del ...

小學生都能學會的python 深淺拷貝

小學生都能學會的python 深淺拷貝 join 把列表中的每一項用字串拼接起來 lst 汪峰 吳君如 李嘉欣 陳慧琳 關之琳 遍歷列表.把列表中的每一項用 做拼接 s join lst 把列表轉化成字串 print s s1 汪峰 吳君如 李嘉欣 陳慧琳 關之琳 ls s1.split 把字串轉化...