傳送門:請點擊我git
若是點擊有誤:https://github.com/LeBron-Jian/DeepLearningNotegithub
這裏我打算補充一下機器學習涉及到的一些關於特徵值和特徵向量的知識點。算法
(注意:目前本身補充到的全部知識點,均按照本身網課視頻中老師課程知識點走的,同時一些公式是網友辛辛苦苦敲的,這裏用到那個博客均在文末補充地址,不過這裏首先表示感謝!!)數組
這裏學習特徵值和特徵向量以前先說一下機器學習中特徵提取的特徵向量與矩陣的特徵向量的區別框架
個人理解是機器學習的特徵向量是指你所提取的特徵組成的向量(也稱爲 feature vector),這個特徵能夠是任意的,好比人的身高體重,頭髮的長短等,單位也是由本身決定,徹底看你的需求。而矩陣的特徵向量(稱爲 eigen vector)是線性代數裏的概念,是對矩陣求解特徵方程獲得的向量。不過這裏我主要學習線性代數中矩陣的特徵值和特徵向量。機器學習
一個標量就是一個單獨的數,通常用小寫的變量名稱表示。 函數
一個向量就是一列數,這些數是有序排列的。用過次序中的索引,咱們能夠肯定每一個單獨的數。一般會賦予向量粗體的小寫名稱。當咱們須要明確表示向量中的元素時,咱們會將元素排列成一個方括號包圍的縱柱:學習
咱們能夠把向量看作空間中的點,每一個元素是不一樣的座標軸上的座標。優化
矩陣是二維數組,其中的每個元素被兩個索引而非一個所肯定。咱們一般會賦予矩陣粗體的大寫變量名稱,好比A。若是一個實數矩陣高度爲 m,寬度爲 n,那麼咱們說 A屬於Rm*n。spa
矩陣在機器學習中很是重要,實際上,若是咱們如今有N個用戶的數據,每條數據含有M個特徵,那其實它對應的就是一個N*M的矩陣;再好比,一張圖由 16*16的像素點組成,那就是一個16*16的矩陣。
幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,咱們能夠將標量視爲零階張量,矢量視爲一階張量,那麼矩陣就是二階張量。
例如,能夠將任意一張彩色圖片表示成一個三階張量,三個維度分別是圖片的高度,寬度和色彩數據。將這張圖用張量表示出來,就是最下面的這張表格:
其中表的橫軸表示圖片的寬度值,這裏只截取0~319;表的縱軸表示圖片的高度值,這裏只截取0~4;表格中每一個方格表明一個像素點,好比第一行和第一列的表格數據爲 [1.0, 1.0, 1.0],表明的就是 RGB三原色在圖片的這個位置的取值狀況(即R=1.0, G=1.0, B=1.0)。
固然咱們還能夠將這必定義繼續擴展,即:咱們能夠用四階張量表示一個包含多張圖片的數據集,這四個維度分別是:圖片在數據集中的編號,圖片高度,寬度以及色彩。
張量在深度學習中是一個很重要的概念,由於它是一個深度學習框架中的核心組件,後續的全部運算和優化算法是基於張量進行的。
有時咱們須要衡量一個向量的大小。在機器學習中,咱們常用被稱爲範數(norm)的函數衡量矩陣大小,Lp範圍以下:
因此:L1 範數 ||x||:爲 x 向量各個元素絕對值之和;L2 範數 ||x||2 爲 x 向量各個元素平方和的開方。
方差用來度量隨機變量 X 與其數學指望 E(X) 的偏離程度,公式爲:
方差總數一個非負數,當隨機變量的可能值集中在數學指望的附加時,方差較小;反之方差大。由方差的大小能夠推斷出隨機變量分佈的分散程度。
協方差用來刻畫兩個隨機變量 X, Y 的相關性,公式爲:
若是協方差爲正,說明X, Y 同向變化,協方差越大說明同向程度越高
若是協方差爲負,說明X, Y反向運動,協方差越小說明反向程度越高
對於上述「同向」和「反向」的理解:
用隨機變量X,Y的協方差除以X的標準差和Y的標準差,公式爲:
相關係數也能夠當作是協方差:一種剔除了兩個變量量綱,標準化後的協方差。
相關係數是一種標準化後的協方差,有如下特色:
對於兩個隨機變量:
協方差只能處理二維問題,即兩個隨機變量的相關程度
維度多了就須要計算多個協方差,因而出現了協方差矩陣
協方差矩陣的每個值就是對應下標的兩個隨機變量的協方差(即相關程度)
能夠看出,協方差矩陣是一個對稱矩陣,並且對角線是各個維度的方差。
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]])
特徵值(eigenvalue)和特徵向量(eigenvector)具備共同前綴 eigen-,其起源於德語,意爲「特徵」,而Eigen的英文本意爲「本證的,固有的,特有的」意思。再看一下計算特徵值所須要的特徵行列式所對應的英文單詞是 determinant,意思是「決定性的,名詞決定性因素」。
首先咱們應該充分理解「特徵」的含義:對於線性代數而言,特徵向量和特徵值體現了矩陣的本質,「特徵」強調了單個矩陣的特色,至關於它的 ID card。
從線性代數的角度出發,若是把矩陣看作 n 維空間下的一個線性變換,這個變換有不少的變換方向,咱們經過特徵值分解獲得的前N個特徵向量,那麼就對應了這個矩陣最主要的N個變化方向。咱們利用這前N個變化方向,就能夠近似這個矩陣(變換)。其中的N個變化方向,就是這個矩陣最重要的「特徵」。
有了特徵的概念以後,咱們又如何理解特徵值與特徵向量呢?能夠作這樣的比喻:
數學定義:對於給定矩陣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 的特徵多項式。
咱們有如下推論:
其中第三個是特徵值分解公式,W爲 n*n 的特徵向量矩陣(n個大小爲 1*n 的特徵向量 X組成)。Σ 是包含對應特徵值的對角矩陣。根據不一樣的特徵值的大小,可知道每一個特徵向量對應權重,即其重要性。
3.3 特徵子空間
特徵子空間(characteristic subspace)是一類重要的子空間,即對應於線性變換的一特徵值的子空間。設V是域P上的線性空間,σ 的對應於特徵值 λ0 的全體特徵向量與零向量所組成的集合。特徵空間中包含了全部的特徵向量
咱們知道,對於n階方陣,可得:
而 x != 0,即齊次線性方程組(*λ)有非零解
方程組(*λ)的解空間稱爲對應於 λ 的特徵子空間。
3.4 特徵多項式
設:
則稱:
爲矩陣 A 的特徵多項式,記爲 f(λ)。
矩陣乘法從表面來說,是前一個矩陣的行乘之後一個矩陣的列(前提是前一個矩陣的行數等於後一個矩陣的列數);它的真正含義是變換,咱們學習高等代數一開始就學習行變換列變換,因此矩陣乘法就是線性變換。
再來講一下其定義,若是存在向量 Vi,常數 λi,使得如下式子成立,則稱常數 λi 爲方陣A的特徵值,而向量 Vi 則是可對角化方陣 A的特徵向量:
特徵向量的代數上含義是:將矩陣乘法轉換爲數乘操做;
特徵向量的幾何上含義是:特徵向量經過方陣 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的特徵值。因此咱們能夠獲得如下結論:
下面看一個更通常的矩陣,咱們是否能將其從一組標準正交基變換到另外一組正交基,當矩陣不是對稱的時候,好比說矩陣是下面的樣子:
它所描述的變化是下面的樣子:
這實際上是在平面上對一個軸進行的拉伸變換(如藍色的箭頭所示),在圖中,藍色的箭頭是一個最主要的變化方向(變化的方向可能不止一個)。
此時的兩條座標軸並非正交的,若是將右圖中的座標軸旋轉 30度,咱們將會看到:
而後再對座標軸旋轉60度,將會看到
此時,兩條座標軸已是正交的,說明對於任意的矩陣,咱們都能找到一組座標軸,它由原來的座標軸經過旋轉和縮放獲得。用幾何意義表達以下:
如上圖所示,對於二維矩陣M,咱們總能找到一組標準正交基V1和V2,使得 MV1 和 MV2 是正交的,咱們用另外一組標準正交基U1和U2表示 MV1 和 MV2 的方向,這樣就將M從一組標準正交基用另外一組標準正交基來表示。
注意:標準正交基
在線性代數中,一個內積空間的正交基(orthogonal basis)是元素兩兩正交的基,稱基中的元素爲基向量。倘若一個正交基的基向量的模長都是單位長度 1,則稱這正交基爲標準正交基或規範正交基。
既然特徵值表達了重要程度且和特徵向量所對應,那麼特徵值大的就是主要信息了,基於這點咱們能夠提取各類有價值的信息了!咱們都知道線性代數中,左乘一個矩陣是對應着行變換,右乘一個矩陣對應列變換,其實際的做用也就是對常規座標系進行了遷移。那麼對於在普通二維座標下的向量 x ,它在矩陣 A 描述空間中的表示與本身單純的進行拉伸或縮放的效果是一致的,知足這種特殊性的 X 就是特徵矩陣,對應的拉伸量 λ 就是特徵值。
有了這個特殊的性質,特徵值與特徵向量出如今不少有矩陣運算的地方,如主成分分析(PCA),奇異值分解(SVD) 等機器學習方法中。
圖像處理中的 PCA 降維方法(最著名的),選取特徵值最高的 k個特徵向量來表示一個矩陣,從而達到降維分析 + 特徵顯示的方法,還有圖像壓縮的 K-L 變換。再好比不少人臉識別,數據流模式挖掘分析等方面。
如上圖所示,原圖如左圖所示,提取最重要的n個特徵來表示,咱們發現仍然能夠顯示這個圖的主要特徵。
特徵值的求解過程以下:
矩陣A以下:
咱們首先求其特徵多項式,經過其特徵方程,求解特徵值。
則特徵值爲 λ =2, 1。
而後把每一個特徵值 λ 代入線性方程組 (A - λE)x = 0中,求出基礎解系。
當 λ = 2 時,解線性方程組 (A - 2E)x = 0,以下:
當 λ = 1 時,解線性方程組 (A - E)x = 0,以下:
設有 m 條 n 維數據:
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降維後的值 數據集矩陣:
首先,咱們展現一下SVD分解的公式:
進行SVD分解的步驟就是:
1,求U(U中的每一個特徵向量叫作A的左奇異向量)
從下面公式咱們能夠發現,AAT的特徵向量組成的就是U向量:
2,求V(V中的每一個特徵向量叫作A的右奇異向量)
從下面公式咱們能夠發現:ATA 的特徵向量組成的就是V矩陣:
3,求Σ
因此先求出ATA和 AAT,進而求出ATA和 AAT 的特徵值和特徵向量,而後獲得U和V,最後經過 σi = √λi 直接求出奇異值,而後代入咱們上面的奇異值分解公式,獲得奇異值分解。
咱們須要進行奇異值分解的矩陣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