從矩陣(matrix)角度討論PCA(Principal Component Analysis 主成分分析)、SVD(Singular Value Decomposition 奇異值分解)相關原理

0. 引言

本文主要的目的在於討論PAC降維和SVD特徵提取原理,圍繞這一主題,在文章的開頭從涉及的相關矩陣原理切入,逐步深刻討論,但願可以學習這一領域問題的讀者朋友有幫助。html

這裏推薦Mit的Gilbert Strang教授的線性代數課程,講的很是好,循循善誘,深刻淺出。算法

Relevant Link:  數組

Gilbert Strang教授的MIT公開課:數據分析、信號處理和機器學習中的矩陣方法
https://mp.weixin.qq.com/s/gi0RppHB4UFo4Vh2Neonfw

 

1. 可逆矩陣

0x1:可逆矩陣的基本概念

對於數域K上的矩陣A,若是存在數域K上的矩陣B,使得:機器學習

則稱A是可逆矩陣(或非奇異矩陣)。svg

若是A是可逆矩陣,則適合上式的矩陣B稱爲A的逆矩陣,記做函數

0x2:可逆矩陣的基本性質

1. 可逆矩陣是互爲可逆的(可交換)

若是A是可逆矩陣,則它又逆矩陣使得:性能

從上式可看出,也是可逆矩陣,而且:學習

2. 可逆矩陣必定是方陣

從矩陣可逆的公式能夠看出,A與B可交換,所以可逆矩陣必定都是方陣。優化

3. 矩陣的逆矩陣若是存在,必定是惟一的

利用反證法,假如還有矩陣B1也適合上式,則:編碼

所以,B1 = B。

4. 若是n級矩陣A,B均可逆,則AB也可逆

而且:

5. 矩陣的逆和矩陣的轉置知足交換律

若是A可逆,則A'也可逆,而且:

6. 可逆矩陣通過初等行變換化成的簡化行階梯矩陣必定是單位矩陣 I

7. 用一個可逆矩陣去左(右)乘矩陣A,不改變A的秩rank()

0x3:可逆矩陣的充分必要條件

1. 行列式判別法

數據K上n級矩陣A可逆的充分必要條件是: 。

值得注意的是,也是矩陣對應線性方程組有解的充要條件。

2. 矩陣秩判別法

n級矩陣A可逆的充分必要條件是 rank(A) = n,即A爲滿秩矩陣。

3. 向量組線性相關性判別法

數據K上n級矩陣A可逆的充分必要條件是A的行(列)向量組線性無關。 

4. 矩陣A可逆的充分必要條件是它能夠表示成一些初等矩陣的乘積

充分性:設A能夠表示成一些初等矩陣的乘積,因爲初等矩陣均可逆,由於他們的乘積A也可逆。

必要性:設A可逆,則A通過初等行變換化成的簡化行階梯矩陣必定是單位矩陣I,所以有初等矩陣,使得

所以

因爲初等矩陣的逆矩陣還是初等矩陣,所以上式代表:矩陣A能夠表示爲一些初等矩陣的乘積。

0x4:逆矩陣求解方法

1. 伴隨矩陣法

當矩陣A可逆時,

上式給出了求逆矩陣的一種方法,稱之爲伴隨矩陣法

2. 初等變換化簡法

有的時候,當矩陣的階數比較高的時候,使用其行列式的值和伴隨矩陣求解其逆矩陣會產生較大的計算量。這時,咱們能夠採用初等變換法進行逆矩陣求解。

設A是n級可逆矩陣,根據可逆矩陣性質,咱們知道,有初等矩陣,使得:

因此又有:

從上式能夠看出,若是有一系列初等行變換把A化成了單位矩陣I,那麼一樣的這些初等行變換就把I化成了

所以咱們能夠把A與I並排放在一塊兒,組成一個nx2n級矩陣(A,I),對(A,I)做一系列初等行變換,把它的左半部分化成I,這時的右半部分就是,即:

這種求逆矩陣的方法稱爲初等變換法,這時最經常使用的方法。

0x5:線性迴歸模型參數求解的一種方式 - 逆矩陣求解法

在線性迴歸模型中,根據最小二乘求解公式,咱們有:

在滿秩狀況下(知足數據點個數>特徵數量),係數求解等價於存在一個簡單的閉式矩陣解,使得最小二乘最小化。由下式給出:

其中,是矩陣的逆矩陣,令,則最終學得的多元線性迴歸模型爲:

能夠看到,參數求解的本質就是矩陣乘法,矩陣求逆等操做。

固然,須要指出的是,對於linear regression model來講,一樣可使用GD梯度降低的方式進行參數求解,感興趣的讀者朋友能夠下載sklearn的內核源代碼進行一對一的分析,能夠得到更直觀的體驗。

Relevant Link:  

https://www.cnblogs.com/LittleHann/p/10498579.html#_label3_1_2_1 
https://wenku.baidu.com/view/1963472d9a6648d7c1c708a1284ac850ad0204ad.html

 

2. 正交矩陣

0x1:正交矩陣的基本概念

在平面上取一個直角座標系Oxy,設向量a,β的座標分別是(a1,a2),(b1,b2)。若是a,β都是單位向量,而且互相垂直,則他們的座標知足:

上述4個等式能夠寫成一個矩陣形式:

設矩陣A的第1,2行分別是a,β的座標,則上面矩陣形式能夠重寫爲:

咱們把知足這種特性的矩陣A稱爲正交矩陣

通常的,若是是實數域上的方陣A知足:,則稱A是正交矩陣

0x2:正交矩陣的基本性質

1. 單位矩陣 I 是正交矩陣

2. 若A與B都是n級正交矩陣,則AB也是正交矩陣

若A,B都是正交矩陣,則有下式:

所以AB也是正交矩陣。

3. 若A是正交矩陣,則也是正交矩陣

4. 若A是正交矩陣,則 |A| =1 或 -1 

若A是正交矩陣,則,從而,由於轉置不概念行列式,即

因此,|A| = 1,或者 -1。

