1. 程式人生 > >數學基礎系列(六)----特徵值分解和奇異值分解(SVD)

數學基礎系列(六)----特徵值分解和奇異值分解(SVD)

一、介紹

  特徵值和奇異值在大部分人的印象中,往往是停留在純粹的數學計算中。而且線性代數或者矩陣論裡面,也很少講任何跟特徵值與奇異值有關的應用背景。

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

  在機器學習領域,有相當多的應用與奇異值都可以扯上關係,比如做feature reduction的PCA,做資料壓縮(以影象壓縮為代表)的演算法,還有做搜尋引擎語義層次檢索的LSI(Latent Semantic Indexing) 

  特徵值分解和奇異值分解在機器學習領域都是屬於滿地可見的方法。兩者有著很緊密的關係,接下來會談到特徵值分解和奇異值分解的目的都是一樣,就是提取出一個矩陣最重要的特徵。

  首先來看看向量的表示及基變換

  向量可以表示為(3,2),實際上表示線性組合:$x(1,0)^{T}+y(0,1)^{T}$

  

  基:(1,0)和(0,1)叫做二維空間中的一組基

  基變換:基是正交的(即內積為0,或直觀說相互垂直),要求:基之間線性無關

  

  基變換:資料與一個基做內積運算,結果作為第一個新的座標分量,然後與第二個基做內積運算,結果作為第二個新座標的分量

  資料(3,2)對映到基中座標:$\begin{pmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{pmatrix}\begin{pmatrix}3\\ 2\end{pmatrix}=\begin{pmatrix}\frac{5}{\sqrt{2}}\\ -\frac{1}{\sqrt{2}}\end{pmatrix}$

二、特徵值分解

  在前面一篇部落格詳細的理解了特徵值和特徵向量。

  如果說一個向量v是方陣A的特徵向量,那麼一定可以表示成下面的形式子 : Av = λv

  這時候λ就被稱為特徵向量v對應的特徵值,一個矩陣的一組特徵向量是一組正交向量。特徵值分解是將一個矩陣分解成下面的形式:A = Q∑Q-1

  其中Q是這個矩陣A的特徵向量組成的矩陣,Σ是一個對角陣,每一個對角線上的元素就是一個特徵值。

  當矩陣是$N\times N$的方陣且有N個線性無關的特徵向量時就可以來玩啦

  反過頭來看看之前特徵值分解的式子,分解得到的Σ矩陣是一個對角陣,裡面的特徵值是由大到小排列的,這些特徵值所對應的特徵向量就是描述這個矩陣變化方向(從主要的變化到次要的變化排列)。

  總結一下,特徵值分解可以得到特徵值與特徵向量,特徵值表示的是這個特徵到底有多重要,而特徵向量表示這個特徵是什麼,可以將每一個特徵向量理解為一個線性的子空間,我們可以利用這些線性的子空間幹很多的事情。不過,特徵值分解也有很多的侷限,比如說變換的矩陣必須是方陣。

三、奇異值分解(SVD)

  特徵值分解是一個提取矩陣特徵很不錯的方法,但是它只是對方陣而言的,在現實的世界中,我們看到的大部分矩陣都不是方陣,

  比如說有N個學生,每個學生有M科成績,這樣形成的一個N * M的矩陣就不可能是方陣,我們怎樣才能描述這樣普通的矩陣呢的重要特徵呢?

  奇異值分解可以用來幹這個事情,奇異值分解是一個能適用於任意的矩陣的一種分解的方法: A = UΣVT

  特徵值分解不挺好的嘛,但是它被限制住了,如果我的矩陣形狀變了呢?

  但是問題來了,如果M和N都很大且M不等N呢?

  

  照樣按照特徵值的大小來進行篩選,一般取前10%的特徵(甚至更少)的和就佔到了總體的99%了。

  取前K個來看看吧

  

  簡單推導一下

  在這裡順便解釋一下為什麼要進行推導,在機器學習領域、深度學習領域,具體的數學推導其實不是那麼重要,重要的是要知道這個東西到底是什麼意思,不一定需要把數學原理搞得十分清楚。在這裡只是簡單的推導一下而已。

  前提:對於一個二維矩陣M可以找到一組標準正交基v1和v2是的Mv1和Mv2是正交的。

  

  使用另一組正交基u1和u2來表示Mv1和Mv2的方向,其長度分別為:$|MV_{1}|=\sigma _{1},|MV_{2}|=\sigma _{2}$。可得:$\begin{matrix}MV_{1}=\sigma _{1}u_{1}\\ MV_{2}=\sigma _{2}u_{2}\end{matrix}$

  

  對於向量X在這組基中的表示:$x=(v_{1}\cdot x)v_{1}+(v_{2}\cdot x)v_{2}$,(點積表示投影的長度,可轉換成行向量乘列向量$v\cdot x=v^{T}x$

  可得:$\begin{matrix}Mx=(v_{1}\cdot x)Mv_{1}+(v_{2}\cdot x)Mv_{2}\\ Mx=(v_{1}\cdot x)\sigma _{1}u_{1}+(v_{2}\cdot x)\sigma _{2}u_{2}\end{matrix}$

  從而:$\begin{matrix}Mx=u_{1}\sigma _{1}{v_{1}}^{T}x+u_{2}\sigma _{2}{v_{2}}^{T}x\\ M=u_{1}\sigma _{1}{v_{1}}^{T}+u_{2}\sigma _{2}{v_{2}}^{T}\end{matrix}$

  化簡得:$M=U\sum V^{T}$

  奇異值σ跟特徵值類似,在矩陣Σ中也是從大到小排列,而且σ的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上了。

參考資料:

  1、https://www.cnblogs.com/jian-gao/p/10781649.html

  2、https://www.zhihu.com/collection/143068858?page=1

  3、https://zhuanlan.zhihu.com/p/36546367

  4、https://www.cnblogs.com/dynmi/p/11070994.html

  5、https://www.jianshu.com/p/bcd196497d94

  6、https://zhuanlan.zhihu.com/p/32600280

這篇部落格寫的很差,裡面包含自己理解的內容很少,SVD很難理解,包括我現在也是一知半解,現在記錄下來,後面如果有機會用到了,再來回過頭來看看,爭取溫故而知