技術站搬運工:來自BrianWang的技術站:PCA的一大數學基礎:求矩陣的特徵值特徵向量
02-22
主成分分析(PCA)有一個十分關鍵的數學基礎。那就是求解矩陣的特徵值及特徵向量。其實這個東西,求特徵值和特徵向量在量子力學,量子化學,計算機視覺中也有大量的應用。其實作為一個數學工具求特徵值和特徵向量並不難,只是這是一個比較容易迷糊的地方。同時另一方面,求解特徵值和特徵向量有著非常強大的數學及幾何意義。我們現在就對這一方法進行一個小小的總結。並且提供可以求解任意矩陣特徵值的python代碼。特徵值(eigen-value)與特徵向量(eigen-vector)中的eigen,其實是一個德語單詞,意思是「自身的,本徵的(請注意慎重和量子力學裡的「本徵」聯想)。」這是20世紀初偉大的數學家希爾伯特所給的定義。希爾伯特曾經說過,偉大的數學進步,是從「問題」開始的,那麼,我們既然要搞清楚特徵值和特徵矩陣,就不妨從一個問題開始吧。需要的知識只是一點點:矩陣的乘法的定義。我們現在在空間中有一個給定的向量,n(這個向量在後面被稱為特徵向量,eigenvector)。我們現在取一個矩陣A(這個矩陣在後面會被成為特徵矩陣)。求解A·n我們可以得到一個新的矩陣n。假如我們所求得的新矩陣n與原來的矩陣n在同一個方向上(幾何意義),那麼自然會有表達式n=λn成立。其中的λ我們稱為特徵值(eigenvalue)。另外,在這個地方,characteristic和eigen是同一個意思。
推薦閱讀:
換成表達式形式:
定義 設A是n階方陣,如果數λ和n維非零列向量x使關係式Ax=λx (1)成立,那麼這樣的數λ稱為矩陣A特徵值,非零向量x稱為A的對應於特徵值λ的特徵向量.(1)式也可寫成,( A-λE)X=0 (2)
仔細想一想。這是一件非常偉大的事情啊!原本是用矩陣乘法才能做到的事情被我們用一個小小的數乘就做到了。我們也可以從另一個角度思考一下這個問題。我們在空間中存在一個二維向量,我們只需要用一個矩陣(好比是一個力,或者F/m是加速度),就可以將二維向量的大小和方向全部改變。也因此,在理論力學中矩陣演算法被大量應用。而其中兩種特殊情況,即大小改變,但方向不變或者反轉(仍然維持在同一條直線上),就是我們所要研究的特殊情況:特徵向量與特徵值。與此同時,我們也可以將這種思路引入圖像處理問題。仔細想一想:我們也可以用這種矩陣表達式去描繪圖像的放大,縮小,旋轉和翻轉!類似的演算法在數字圖像處理的相關書籍中可以說是連篇累牘。有興趣的話可以參考岡薩雷斯,或英國巴斯大學的書。好,我們回到我們的問題當中來。我們能獲得一個方程:An=λn。我們現在來分析這個方程。我們可以將他換成另一個形式:
(A-λE)n=0(注意E是一個全部elements等於1的對角矩陣,不要忘了否則表達式形式不對)。恰好經過前代數學家的嚴格分析(我們略去不講,感興趣的朋友參考任何一本大學線性代數教材都可以查到),上式成立有一個充要條件:det|A-λE|=0。好,那麼我想接下來的問題就十分容易解決了。行列式求解是一套非常系統的方法。按照標準的流程去操作即可。請注意這個表達式不一定保證實數解。有可能會出現含有虛數解的情況。關於這一問題,更深層次的探討請參閱任何一本高等代數教材。我想以上的部分足夠我們在PCA的分析中應用了。在這個地方還需要著重強調一個問題。對於特徵方程來說,在一些情況下,根據變換A,以及空間的性質,我們可以將特徵值方程,表示成一組微分方程。我在這裡也想談我本人學習數學的一點心得。我不是專業學數學的。所以我有一個習慣。我會把很多的數學知識在腦子裡面按照「樹」的結構去存儲。我會儘力拓寬知識的廣度,不追求過分精確嚴格的定義。在我需要的時候現場學習補充知識就足夠了。其實作為非數學專業(其實也包括統計和物理專業)的同學,不一定將大量的時間和精力投資在繁瑣嚴格的數學證明上面。追求「道」而非「術,」遵循「氣宗」而非「劍宗」未必不是好的思路和方法。
好我們關於這個問題講兩個應用吧。第一個是量子力學中的薛定諤方程。量子力學中不含時且非相對論情況的薛定諤方程寫法是:http://photo.blog.sina.com.cn/showpic.html#blogid=1762e50400102wvtj&url=http://album.sina.com.cn/pic/006QQEbmzy7bY64DCnv11其中H是Hamilton運算元,一個二階微分運算元。H右邊的那個玩意發音叫pu sai,就是波函數的意思。用這個玩意描述微觀粒子的運動。E代表能量。我們把問題進行一個限定(其實求解薛定諤方程的一個核心思路就是在許多繁雜的定義下進行簡化):我們只需要bound state的結果。問題中的空間是一個希爾伯特空間。我們可以在這種情況中引入一個基集合。這種情況下,pu sai就是一個一維數組,而H就是一個可以用完全的線性代數系統描述的矩陣。
那麼,薛定諤方程在不含時,非相對論,只要束縛態解的情況下,自然就是一個很簡單的求矩陣特徵值特徵向量的問題了。第二個是求特徵臉。想了想我準備在這裡買個關子。後面寫一組python或者Julia的代碼來給大家展示一下求特徵臉。推薦閱讀:
※基於NLP的股價預測
※複習:決策樹
※課程安利:用物理學的眼光看機器學習--Deep Learning and Quantum Many-BodyComputation
※Paper Reading | 讓深度學習更高效運行的兩個視角
※【最優化】無約束優化方法-阻尼牛頓法