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

1、介紹

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

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

  在機器學習領域,有至關多的應用與奇異值均可以扯上關係,好比作feature reduction的PCA,作數據壓縮(以圖像壓縮爲表明)的算法,還有作搜索引擎語義層次檢索的LSI(Latent Semantic Indexing) 機器學習

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

  首先來看看向量的表示及基變換搜索引擎

  向量能夠表示爲(3,2),實際上表示線性組合:$x(1,0)^{T}+y(0,1)^{T}$spa

  

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

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

  

  基變換:數據與一個基作內積運算,結果做爲第一個新的座標份量,而後與第二個基作內積運算,結果做爲第二個新座標的份量索引

  數據(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}$get

2、特徵值分解

  在前面一篇博客詳細的理解了特徵值和特徵向量。

  若是說一個向量v是方陣A的特徵向量,那麼必定能夠表示成下面的形式子 : Av = λv

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

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

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

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

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

3、奇異值分解(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%以上了。

參考資料:

  一、http://www.javashuo.com/article/p-wsknocfc-ce.html

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

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

  四、http://www.javashuo.com/article/p-xkghdfxn-du.html

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

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

這篇博客寫的不好,裏面包含本身理解的內容不多,SVD很難理解,包括我如今也是隻知其一;不知其二,如今記錄下來,後面若是有機會用到了,再來回過頭來看看,爭取溫故而知新。

相關文章
相關標籤/搜索