如果需要小編其他數學基礎部落格,請移步小編的GitHub地址
傳送門:請點選我
如果點選有誤:https://github.com/LeBron-Jian/DeepLearningNote
這裡我打算補充一下機器學習涉及到的一些關於特徵值和特徵向量的知識點。
(注意:目前自己補充到的所有知識點,均按照自己網課視訊中老師課程知識點走的,同時一些公式是網友辛辛苦苦敲的,這裡用到那個部落格均在文末補充地址,不過這裡首先表示感謝!!)
這裡學習特徵值和特徵向量之前先說一下機器學習中特徵提取的特徵向量與矩陣的特徵向量的區別
我的理解是機器學習的特徵向量是指你所提取的特徵組成的向量(也稱為 feature vector),這個特徵可以是任意的,比如人的身高體重,頭髮的長短等,單位也是由自己決定,完全看你的需求。而矩陣的特徵向量(稱為 eigen vector)是線性代數裡的概念,是對矩陣求解特徵方程得到的向量。不過這裡我主要學習線性代數中矩陣的特徵值和特徵向量。
1,預備知識
1.1 標量
一個標量就是一個單獨的數,一般用小寫的變數名稱表示。
1.2 向量
一個向量就是一列數,這些數是有序排列的。用過次序中的索引,我們可以確定每個單獨的數。通常會賦予向量粗體的小寫名稱。當我們需要明確表示向量中的元素時,我們會將元素排列成一個方括號包圍的縱柱:
我們可以把向量看做空間中的點,每個元素是不同的座標軸上的座標。
1.3 矩陣
矩陣是二維陣列,其中的每一個元素被兩個索引而非一個所確定。我們通常會賦予矩陣粗體的大寫變數名稱,比如A。如果一個實數矩陣高度為 m,寬度為 n,那麼我們說 A屬於Rm*n。
矩陣在機器學習中非常重要,實際上,如果我們現在有N個使用者的資料,每條資料含有M個特徵,那其實它對應的就是一個N*M的矩陣;再比如,一張圖由 16*16的畫素點組成,那就是一個16*16的矩陣。
1.4 張量
幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,我們可以將標量視為零階張量,向量視為一階張量,那麼矩陣就是二階張量。
例如,可以將任意一張彩色圖片表示成一個三階張量,三個維度分別是圖片的高度,寬度和色彩資料。將這張圖用張量表示出來,就是最下面的這張表格:
其中表的橫軸表示圖片的寬度值,這裡只擷取0~319;表的縱軸表示圖片的高度值,這裡只擷取0~4;表格中每個方格代表一個畫素點,比如第一行和第一列的表格資料為 [1.0, 1.0, 1.0],代表的就是 RGB三原色在圖片的這個位置的取值情況(即R=1.0, G=1.0, B=1.0)。
當然我們還可以將這一定義繼續擴充套件,即:我們可以用四階張量表示一個包含多張圖片的資料集,這四個維度分別是:圖片在資料集中的編號,圖片高度,寬度以及色彩。
張量在深度學習中是一個很重要的概念,因為它是一個深度學習框架中的核心元件,後續的所有運算和優化演算法是基於張量進行的。
1.5 範數
有時我們需要衡量一個向量的大小。在機器學習中,我們經常使用被稱為範數(norm)的函式衡量矩陣大小,Lp範圍如下:
所以:L1 範數 ||x||:為 x 向量各個元素絕對值之和;L2 範數 ||x||2 為 x 向量各個元素平方和的開方。
1.6 方差
方差用來度量隨機變數 X 與其數學期望 E(X) 的偏離程度,公式為:
方差總數一個非負數,當隨機變數的可能值集中在數學期望的附加時,方差較小;反之方差大。由方差的大小可以推斷出隨機變數分佈的分散程度。
1.7 協方差
協方差用來刻畫兩個隨機變數 X, Y 的相關性,公式為:
如果協方差為正,說明X, Y 同向變化,協方差越大說明同向程度越高
如果協方差為負,說明X, Y反向運動,協方差越小說明反向程度越高
對於上述“同向”和“反向”的理解:
- 1,你變大,同時我也變大,說明兩個變數是同向變化的,這時協方差就是正的
- 2,你變大,同時我變小,說明兩個變數是反向變化的,這時協方差就是負的
- 3,從數值來看,協方差的數值越大,兩個變數同向程度也就越大。反之亦然
1.8 相關係數
用隨機變數X,Y的協方差除以X的標準差和Y的標準差,公式為:
相關係數也可以看成是協方差:一種剔除了兩個變數量綱,標準化後的協方差。
相關係數是一種標準化後的協方差,有以下特點:
- 1)也可以反映兩個變數變化時是同向還是反向,如果同向變化就為正,反向變化就為負
- 2)它消除了兩個變數變化幅度的影響,而只是單純反應兩個變數每單位變化時的相似程度
對於兩個隨機變數:
- 1,當他們的相關係數為1時,說明兩個變數變化時的正向相似度最大,即你變大一倍,我也變大一倍;你變小一倍,我也變小一倍。也就是完全正相關(以X, Y為橫縱座標軸,可以畫出一條斜率為正數的直線,所以X,Y是線性關係的)
- 2,隨著他們相關係數減小,兩個變數變化時的相似度也變小,當相關係數為0時,兩個變數的變化過程沒有任何相似度,也即兩個變數無關
- 3,當相關係數繼續變小,小於0時,兩個變數開始出現反向的相似度,隨著相關關係繼續變小,反向相似度會逐漸變大。
- 4,當相關係數為 -1 時,說明兩個變數變化的反向相似度最大,即,你變大一倍,我變小一倍;你變小一倍,我變大一倍。也即是完全負相關(以X, Y為橫縱座標軸,可以畫出一條斜率為負數的直線,所以X, Y也是線性關係的)
1.9 協方差矩陣
協方差只能處理二維問題,即兩個隨機變數的相關程度
維度多了就需要計算多個協方差,於是出現了協方差矩陣
協方差矩陣的每一個值就是對應下標的兩個隨機變數的協方差(即相關程度)
可以看出,協方差矩陣是一個對稱矩陣,而且對角線是各個維度的方差。
Python程式碼舉例:
import numpy as np X = np.array([[-2.1,-1,4.3],[3,1.1,0.12],[3,1.1,0.12]]) #每一行代表一個隨機變數,每列代表隨機變數的值 #[[-2.1,-1,4.3], # [3,1.1,0.12], # [3,1.1,0.12]] print(np.cov(X)) #[[ 11.71 , -4.286 , -4.286 ], # [ -4.286 , 2.14413333, 2.14413333], # [ -4.286 , 2.14413333, 2.14413333]])
2,特徵的特徵值和特徵向量的抽象理解
特徵值(eigenvalue)和特徵向量(eigenvector)具有共同字首 eigen-,其起源於德語,意為“特徵”,而Eigen的英文字意為“本證的,固有的,特有的”意思。再看一下計算特徵值所需要的特徵行列式所對應的英文單詞是 determinant,意思是“決定性的,名詞決定性因素”。
首先我們應該充分理解“特徵”的含義:對於線性代數而言,特徵向量和特徵值體現了矩陣的本質,“特徵”強調了單個矩陣的特點,相當於它的 ID card。
從線性代數的角度出發,如果把矩陣看做 n 維空間下的一個線性變換,這個變換有很多的變換方向,我們通過特徵值分解得到的前N個特徵向量,那麼就對應了這個矩陣最主要的N個變化方向。我們利用這前N個變化方向,就可以近似這個矩陣(變換)。其中的N個變化方向,就是這個矩陣最重要的“特徵”。
有了特徵的概念之後,我們又如何理解特徵值與特徵向量呢?可以做這樣的比喻:
- 1,如果把矩陣看做是位移,那麼特徵值 = 位移的速度,特徵向量 = 位移的方向
- 2,特徵向量在一個矩陣的作用下作伸縮運動,伸縮的幅度由特徵值確定(注意觀察定義式)。特徵值大於1,所有屬於此特徵值的特徵向量變長;特徵值屬於(0, 1),特徵向量縮短;特徵值小於0,特徵向量則反向延長。
3,特徵值的數學定義
3.1 特徵值和特徵向量的定義
數學定義:對於給定矩陣A,尋找一個常數 λ 和非零向量 x,使得向量 x被矩陣 A 作用後所得的向量 Ax 與原向量 x 平行,並且滿足 Ax = λx,則稱 λ 為矩陣 A 的一個特徵值(標量),X為矩陣 A 對應於特徵值的一個特徵向量(1*n)。
該式子可理解為向量 x 在幾何空間中經過矩陣 A的變換後得到向量 λx。由此可知,向量 X 經過矩陣 A 變化後,只是大小伸縮了 λ 倍。總而言之:特徵向量提供了複雜的矩陣乘法到簡單的數乘之間的轉換。
從解題角度,我們再看如何求特徵值和特徵向量:設向量 x 為矩陣 A對應於特徵值 λ 的特徵向量,即 Ax = λx,則有 (A - λI)x = 0,所以求解 x 就是求解 (A - λI)x = 0 中 x 的非零解。其中 I 為單位矩陣,因此 | λI -A) 稱為 X 的特徵多項式。
3.2 特徵值和特徵向量的推論
我們有以下推論:
其中第三個是特徵值分解公式,W為 n*n 的特徵向量矩陣(n個大小為 1*n 的特徵向量 X組成)。Σ 是包含對應特徵值的對角矩陣。根據不同的特徵值的大小,可知道每個特徵向量對應權重,即其重要性。
3.3 特徵子空間
特徵子空間(characteristic subspace)是一類重要的子空間,即對應於線性變換的一特徵值的子空間。設V是域P上的線性空間,σ 的對應於特徵值 λ0 的全體特徵向量與零向量所組成的集合。特徵空間中包含了所有的特徵向量
我們知道,對於n階方陣,可得:
而 x != 0,即齊次線性方程組(*λ)有非零解
方程組(*λ)的解空間稱為對應於 λ 的特徵子空間。
3.4 特徵多項式
設:
則稱:
為矩陣 A 的特徵多項式,記為 f(λ)。
4,特徵值和特徵向量的意義
4.1 特徵值和特徵向量的代數意義
矩陣乘法從表面來講,是前一個矩陣的行乘以後一個矩陣的列(前提是前一個矩陣的行數等於後一個矩陣的列數);它的真正含義是變換,我們學習高等代數一開始就學習行變換列變換,所以矩陣乘法就是線性變換。
再來說一下其定義,如果存在向量 Vi,常數 λi,使得以下式子成立,則稱常數 λi 為方陣A的特徵值,而向量 Vi 則是可對角化方陣 A的特徵向量:
特徵向量的代數上含義是:將矩陣乘法轉換為數乘操作;
4.2 特徵值分解的幾何意義
特徵向量的幾何上含義是:特徵向量通過方陣 A 變換變換隻進行縮放,而特徵向量的方向仍然不變。
特徵值分解可以寫成以下形式:
其中 U 是由 A 的特徵向量組成的矩陣,也是方陣,Σ 是對角矩陣,對角線上是對應的特徵值,可以對特徵向量 ui 進行正交單位化,這樣矩陣A就可以表示為以下形式:
其中 Q 為 U 進行單位正交化後的矩陣, Σ ' 還是對角矩陣,對角線上是對應的特徵值,因為 Q 中的列向量都是單位正交的,所以 QTQ = E ,從而 Q-1 = QT。
比如下面一個矩陣:
它其實對應的線性變換是下面的形式:
因為這個矩陣M乘以一個向量(x, y)的結果是:
上面的矩陣是對稱的,所以這個變換時一個對 x, y 軸的方法一個拉伸變換(每一個對角線上的元素將會對一個維度進行拉伸變換,當值 > 1,是拉伸,當值 < 1 的時候是縮短)。
下面再看另一個對稱矩陣:
此對稱矩陣,它對座標軸(正交)的影響如下:
將上面右邊的座標軸(圖中黑色十字)逆時針旋轉 45 度,將會看到:
這樣就和最開始的對角矩陣的變換類似了,在某個座標軸的方向上伸長了3倍,這次的座標軸發生了旋轉,用數學語言就是,給定一個對稱矩陣M,存在一個向量V,將M右乘向量V,將M右乘向量V,相當於將這個向量縮放了 λ 倍。式子表達如下:
MVi = λiVi
其中Vi 稱為矩陣M的特徵向量,λi 稱為矩陣M的特徵值。所以我們可以得到以下結論:
- (1) 當一個向量左乘一個對角陣時,相當於對這個向量的長度進行縮放,此處座標軸並沒有發生變化。
- (2) 當一個向量左乘一個對稱陣時,相當於對這個向量的長度進行縮放,而且對座標軸進行了選擇。
下面看一個更一般的矩陣,我們是否能將其從一組標準正交基變換到另一組正交基,當矩陣不是對稱的時候,比如說矩陣是下面的樣子:
它所描述的變化是下面的樣子:
這其實是在平面上對一個軸進行的拉伸變換(如藍色的箭頭所示),在圖中,藍色的箭頭是一個最主要的變化方向(變化的方向可能不止一個)。
此時的兩條座標軸並不是正交的,如果將右圖中的座標軸旋轉 30度,我們將會看到:
然後再對座標軸旋轉60度,將會看到
此時,兩條座標軸已經是正交的,說明對於任意的矩陣,我們都能找到一組座標軸,它由原來的座標軸通過旋轉和縮放得到。用幾何意義表達如下:
如上圖所示,對於二維矩陣M,我們總能找到一組標準正交基V1和V2,使得 MV1 和 MV2 是正交的,我們用另一組標準正交基U1和U2表示 MV1 和 MV2 的方向,這樣就將M從一組標準正交基用另一組標準正交基來表示。
注意:標準正交基
線上性代數中,一個內積空間的正交基(orthogonal basis)是元素兩兩正交的基,稱基中的元素為基向量。假若一個正交基的基向量的模長都是單位長度 1,則稱這正交基為標準正交基或規範正交基。
5,特徵向量的應用
既然特徵值表達了重要程度且和特徵向量所對應,那麼特徵值大的就是主要資訊了,基於這點我們可以提取各種有價值的資訊了!我們都知道線性代數中,左乘一個矩陣是對應著行變換,右乘一個矩陣對應列變換,其實際的作用也就是對常規座標系進行了遷移。那麼對於在普通二維座標下的向量 x ,它在矩陣 A 描述空間中的表示與自己單純的進行拉伸或縮放的效果是一致的,滿足這種特殊性的 X 就是特徵矩陣,對應的拉伸量 λ 就是特徵值。
有了這個特殊的性質,特徵值與特徵向量出現在很多有矩陣運算的地方,如主成分分析(PCA),奇異值分解(SVD) 等機器學習方法中。
影像處理中的 PCA 降維方法(最著名的),選取特徵值最高的 k個特徵向量來表示一個矩陣,從而達到降維分析 + 特徵顯示的方法,還有影像壓縮的 K-L 變換。再比如很多人臉識別,資料流模式挖掘分析等方面。
如上圖所示,原圖如左圖所示,提取最重要的n個特徵來表示,我們發現仍然可以顯示這個圖的主要特徵。
6,矩陣特徵值的一般求解
6.1 特徵值的求解步驟
特徵值的求解過程如下:
- 1,計算特徵多項式 |A - λE|
- 2,求 |A - λE| = 0 的所有根,即 A 的所有特徵值
- 3,對於每個特徵值 λ0,求解齊次線性方程組 (A - λ0E)x = 0 的一個基礎解系 ξ1....ξt,則 x=k1ξ1 + .....+ ktξt 為 A 對應於 λ0 的全部特徵向量(k1, ...kt 不全為0)
6.2 求矩陣 A 的特徵值和特徵向量
矩陣A如下:
我們首先求其特徵多項式,通過其特徵方程,求解特徵值。
則特徵值為 λ =2, 1。
然後把每個特徵值 λ 代入線性方程組 (A - λE)x = 0中,求出基礎解系。
當 λ = 2 時,解線性方程組 (A - 2E)x = 0,如下:
當 λ = 1 時,解線性方程組 (A - E)x = 0,如下:
7,通過特徵值和特徵向量進行PCA降維
7.1 PCA降維的演算法步驟
設有 m 條 n 維資料:
- 1,將原始資料按照列組成 n 行 m 列矩陣 X
- 2,將 X 的每一行進行零均值化(去平均值),即減去這一行的均值
- 3,求出協方差矩陣 C = 1/m*X*XT
- 4,求出協方差矩陣的特徵值以及對應的特徵向量
- 5,將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前 k 行組成的矩陣P(保留最大的 k 的各特徵向量)
- 6,Y = PX 即為降維到K維後的資料
7.2 PCA 降維的計算例項
1,原始資料集矩陣X:
2,均值為(2, 3),求均值後:
3,再求協方差矩陣(C= 1/m*X*XT):
4,特徵值:
通過協方差矩陣C的特徵方程,求出特徵值:
得到:
5,求出對應的一組特徵向量:
把每個特徵值代入線性方程組(A - λE)x =0,求出其基礎解系,並得到一組特徵向量。
6,標準化:
7,選擇較大特徵值對應的特徵向量:
8,執行PCA變換:Y=PX 得到的Y就是PCA降維後的值 資料集矩陣:
8,通過特徵值和特徵向量進行SVD 計算
8.1 SVD分解步驟
首先,我們展示一下SVD分解的公式:
進行SVD分解的步驟就是:
1,求U(U中的每個特徵向量叫做A的左奇異向量)
從下面公式我們可以發現,AAT的特徵向量組成的就是U向量:
2,求V(V中的每個特徵向量叫做A的右奇異向量)
從下面公式我們可以發現:ATA 的特徵向量組成的就是V矩陣:
3,求Σ
所以先求出ATA和 AAT,進而求出ATA和 AAT 的特徵值和特徵向量,然後得到U和V,最後通過 σi = √λi 直接求出奇異值,然後代入我們上面的奇異值分解公式,得到奇異值分解。
8.2 SVD計算例項
我們需要進行奇異值分解的矩陣A如下:
我們首先求出 ATA和 AAT:
進行求出 ATA 的特徵值和特徵向量:
接著求 AAT 的特徵值和特徵向量:
利用 Avi=σiui,i=1,2 求奇異值:
當然,我們也可以用 σi = √λi 直接求出奇異值為 √3 和 1。
最終得到 A 的奇異值分解為:
參考地址:
https://zhuanlan.zhihu.com/p/165382601
https://zhuanlan.zhihu.com/p/36584206
https://zhuanlan.zhihu.com/p/126102942
https://www.zhihu.com/question/29589753/answer/1635329454
https://www.zhihu.com/search?type=content&q=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%89%B9%E5%BE%81%E5%80%BC%E5%92%8C%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F%E7%9A%84%E7%9F%A5%E8%AF%86%E7%82%B9%E3%80%82