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:奇異值分解數學公式
了解了奇異值分解的基本感性概念,接下來需要先定義一下矩陣奇異值分解的數學公式定義:
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陷阱 - 注意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降維,需要找到樣本協方差矩陣
的最大的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