5. 實數域上n級矩陣A是正交矩陣的充要條件爲:A的行(列)向量組是歐幾里得空間Rn的一個標準正交基

該定理告訴咱們,構建正交矩陣等價於求標準正交基,許多實際問題須要構造正交矩陣,因而咱們要設法求標準正交基。

0x3:正交矩陣由一組正交單位行(列)向量組成

設實數域上n級矩陣A的行向量組爲,列向量組爲,則:

(1)A爲正交矩陣當且僅當A的行向量知足下式:

(2)A爲正交矩陣當且僅當A的列向量組知足下式:

咱們引用一個符號,它的含義是:

稱爲Kronecker(克羅內克)記號,採用這個符號,上面兩式能夠分別寫成:

從上式能夠看到,從行向量和列向量的角度,正交矩陣都知足上面的定理。

這兩組式子的左端都是兩個n元有序數組的對應元素的乘積之和。與幾何空間中兩個向量的內積在直角座標系中的計算公式類似。所以,咱們能夠在實數域上的n維向量空間也引入內積的概念。

0x4:向量組標準內積

1. 標準內積公式

中,任給兩個向量組,規定

這個二元實值函數(a,β)稱爲的一個內積,一般稱這個內積爲的標準內積

上式也能夠簡寫爲:

2. 標準內積基本性質

對一切,有下列幾個性質

1)對稱性:(a,β)= (β,a)

2)線性性之一:(a+γ,β)=(a,β)+(γ,β)

3)線性性之二:(ka,β)= k(a,β) 

4)正定性:(a,a)>=0,等號成立當且僅當 a=0

0x5:歐幾里得空間 

n維向量空間有了標準內積後,就稱爲一個歐幾里得空間

在歐幾里得空間中,向量a的長度 |a| 規定爲:

長度爲1的向量稱爲單位向量,a是單位向量的充要條件是

由於,因而對於必定是單位向量。

把非零向量 a 乘以,稱爲把a單位化。

0x6:正交向量組

1. 正交向量組基本定義

在歐幾里得空間中,若是,則稱a與β是正交的,記做

在歐幾里得空間中,由非零向量組成的向量組若是其中每兩個不一樣的向量都彼此正交,則稱它們是正交向量組

特別的,僅由一個非零向量組成的向量組也是正交向量組。

同時,若是正交向量組的每一個向量都是單位向量,則稱它爲正交單位向量組

2. 正交向量組基本性質

歐幾里得空間中,正交向量組必定是線性無關的。

證實:

是正交向量組,設

把上式兩端的向量都與做內積,得:

因爲,當 j != i 時,所以上式得:

因爲,所以,從而得:

根據線性相關基本定理,線性無關。

3. 正交基

歐幾里得空間中,n個向量組成的正交向量組必定是的一個基,稱它爲正交基。n個單位向量組成的正交向量組稱爲的一個標準正交基。 

Relevant Link:  

https://baike.baidu.com/item/%E6%96%BD%E5%AF%86%E7%89%B9%E6%AD%A3%E4%BA%A4%E5%8C%96/756386?fr=aladdin
《建明線性代數》丘維聲

 

3. 矩陣的相抵與類似

0x1:矩陣的相抵

1. 矩陣相抵的基本定義

若是矩陣A能夠通過一系列初等行變換與初等列變換變成矩陣B,則稱A與B是相抵的(或等價),記做

因爲矩陣的初等行(列)變換能夠經過初等矩陣與矩陣的乘法來實現,而且一個矩陣可逆的充要條件是它能表示成一些初等矩陣的乘積,所以:

s x n 矩陣A與B相抵,等價於:

→ A通過初等行變換和初等列變換變成B;

→ 存在s級初等矩陣與n級初等矩陣,使得:

→ 存在s級可逆矩陣P與n級可逆矩陣Q,使得:

2. 矩陣相抵的基本性質

s x n 矩陣之間的相抵關係具備下述性質

1)反身性:任一矩陣A與自身相抵;

2)對稱性:若是A與B相抵,則B與A相抵;

3)傳遞性:若是A與B相抵,B與C相抵,則A與C相抵;

0x2:矩陣的類似

1. 矩陣類似的基本定義

設A與B都是數域K上n級矩陣(注意,必須是n級方陣才存在類似矩陣),若是存在數域K上的一個n級可逆矩陣U,使得

則稱A與B是類似的,或說B是A的類似矩陣,記做

2. 矩陣類似的基本性質

數域K上n級矩陣之間的類似關係具備下列性質:

1)反身性:任一 n 級矩陣A與自身類似;

2)對稱性:若是,則

3)傳遞性:若是,則

4)類似的矩陣其行列式的值相同

5)類似的矩陣或者均可逆,或者都不可逆

而且當它們可逆時,它們的逆矩陣也類似

6)類似的矩陣有相同的秩

7)類似的矩陣又相同的跡

n級矩陣A的主對角線上元素的和稱爲A的跡,記做tr(A)

3. 矩陣的類似數學本質 

先拋出結論:同一個線性變換,不一樣基下的矩陣,稱爲類似矩陣

這個結論不容易簡單闡述清楚,咱們先從一些簡單的概念開始,逐步切入概念。上面說到不一樣基下的矩陣,那什麼是不一樣向量基呢?即什麼是向量基變換呢?

1)什麼是向量基變換

咱們經過一個簡單的例子來直觀地說明什麼是座標(向量基)變換。

座標轉換是數學中的經常使用手段,目的是簡化運算,提升可視化理解程度。好比常見的,把直角座標系(xy座標系)的圓方程,換元爲極座標(\rho\theta座標系):

下圖展現了換元先後的函數形式:

從直觀上看,換元后的代數式和圖像都變簡單了。從線性方程角度,換元將原方程從非線性空間轉換到了線性空間。

2)矩陣表明了一種基下的一種線性變換

線性函數y=x能夠認爲是把(a,0)點映射到(0,a)點,咱們稱爲線性變換T,記做:

T:(a,0)\to(0,a),a\in\mathbb{R},b\in\mathbb{R}

該線性變換矩陣的形式以下:

進一步推廣開來,只要替換(a,0)爲平面內全部的點(a,b),咱們就能夠對整個平面作變換,該線性變換記做:

進而能夠寫做矩陣的形式:

咱們記:

\vec{y_{}}=\begin{pmatrix}b\\a\end{pmatrix}\qquad\vec{x_{}}=\begin{pmatrix}a\\b\end{pmatrix}\qquad A=\begin{pmatrix}0&1\\1&0\end{pmatrix}

咱們能夠獲得更簡便的記法:

\vec{y_{}}=A\vec{x_{}}

下圖用淡藍色網格來表示這個線性變換(這個變換實際上鏡面反轉):

上面的討論中,可能讀者朋友以爲很是天然,這是由於咱們在高中、大學的學習中,對直角座標系已經很是熟悉了,頭腦中也已經創建了很是直觀感性的空間想象能力。

其實在前面的討論中隱含了一個特徵重要的信息,就是座標系(向量基)

y=x是基於直角座標系的(標準正交基)

標準正交基是\{\vec{i_{}}=\begin{pmatrix}1\\0\end{pmatrix},\vec{j_{}}=\begin{pmatrix}0\\1\end{pmatrix}\},它們所張成的線性空間以下:

經過這個轉換:

y=x\to A=\begin{pmatrix}0&1\\1&0\end{pmatrix}

獲得的A也是基於直角座標系的

3)類似矩陣 - 不一樣基下的相同線性變換 

咱們先來講明不一樣基下的矩陣的變換思路:

