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

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

0. 引言

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

這裡推薦Mit的Gilbert Strang教授的線性代數課程,講的非常好,循循善誘,深入淺出。

Relevant Link:  

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

 

1. 可逆矩陣

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

對於數域K上的矩陣A,如果存在數域K上的矩陣B,使得:

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

如果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)什麼是向量基變換

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

座標轉換是數學中的常用手段,目的是簡化運算,提高視覺化理解程度。比如常見的,把直角座標系(座標系)的圓方程,換元為極座標(座標系):

下圖展示了換元前後的函式形式:

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

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

線性函式可以認為是把點對映到點,我們稱為線性變換,記作:

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

進一步推廣開來,只要替換為平面內所有的點,我們就可以對整個平面做變換,該線性變換記作:

進而可以寫作矩陣的形式:

我們記:

我們可以得到更簡便的記法:

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

上面的討論中,可能讀者朋友覺得非常自然,這是因為我們在高中、大學的學習中,對直角座標系已經非常熟悉了,頭腦中也已經建立了非常直觀感性的空間想象能力。

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

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

標準正交基是,它們所張成的線性空間如下:

通過這個轉換:

得到的也是基於直角座標系的。

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

我們先來說明不同基下的矩陣的變換思路:

上圖中:

  • 和 :代表兩個不同的向量基;
  • :代表了向量基V1通過某種線性變換,轉換為向量基V1,可以通過轉換;
  • :同上,可以通過轉換;
  • 是下的點;
  • 通過變為下的點,即
  • 在下,通過矩陣完成線性變換,即
  • 通過從變回下的點,即

綜上,我們可以有:

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

推廣到一般情況,我們可以認為,:

那麼和互為相似矩陣。

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

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

前面說到,代表了向量基轉換,上個小節一筆帶過了,這個小節我們來詳細討論下這個轉換是如何完成的。

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

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

然後,我們定義V2的向量基,,之後,我們給出點在的座標:

重寫在該向量基下的表示:

現在我們來看另一個向量基V1,假設我們知道了在V1,下的座標(如下圖所示): 

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

此時,實際上點的座標,已經從V2變到了V1向量基下的:

轉換為矩陣形式:

所以其實就是:

,式中,上是在下的座標(向量基)。

由此可以看到,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:特徵值和特徵向量的幾何意義

在一個特定向量基下面有一個向量,我們先隨便左乘一個矩陣,下圖所示:

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

我們接下來調整下的方向:

可以觀察到,調整後的和在同一根直線上,只是的長度相對的長度變長了。 此時,我們就稱是的特徵向量,而的長度是的長度的倍,就是特徵值。 從而,特徵值與特徵向量的幾何意義如下圖所示:

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

 

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

原始的geogebra連結在這裡,讀者朋友可以自己上手進行修改和視覺化觀察。

0x6:矩陣特徵值分解

對於矩陣如果可以對角化的話(特徵值/特徵向量存在),可以通過相似矩陣進行下面這樣的特徵值分解:

,其中為對角陣,的列向量是單位化的特徵向量。

下圖我們展示了一個矩陣的相似對角矩陣分解過程:

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

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

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

讀者思考:原始矩陣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裡面的向量稱為右奇異向量);

 和  都是酉矩陣,滿足 。下圖可以很形象的看出上面SVD的定義:

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

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

1)V矩陣的計算方法

如果我們將一個任意mxn的矩陣A的轉置和A做矩陣乘法,那麼會得到n×n的一個方陣  。既然  是方陣,那麼我們就可以進行特徵分解,得到的特徵值和特徵向量滿足下式:

   

這樣我們就可以得到矩陣  的n個特徵值和對應的n個特徵向量v了。將  的所有特徵向量張成一個n×n的矩陣V,就是我們SVD公式裡面的V矩陣了。一般我們將V中的每個特徵向量叫做A的右奇異向量。

2)U矩陣的計算方法

如果我們將A和A的轉置做矩陣乘法,那麼會得到m×m的一個方陣  。既然  是方陣,那麼我們就可以進行特徵分解,得到的特徵值和特徵向量滿足下式:

這樣我們就可以得到矩陣  的m個特徵值和對應的m個特徵向量u了。將  的所有特徵向量張成一個m×m的矩陣U,就是我們SVD公式裡面的U矩陣了。一般我們將U中的每個特徵向量叫做A的左奇異向量。

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

現在U和V我們都求出來了,接下來求奇異值矩陣Σ,由於Σ除了對角線上是奇異值其他位置都是0,那我們只需要求出每個奇異值σ就可以了。

推導公式如下:

這樣我們可以求出我們的每個奇異值,進而求出奇異值矩陣Σ。

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

上面我們說到, 的特徵向量組成的就是我們SVD中的V矩陣,而 的特徵向量組成的就是我們SVD中的U矩陣,這裡我們來推導證明下,我們以V矩陣的證明為例:

上式證明中,使用了  ,所以等式可以化簡。

可以看出  的特徵向量組成的的確就是我們SVD中的V矩陣。類似的方法可以得到  的特徵向量組成的就是我們SVD中的U矩陣。

進一步我們還可以看出:特徵值矩陣等於奇異值矩陣的平方,也就是說特徵值和奇異值滿足如下關係:

這樣也就是說,我們可以不用  來計算奇異值,也可以通過求出  的特徵值取平方根來求奇異值。

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”,座標值很容易用勾股定理計算出來,比如在“主元1”的座標值為下圖,同時,很顯然 在“主元2”上的座標為0:

我們把所有的資料點換算到新的座標系上:

可以看到,因為“主元2”全都為0,完全是多餘的,我們只需要“主元1”就夠了,這樣就把資料降為了一維,而且沒有丟失任何資訊:

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

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

觀察這組資料,很明顯,第二列和第一列依然存在著某種正相關,但是這回已經不像上個小節那樣是完全相等了,而是有了一些自己的變化。

把這個二維資料畫在座標軸上,橫縱座標分別為“房價”、“面積”,雖然資料看起來很接近一條直線,但是終究不在一條直線上:

現在新問題來了,這個情況要怎麼降維呢?降維後的新的資料又是什麼樣的呢?

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

先討論只有一個點的情況,在某座標系有一個點, ,它表示在該座標系向量基 的線性組合:

當使用不同的線性變換對座標系進行線性變換時,在不同座標系中, 的值會有所不同(不同的座標系代表了不同的視角),如下圖:

注意, 到原點的距離 不會因為座標系改變而改變: 

所以,在某座標系下分配給 較多,那麼分配給 的就必然較少,反之亦然。最極端的情況是,在某個座標系下,全部分配給了 ,使得 ,如下圖:

上圖對應的就是上個小節我們的降維結果,將二維的資料完全無損地降維到了一維。

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

為什麼無法無損的降維到1維呢?我們將問題擴充套件到兩個點 ,就能說清楚原因了,兩個點以上本質是類似的,下圖給出一個圖示:

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

注意,這裡是說”不能無損地降到1維“,如果可以接受資料損失,我們強行地丟棄另一個方向上的向量,也是可以降到1維的。

好了!現在我們已經認命了,即無法無損地降維到1維,這個時候,我們要改變策略,我們希望找到一組新的座標系,這組座標系能夠滿足以下幾個特徵:

  • 座標系的維數儘可能地少,越少越好,例如將向量分量儘量多分配給 ,少分配給 的座標系
  • 原始資料投影到新座標系後,資料的失真儘可能地小,還能最大程度地保留原始資料中的資訊熵

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

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

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

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

0x3:PCA公式推導

假設有如下資料:

上圖中的2個數據向量,在初始座標系下(也就是自然基 )下座標值為:

圖示如下:

隨著座標系的不同, 的值會不斷變化(在不同座標系下的不同表現)。

現在我們的目標是:想盡量多分配給 ,儘可能少的分配給Y1、Y2,根據最小二乘法的思想,就是讓下式成立:

要實現上式,就需要找到一個新的座標系,我們假設新的座標系如下:

則原始資料在新座標系下其中一個座標系e1的投影為:

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

上式其實是一個二次型:

這裡矩陣 就是二次型,是一個對稱矩陣,可以進行如下的奇異值分解:

其中, 為正交矩陣,即 。

而 是對角矩陣:

其中, 是奇異值, 。

將 代回原方程:

因為 是正交矩陣,所以令:

所得的 也是單位向量,即:

繼續代回原方程:

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

可以用拉格朗日乘子法計算上述條件極值,結果是當 時取到極值。

因此可以推出要尋找的主元1,即:

即:

同樣的思路可以求出:

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

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

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

PCA降維的本質是基變換,如果我們必須使用一組新的基來表示原始資料,又希望儘量保留原始的資訊(保留原始資料的概率分佈),我們應該如何選擇?

而不同的基變換對應了不同的投影方向,我們希望投影后的投影值儘可能分散。資料越分散,可分性就越強,可分性越強,概率分佈儲存的就越完整。 這種分散程度,可以用數學上的方差來表述:

但是光有方差還是不夠的,考慮三維降到二維問題。首先我們希望找到一個方向使得投影后方差最大,這樣就完成了第一個方向的選擇,繼而我們選擇第二個投影方向。如果我們還是單純只選擇方差最大的方向,很明顯,這個方向與第一個方向應該是“幾乎重合在一起”,顯然這樣的維度是沒有用的,因此,應該有其他約束條件。

從直觀上說,讓兩個新的向量基儘可能表示更多的原始資訊,同時我們不希望它們之間存在(線性)相關性的,因為相關性意味著兩個欄位不是完全獨立,必然存在重複表示的資訊。
數學上可以用兩個欄位的協方差表示其相關性:

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

當協方差為0時,表示兩個欄位完全獨立。為了讓協方差為0,我們選擇第二個基時只能在與第一個基正交的方向上選擇。因此最終選擇的兩個方向一定是彼此正交的。 

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

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

 都可以進行奇異值分解:

矩陣P上個章節解釋過了,指的是原始資料的二次型矩陣。協方差矩陣 的奇異值分解和 相差無幾,只是奇異值縮小了 倍,但是不妨礙奇異值之間的大小關係,所以在實際問題中,往往都是直接分解協方差矩陣 。

0x5:PCA降維的應用 

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

PCA降維,需要找到樣本協方差矩陣  的最大的k個特徵向量,然後用這最大的k個特徵向量張成的矩陣來做低維投影降維。可以看出,在這個過程中需要先求出協方差矩陣  ,當樣本數多樣本特徵數也多的時候,這個計算量是很大的。

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

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

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

假設我們的樣本是m×n的矩陣X,如果我們通過SVD找到了矩陣  最大的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