上圖中:

  • V_1:\{\vec{i_{}},\vec{j_{}}\}和  V_2:\{\vec{i'},\vec{j'}\}:表明兩個不一樣的向量基;
  • V1\to V2:表明了向量基V1經過某種線性變換,轉換爲向量基V1,能夠經過 P^{-1}轉換;
  • V2\to V1:同上,能夠經過 P轉換;
  • \vec{v'}V2下的點;
  • \vec{v'}經過P變爲V1下的點,即P\vec{v'}
  • V1下,經過A矩陣完成線性變換,即AP\vec{v'}
  • 經過P^{-1}從變回V2下的點,即P^{-1}AP\vec{v'}

綜上,咱們能夠有:

B\vec{v'}=P^{-1}AP\vec{v'}

即矩陣A和矩陣B是能夠互相轉化的,它們是同一個線性變換在不一樣向量基下的不一樣表現形式。

推廣到通常狀況,咱們能夠認爲,:

B=P^{-1}AP

那麼BA互爲類似矩陣。

4)獲得類似矩陣經歷的類似變換本質上是對向量基的變換

繼續來討論類似矩陣公式: 

B=P^{-1}AP

前面說到,P表明了向量基轉換V2\to V1,上個小節一筆帶過了,這個小節咱們來詳細討論下這個轉換是如何完成的。

首先給出咱們空間中的一點,例如m點:

不論有沒有向量基,這個點都是客觀存在的。

而後,咱們定義V2的向量基,\vec{i'},\vec{j'},以後,咱們給出m點在\vec{i'},\vec{j'}的座標\vec{v'}

重寫\vec{v'}在該向量基下的表示:

\vec{v'}=\begin{pmatrix}a\\b\end{pmatrix}=a\vec{i'}+b\vec{j'}

如今咱們來看另外一個向量基V1,假設咱們知道了\vec{i'},\vec{j'}在V1,\vec{i},\vec{j}下的座標(以下圖所示): 

那麼將V1下的座標帶入原式:


\begin{aligned}
    \vec{v'} & = a\vec{i'}+b\vec{j'}\\
             & = a(c\vec{i}+d\vec{j})+b(e\vec{i}+f\vec{j})
\end{aligned}

此時,實際上m點的座標,已經從V2變到了V1向量基\vec{i},\vec{j}下的\vec{v}

轉換爲矩陣形式:

因此P其實就是:

P=\begin{pmatrix}\vec{i'}&\vec{j'}\end{pmatrix},式中,上\vec{i'},\vec{j'}是在\vec{i},\vec{j}下的座標(向量基)。

由此能夠看到,P實際上表明瞭一種對向量基的轉換,或者說是向量基的映射。 

Relevant Link:  

https://www.matongxue.com/madocs/491.html

 

4. 矩陣特徵值、特徵向量

0x1:特徵值、特徵向量的定義

設A是數域K上的n級矩陣,若是中有非零列向量a,使得,則稱是A的一個特徵值,稱a是A的屬於特徵值的一個特徵向量

例如,設

因爲

所以,a是A的一個特徵值,a是A的屬於特徵值2的一個特徵向量。

0x2:特徵值、特徵向量基本性質

若是a是A的屬於特徵值的一個特徵向量,則

從而對於任意的,有

0x3:如何判斷矩陣A是否存在特徵值以及求所有特徵值

1. 特徵值存在性判判定理

首先,不是全部的矩陣都存在特徵值,咱們來看下面這個例子。

設σ是平面上繞原點O的轉角爲π/3的旋轉,旋轉是一種線性變換,能夠用矩陣來表示線性變換,則σ能夠用下述矩陣A來表示:

因爲平面上任一非零向量在旋轉σ下都不會變成它的倍數,所以在中不存在非零列向量a知足。從而A沒有特徵值,沒有特徵向量。

接下來討論如何判斷數域K上的n級矩陣A是否有特徵值和特徵向量,若是有的話,怎樣求A的所有特徵值和特徵向量。

設:

是數域K上的矩陣,則是A的一個特徵值,a是A的屬於的一個特徵向量,等價於下列幾個公式:

→ 

→ 

→ a 是齊次線性方程組的一個非零解,

→ ,a是的一個非零解,

因爲:

咱們把多項式稱爲矩陣A的特徵多項式

因而從上面推導獲得,是A的一個特徵值,a是A的屬於的一個特徵向量,等價於:

→ 是A的特徵多項式在K中的一個根,a是齊次線性方程組的一個非零解。

上述推導過程能夠推廣爲在任意n級矩陣下適用的定理:

(1)是A的一個特徵值,當且僅當是A的特徵多項式在K中的一個根;

(2)a是A的屬於特徵值的一個特徵向量,當且僅當a是齊次線性方程組的一個非零解

2. 特徵值求解方法

n級矩陣的特徵多項式寫出來就是:

因而利用上式可判斷數域K上n級矩陣A有沒有特徵值和特徵向量,若是有的話,求A的所有特徵值和特徵向量的方法以下:

(1)第一步:計算A的特徵多項式

(2)第二步:判別多項式在數域K中有沒有根,若是它在K中沒有根,則A沒有特徵值,從而A也沒有特徵向量。反之,若是在K中有根,則它在K中的所有根就是A的所有特徵值,此時接着作第三步;

(3)第三步:對於A的每個特徵值,求齊次線性方程組的一個基礎解系。因而A的屬於的所有特徵向量組成的集合是

是A的一個特徵值,咱們把齊次線性方程組的解空間稱爲A的屬於特徵子空間。它的所有非零向量就是A的屬於的所有特徵向量。

0x4:特徵值和特徵向量的物理意義 

若是把矩陣看做是運動

  • 特徵值就是運動的速度
  • 特徵向量就是運動的方向

特徵值、特徵向量天然能夠稱爲運動(即矩陣)的特徵。 

0x5:特徵值和特徵向量的幾何意義

在一個特定向量基\vec{i_{}},\vec{j_{}}下面有一個向量\vec{v_{}},咱們先隨便左乘一個矩陣A,下圖所示:

咱們知道,矩陣乘法的意義是在一個特定的向量基下對向量進行一個線性變換,上圖中的變換結果看起來很普通沒啥特殊的。

咱們接下來調整下\vec{v_{}}的方向:

能夠觀察到,調整後的 \vec{v_{}}A\vec{v_{}}在同一根直線上,只是 A\vec{v_{}}的長度相對 \vec{v_{}}的長度變長了。
此時,咱們就稱 \vec{v_{}}A的特徵向量,而 A\vec{v_{}}的長度是 \vec{v_{}}的長度的 \lambda倍, \lambda就是特徵值。
從而,特徵值與特徵向量的幾何意義以下圖所示:

實際上,這個矩陣A的特徵值有2個,對應的特徵向量也有2個,筆者用gif動圖展現了對應的特徵向量。 

 

筆者這裏打開了Av的跡追蹤(圖中的紅點軌跡),能夠看到,矩陣A對應的特徵向量的方向正好就是A投影離散度最大的方向,同時兩個特徵向量彼此垂直,關於這點咱們後面討論PAC降維原理的時候會再談到。

原始的geogebra連接在這裏,讀者朋友能夠本身上手進行修改和可視化觀察。

0x6:矩陣特徵值分解

對於矩陣 A若是能夠對角化的話(特徵值/特徵向量存在),能夠經過類似矩陣進行下面這樣的特徵值分解:

A=P\Lambda P^{-1},其中\Lambda爲對角陣,P的列向量是單位化的特徵向量。

下圖咱們展現了一個矩陣的類似對角矩陣分解過程:

能夠看到,矩陣的對角化分解將原矩陣分解爲了特徵向量特徵值兩個部分,這個公式筆者認爲是線性代數裏最美妙的公式之一了。

首先,咱們能夠看到,矩陣的本質是將原始向量帶入一個新的向量基視角下(可能升維也可能降維),以後進行兩種形式的運動:
  • 旋轉
  • 拉伸

總體矩陣表明的最後的運動結果就是這兩種的合成。

讀者思考:原始矩陣A和與之類似的對角矩陣(由特徵值組成),本質上是同一個線性變換在不一樣向量基下的不一樣表現形式

Relevant Link:   

http://mini.eastday.com/bdmip/180328092726628.html#
https://blog.csdn.net/special00/article/details/84033124
http://mini.eastday.com/bdmip/180328092726628.html# 
https://www.geogebra.org/m/F5dBUqAt
https://www.matongxue.com/madocs/228/

 

5. 矩陣奇異值分解

咱們上一個章節討論了矩陣的特徵值分解,須要特別注意的是,特徵值分解只適用於方陣(矩陣類似也只適用於方陣)。而在現實的世界中,咱們看到的大部分矩陣都不是方陣,雖然在圖像處理領域能夠經過resize強行得到一個方陣matrix,可是這意味着還沒開始處理就先失真了一部分了。

相比於矩陣特徵值分解,矩陣奇異值分解,就是一種通用性更強的矩陣特徵分解方法,奇異值分解能夠適用於任意的矩陣,它本質上也矩陣特徵值分解的目的是同樣的,都是分解出矩陣的向量方向份量不一樣方向的份量強度

0x1:用翻繩遊戲類比矩陣奇異值分解

咱們知道,對於翻繩的這個遊戲而言,每輪的花型是由四隻手完成的:

咱們能夠認爲這個花型是由兩個方向的力合成的:

咱們能夠想象,若是其中一個力(相比另一個力而言)比較小的話,那麼繩子的形狀基本上由大的那個力來決定:

或者換句話說,每一個花型從力學上均可以分解爲兩個不一樣手方向上的力。不一樣的花型,分解的結果也不一樣。

將奇異值分解類比於翻繩,咱們能夠認爲:
  • 奇異值分解,就是把矩陣分紅多個「力份量」
  • 奇異值的大小,就是各個「力份量」的實值大小

0x2:奇異值分解數學公式

瞭解了奇異值分解的基本感性概念,接下來須要先定義一下矩陣奇異值分解的數學公式定義:

SVD也是對矩陣進行分解,可是和特徵分解不一樣,SVD並不要求要分解的矩陣爲方陣。假設M是一個 m×n 階矩陣,其中的元素所有屬於域 K,也就是實數域或複數域,那麼咱們定義矩陣A的SVD爲:

U是一個M * M的方陣(裏面的向量是正交的,U裏面的向量稱爲左奇異向量);

Σ是一個M * N的實數對角矩陣(對角線之外的元素都是0,對角線上的元素稱爲奇異值,常見的作法是爲了奇異值由大而小排列);

VT(V的轉置)是一個N * N的矩陣,裏面的向量也是正交的,V裏面的向量稱爲右奇異向量);

U 和 V 都是酉矩陣,知足U^{T}U=I,V^{T}V=I 。下圖能夠很形象的看出上面SVD的定義:

接下來的問題是如何求出SVD分解後的U,Σ,V這三個矩陣呢?方法就是藉助特徵值分解的方法。

1. 奇異值分解的具體方法 

1)V矩陣的計算方法

若是咱們將一個任意mxn的矩陣A的轉置和A作矩陣乘法,那麼會獲得n×n的一個方陣 A^{T}A 。既然 A^{T}A 是方陣,那麼咱們就能夠進行特徵分解,獲得的特徵值和特徵向量知足下式:

image   

這樣咱們就能夠獲得矩陣 A^{T}A 的n個特徵值和對應的n個特徵向量v了。將 A^{T}A 的全部特徵向量張成一個n×n的矩陣V,就是咱們SVD公式裏面的V矩陣了。通常咱們將V中的每一個特徵向量叫作A的右奇異向量

2)U矩陣的計算方法

若是咱們將A和A的轉置作矩陣乘法,那麼會獲得m×m的一個方陣 AA^{T} 。既然 AA^{T} 是方陣,那麼咱們就能夠進行特徵分解,獲得的特徵值和特徵向量知足下式:

這樣咱們就能夠獲得矩陣 AA^{T} 的m個特徵值和對應的m個特徵向量u了。將 AA^{T} 的全部特徵向量張成一個m×m的矩陣U,就是咱們SVD公式裏面的U矩陣了。通常咱們將U中的每一個特徵向量叫作A的左奇異向量

3)奇異值矩陣Σ計算方法

如今U和V咱們都求出來了,接下來求奇異值矩陣Σ,因爲Σ除了對角線上是奇異值其餘位置都是0,那咱們只須要求出每一個奇異值σ就能夠了。

推導公式以下:

這樣咱們能夠求出咱們的每一個奇異值,進而求出奇異值矩陣Σ。

4)奇異值分解和特徵值分解的關聯關係

上面咱們說到,A^{T}A 的特徵向量組成的就是咱們SVD中的V矩陣,而AA^{T} 的特徵向量組成的就是咱們SVD中的U矩陣,這裏咱們來推導證實下,咱們以V矩陣的證實爲例:

上式證實中,使用了 U^{T}U=I,\Sigma^{T}\Sigma=\Sigma^{2} ,因此等式能夠化簡。

能夠看出 A^{T}A 的特徵向量組成的的確就是咱們SVD中的V矩陣。相似的方法能夠獲得 AA^{T} 的特徵向量組成的就是咱們SVD中的U矩陣。

進一步咱們還能夠看出:特徵值矩陣等於奇異值矩陣的平方,也就是說特徵值和奇異值知足以下關係:

這樣也就是說,咱們能夠不用 \sigma_{i}=\frac{Av_{i}}{u_{i}} 來計算奇異值,也能夠經過求出 A^{T}A 的特徵值取平方根來求奇異值。

0x3:SVD分解計算舉例

這裏咱們用一個簡單的例子來講明矩陣是如何進行奇異值分解的。咱們的矩陣A定義爲:

根據上一章節所述,咱們先來求V(右奇異向量),咱們經過將矩陣A的轉置乘以矩陣A,獲得一個2級方陣,從而能夠藉助特徵值分解來計算奇異值分解。 

經過計算矩陣的特徵多項式,並求根的方式來計算矩陣的特徵值,獲得了特徵值就獲得了特徵向量:

,令方程爲零,獲得方程的根爲,對特徵值開方既得奇異值:

將奇異值放置在對角位置既得奇異值矩陣:

矩陣的特徵向量爲:

兩個特徵向量合起來就是V(右奇異向量)

繼續求U(左奇異向量)

合起來既得:

綜上得

整個矩陣奇異值分解完畢。

0x4:SVD分解的幾何意義

仍是繼續上個小節的實際例子,咱們從幾何的視角來理解下SVD的概念:

上圖展現了一個奇異值分解過程,奇異值分解實際上把矩陣的變換分爲了三部分:

  • 旋轉
  • 拉伸
  • 投影

方陣沒有投影,這裏忽略,咱們來看旋轉和拉伸:

單位圓先被旋轉(90°),x和y座標系互換,是沒有形變的。

再進行拉伸,這裏決定了單位圓的形狀,奇異值分別是橢圓的長軸和短軸,σ1和σ2表明了在各自方向上的「拉伸力度」:

能夠看到,經過兩個方向上的拉伸力的綜合,棕色的圓被拉伸成了一個綠色橢圓,注意,由於以前已經進行了座標系的變換,因此此時是一個豎着的橢圓。

最後,再次旋轉90°,被旋轉到最終的位置,成爲一個橫着的橢圓,這一過程也沒有發生形變,最終就是上圖上看到的綠色橢圓了。

0x4:奇異值的一些有用的性質 

對於奇異值,它跟咱們特徵分解中的特徵值相似,在奇異值矩陣中也是按照從大到小排列,並且奇異值的減小特別的快,在不少狀況下,前10%甚至1%的奇異值的和就佔了所有的奇異值之和的99%以上的比例。也就是說,咱們也能夠用最大的k個的奇異值和對應的左右奇異向量來近似描述矩陣。

也就是說:

其中k要比n小不少,也就是一個大的矩陣A能夠用三個小的矩陣來表示。

以下圖所示,如今咱們的矩陣A只須要灰色的部分的三個小矩陣就能夠近似描述了。

因爲這個重要的性質,SVD能夠用於PCA降維,來作數據壓縮和去噪。也能夠用於推薦算法,將用戶和喜愛對應的矩陣作特徵分解,進而獲得隱含的用戶需求來作推薦。同時也能夠用於NLP中的算法,好比潛在語義索引(LSI)。

應用老是五花八門,變幻無窮的,筆者這裏但願傳遞的更可能是SVD中包含的內核思想:無論是image grid數據,仍是NLP序列向量數據,其抽象本質都是matrix矩陣,而matrix做爲數據的一種載體,其內部是包含着必定的信息熵的,SVD作的事情就是,找到數據矩陣中混亂度最大的k個方向(混亂度越大,信息熵越大),這是信息熵的本質。更高層來講,這k個方向能夠表明原始數據matrix的特徵空間,也能夠表明着不一樣層次的語義信息,取決於咱們用什麼視角來看它,以及上下游stacking的其餘model,這是很是靈活的

Relevant Link:

https://www.cnblogs.com/fuleying/p/4466326.html
https://www.geogebra.org/m/kfyxcbee
https://www.geogebra.org/m/yJK7STqg 

 

6. 二次型、矩陣的合同

0x1:二次型的基本定義

係數在數域K中的n個變量的一個二次齊次多項式,稱爲數域K上的一個n元二次型,它的通常形式是:

上式也能夠寫成:

,其中

0x2:二次型矩陣

把上面二次型方程中的係數排成一個n級矩陣A:

把A稱爲二次型的矩陣,它是堆成矩陣。

顯然,二次型的矩陣是惟一的,它的主對角元依次是的稀疏,它的(i,j)元是的係數的一半。

令:

則二次型能夠寫成:

其中A是二次型的矩陣。

用一個例子來講明:

更通常的:

寫成矩陣相乘的形式:

0x3:爲何須要二次型

簡單來講,二次型就是經過矩陣研究二次函數,藉助矩陣運算的各類高效技巧,能夠對各類複雜的二次函數具有更好的處理能力和直觀的表現。

設二次曲面S在直角座標系1中的方程爲:

這是一個什麼樣的曲面呢?

解決這個問題的思路是:依賴座標系線性變換的不變性,做直角座標變換,使得在直角座標系2中,S的方程不包含交叉項,只包含單純的平方項,那麼久能夠看出S是什麼二次曲面。

設直角座標系的變換公式爲:

,其中T必定是正交矩陣。

從而,上面二次曲面方程能夠重寫爲:

將上式中,中間的3級矩陣記做A,得:

爲了使新的方程中不出現交叉項,只要使矩陣爲對角矩陣,又因爲,所以也就是隻要使爲對角矩陣,這就是但願A能對角化,而且要找一個正交矩陣T,使A對角化。

因此二次型的主要研究問題就是:對於實數域上的對稱矩陣A,可否找到正交矩陣T,使爲對角矩陣?

咱們下面來看一些具體的例子。

1. 對圓錐曲面的變形

下面展現了一個原的方程:

咱們經過線性變換,改變一下二次型矩陣:

能夠看到,橢圓和圓之間是線性關係,經過矩陣變換就能夠從圓變爲橢圓,咱們繼續扭曲:

咱們發現雙曲線和圓之間也是線性關係,準確的說是仿射的。

其實圓、橢圓、雙曲線之間關係很緊密的,統稱爲圓錐曲線,都是圓錐體和平面的交線。上面這幾個例子可能仍是不太直觀,咱們來看下面的動圖:

Relevant Link:

https://www.matongxue.com/madocs/271.html  

 

6. PCA(Principal Component Analysis 主成分分析)

有了上面對矩陣類似分解,特徵值/特徵向量的討論,咱們這節開始討論PCA主成分分析,這是一種降維手段,瞭解其底層數學原理後讀者朋友會發現其並不複雜,甚至很簡單質樸。

0x1:關於冗餘特徵的一個簡單例子 - 只有一個特徵值的狀況

先擱置PCA的具體原理概念在一邊,這個小節咱們經過一個生活中的常見例子,展現在只有一個特徵值的狀況下進行降維處理,這裏所謂的只有一個特徵值指的是降維到能夠獲得一個1維向量,咱們後面會解釋原理,讀者朋友這裏姑且忽略。

假設如今咱們採集了一組房屋的兩個方面的特徵數據,【房價、面積】,能夠看出二者徹底正相關,有一列實際上是多餘的: 

把這個二維數據畫在座標軸上,橫縱座標分別爲「房價」、「面積」,能夠看出它們排列爲一條直線:

咱們如今旋轉座標系,讓橫座標和這條直線重合:

旋轉後的座標系,橫縱座標再也不表明「房價」、「面積」了(由於咱們轉換了向量基),新的座標系而是二者的混合,這裏把它們稱做「主元1」、「主元2」,座標值很容易用勾股定理計算出來,好比a在「主元1」的座標值爲下圖,同時,很顯然a 在「主元2」上的座標爲0:

咱們把全部的數據點換算到新的座標系上:

能夠看到,由於「主元2」全都爲0,徹底是多餘的,咱們只須要「主元1」就夠了,這樣就把數據降爲了一維,並且沒有丟失任何信息:

0x2:稍微複雜一些的一個例子 - 特徵值數量爲二

接下來咱們繼續上面那個例子,可是咱們稍微修改一下采集到的數據集,將問題變得更貼近現實業務場景一些,標題這裏寫特徵值數量爲二,讀者朋友也能夠先忽略,咱們後面解釋:

觀察這組數據,很明顯,第二列和第一列依然存在着某種正相關,可是這回已經不像上個小節那樣是徹底相等了,而是有了一些本身的變化。

把這個二維數據畫在座標軸上,橫縱座標分別爲「房價」、「面積」,雖然數據看起來很接近一條直線,可是終究不在一條直線上:

如今新問題來了,這個狀況要怎麼降維呢?降維後的新的數據又是什麼樣的呢?

要回答這個問題,咱們須要將思路往回倒退,回到向量在座標系(向量基)中的表示,以及座標系的變換這個問題上來。

先討論只有一個點的狀況,在某座標系有一個點,\boldsymbol{a}=\begin{pmatrix}x\\y\end{pmatrix} ,它表示在該座標系向量基\boldsymbol{e_1},\boldsymbol{e_2} 的線性組合:

當使用不一樣的線性變換對座標系進行線性變換時,在不一樣座標系中,x,y 的值會有所不一樣(不一樣的座標系表明了不一樣的視角),以下圖:

注意,\boldsymbol{a} 到原點的距離d 不會由於座標系改變而改變: 

因此,在某座標系下分配給x 較多,那麼分配給y 的就必然較少,反之亦然。最極端的狀況是,在某個座標系下,所有分配給了x ,使得y=0 ,以下圖:

上圖對應的就是上個小節咱們的降維結果,將二維的數據徹底無損地降維到了一維。

可是遺憾的是,這個狀況在本例的數據集中是不可能的。由於其實上個小節的數據集中隱含了一個重要條件我沒有指出,即由於上個小節中的數據集的特徵值只有1個,特徵向量也只有一個,因此能夠從2列直接降維到1列。可是這個小節中的數據特徵向量有2個,特徵向量也有2個,是不可能無損地降維到一維的。

爲何沒法無損的降維到1維呢?咱們將問題擴展到兩個點\boldsymbol{a}=\begin{pmatrix}x_1\\y_1\end{pmatrix},\boldsymbol{b}=\begin{pmatrix}x_2\\y_2\end{pmatrix} ,就能說清楚緣由了,兩個點以上本質是相似的,下圖給出一個圖示:

能夠直觀地看到,咱們沒法找到一個完美的座標系,使得a,b點都同時能落在同一個座標系上,也就說,沒法無損地降維到1維。

注意,這裏是說」不能無損地降到1維「,若是能夠接受數據損失,咱們強行地丟棄另外一個方向上的向量,也是能夠降到1維的。

好了!如今咱們已經認命了,即沒法無損地降維到1維,這個時候,咱們要改變策略,咱們但願找到一組新的座標系,這組座標系可以知足如下幾個特徵:

  • 座標系的維數儘量地少,越少越好,例如將向量份量儘可能多分配給x_1,x_2 ,少分配給y_1,y_2 的座標系
  • 原始數據投影到新座標系後,數據的失真儘量地小,還能最大程度地保留原始數據中的信息熵

如何實現上述兩個目標呢?這就是接下來要詳述的PCA算法的原理。

好了,討論到了這裏,感性部分已經闡述完畢,總結一下就是:

  • 原始數據都出在一個具體的向量基組中
  • 降維的核心就是尋找一種線性變換方案(一個矩陣),來對原始的向量基進行轉換,以求數據可以儘可能集中地分配在少部分的向量基中
  • 降維所謂的降,就是指有選擇的丟棄部分分配向量份量較少的向量基,保留分配向量份量較多的向量基,使得整體的信息丟失儘量地少

以上部分都是一些感性化的討論,不具有實際操做性。接下來咱們要開始討論PCA的具體理論,看看如何用數學方式來描述上面的理論並進行實際降維操做。

0x3:PCA公式推導

假設有以下數據:

上圖中的2個數據向量,在初始座標系下(也就是天然基\boldsymbol{e_1}=\begin{pmatrix}1\\0\end{pmatrix},\boldsymbol{e_2}=\begin{pmatrix}0\\1\end{pmatrix} )下座標值爲:

圖示以下:

隨着座標系的不一樣,X_1,X_2 的值會不斷變化(在不一樣座標系下的不一樣表現)。

如今咱們的目標是:想盡可能多分配給X_1,X_2 ,儘量少的分配給Y一、Y2,根據最小二乘法的思想,就是讓下式成立:

X_1^2+X_2^2=\sum_{i=0}^2 X_i^2\ \ 最大\\

要實現上式,就須要找到一個新的座標系,咱們假設新的座標系以下:

\boldsymbol{e_1}=\begin{pmatrix}e_{11}\\e_{12}\end{pmatrix}\quad \boldsymbol{e_2}=\begin{pmatrix}e_{21}\\e_{22}\end{pmatrix}\\

則原始數據在新座標系下其中一個座標系e1的投影爲:

帶上上面最小二乘公式有:

上式實際上是一個二次型:

這裏矩陣P 就是二次型,是一個對稱矩陣,能夠進行以下的奇異值分解:

其中,U 爲正交矩陣,即UU^\mathrm{T}=I 。

\Sigma 是對角矩陣:

\Sigma=\begin{pmatrix}\sigma_1&0\\0&\sigma_2\end{pmatrix}\\

其中,\sigma_1,\sigma_2 是奇異值,\sigma_1 > \sigma_2 。

P 代回原方程:

由於U 是正交矩陣,因此令:

所得的\boldsymbol{n} 也是單位向量,即:

\boldsymbol{n}=\begin{pmatrix}n_1\\n_2\end{pmatrix}\implies n_1^2+n_2^2=1\\

繼續代回原方程:

至此,最初求最大值的問題就轉化爲了:

能夠用拉格朗日乘子法計算上述條件極值,結果是當n_1=1,n_2=0 時取到極值。

所以能夠推出要尋找的主元1,即:

\boldsymbol{n}=\begin{pmatrix}1\\0\end{pmatrix}=U^\mathrm{T}\boldsymbol{e_1}\implies \boldsymbol{e_1}=U\begin{pmatrix}1\\0\end{pmatrix}\\

即:

一樣的思路能夠求出:

\boldsymbol{e_2}=\begin{cases}P=U\Sigma U^\mathrm{T}\\\\最小奇異值\sigma_2對應的奇異向量\end{cases}\\

0x4:基於協方差矩陣的優化目標 - 找到損失最低的變換基

咱們上個章節經過一個具體的例子,推導瞭如何獲得一個最優的降維座標系。

可是請讀者朋友注意的是,上一節對最優化目標的描述是:想盡可能多分配給X_1,X_2 ,儘量少的分配給Y一、Y2。這句話仍是過於直觀和感性,咱們這節用協方差矩陣的方式來形式化地定義出PCA降維的目標是什麼。

PCA降維的本質是基變換,若是咱們必須使用一組新的基來表示原始數據,又但願儘可能保留原始的信息(保留原始數據的機率分佈),咱們應該如何選擇?

而不一樣的基變換對應了不一樣的投影方向,咱們但願投影后的投影值儘量分散。數據越分散,可分性就越強,可分性越強,機率分佈保存的就越完整。 這種分散程度,能夠用數學上的方差來表述

可是光有方差仍是不夠的,考慮三維降到二維問題。首先咱們但願找到一個方向使得投影后方差最大,這樣就完成了第一個方向的選擇,繼而咱們選擇第二個投影方向。若是咱們仍是單純只選擇方差最大的方向,很明顯,這個方向與第一個方向應該是「幾乎重合在一塊兒」,顯然這樣的維度是沒有用的,所以,應該有其餘約束條件。

從直觀上說,讓兩個新的向量基儘量表示更多的原始信息,同時咱們不但願它們之間存在(線性)相關性的,由於相關性意味着兩個字段不是徹底獨立,必然存在重複表示的信息。
數學上能夠用兩個字段的協方差表示其相關性:

,這裏Y表示第二個向量基。

當協方差爲0時,表示兩個字段徹底獨立。爲了讓協方差爲0,咱們選擇第二個基時只能在與第一個基正交的方向上選擇。所以最終選擇的兩個方向必定是彼此正交的。 

用協方差矩陣來統一表示同一個向量基內數據的離散方差不一樣向量基間相關性協方差這兩個數學概念:

根據上述推導,咱們要達到的優化目標,用數學語言等價於:將協方差矩陣對角化,即除對角線(方差要儘量大)外的其它元素化爲0(協方差爲0),而且在對角線上將元素按大小從上到下排列(這樣便於咱們篩選出方差最大的k個向量基),這樣咱們就達到了優化目的。

P,Q 均可以進行奇異值分解:

P=U\begin{pmatrix}\sigma_1&0\\0&\sigma_2\end{pmatrix} U^\mathrm{T}\quad Q=\frac{1}{n}P=U\begin{pmatrix}\frac{\sigma_1}{n}&0\\0&\frac{\sigma_2}{n}\end{pmatrix} U^\mathrm{T}\\

矩陣P上個章節解釋過了,指的是原始數據的二次型矩陣。協方差矩陣Q 的奇異值分解和P 相差無幾,只是奇異值縮小了n 倍,可是不妨礙奇異值之間的大小關係,因此在實際問題中,每每都是直接分解協方差矩陣Q 。

0x5:PCA陷阱 - 注意PCA的假設前提條件!

1. PCA只能去除數據中的線性相關性

考慮採樣y=sin(x)半個週期所得到的數據: 

雖然上述數據顯然是線性不相關的(平均而言,當x值增長時,y值增長的和它減小的同樣多),所以對應於一個對角的協方差矩陣,但這兩個變量之間仍然有明確的非線性關係。

通常狀況下,PCA會減小數據中的線性相關性,但不會刪除統計相關。若是咱們的數據集是非線性相關的,那麼可能不適合用PCA進行降維。 

2. 可區分信息不存在於最大方差方向上 

PCA的一個最大假設是,最能區別的信息經過特徵空間中的最大方差捕獲。由於最大方差方向編碼的信息最多,這極可能是真的。

然而,有一些狀況,其中的區別信息實際駐留在最小方差的方向,使得PCA能夠大大損害分類性能。舉個例子,考慮下圖的兩種狀況(將二維特徵空間降到1D表示): 

  • 在第一幅圖中,若是保留方差最大的方向,那麼基本上得不到任何可區分的信息。由於PCA是根據方差大小來選擇保留哪些方向的特徵的,若是由於數據集中存在噪聲而致使某個方向的方差特別大,那麼PCA極可能會錯誤的保留這個噪聲方向,而割捨真正有價值的相關性維度
  • 在第二張圖中PCA則完美髮揮做用,這是PCA的典型場景。

若是最能區別的信息包含在較小的特徵向量中,應用PCA實際上可能惡化維數的詛咒,由於如今須要更復雜的分類模型(例如非線性分類器)來分類低維問題。在這種狀況下,其餘降維的方法可能會感興趣,如線性判別分析(LDA),其試圖找到可以一個映射向量,該向量最優的分開兩個類別。 

0x6:PCA降維的應用 

1. 用SVD代替特徵分解的龐大運算量

PCA降維,須要找到樣本協方差矩陣 X^{T}X 的最大的k個特徵向量,而後用這最大的k個特徵向量張成的矩陣來作低維投影降維。能夠看出,在這個過程當中須要先求出協方差矩陣 X^{T}X ,當樣本數多樣本特徵數也多的時候,這個計算量是很大的。

注意到咱們的SVD也能夠獲得協方差矩陣 X^{T}X 最大的k個特徵向量張成的矩陣,並且同時SVD有個好處,有一些SVD的實現算法能夠不用先求出協方差矩陣 X^{T}X ,也能求出咱們的右奇異矩陣V。也就是說,咱們的PCA算法能夠不用作特徵分解,而是作SVD來完成。這個方法在樣本量很大的時候頗有效。實際上,scikit-learn的PCA算法的背後真正的實現就是用的SVD,而不是咱們咱們認爲的暴力特徵分解。

2. 左奇異分解矩陣 - 行壓縮

另外一方面,注意到PCA僅僅使用了咱們SVD的右奇異矩陣,沒有使用左奇異矩陣,那麼左奇異矩陣有什麼用呢?

假設咱們的樣本是m×n的矩陣X,若是咱們經過SVD找到了矩陣 XX^{T} 最大的k個特徵向量張成的m×k維矩陣U,則咱們若是進行以下處理:

能夠獲得一個k x n的矩陣X‘,這個矩陣和咱們原來的m×n維樣本矩陣X相比,行數從m減到了k,可見對行數進行了壓縮,左奇異矩陣能夠用於行數的壓縮。

3. 右奇異矩陣 - 列維數壓縮

右奇異矩陣能夠用於列數即特徵維度的壓縮,也就是咱們的PCA降維。  

Relevant Link:    

https://www.cnblogs.com/LittleHann/p/6558575.html#_lab2_1_7
https://zhuanlan.zhihu.com/p/31386807
https://www.matongxue.com/madocs/306.html
https://www.cnblogs.com/LittleHann/p/6558575.html#4208658
https://www.zhihu.com/question/41120789/answer/481966094
相關文章
相關標籤/搜索