本文主要的目的在於討論PAC降維和SVD特徵提取原理,圍繞這一主題,在文章的開頭從涉及的相關矩陣原理切入,逐步深刻討論,但願可以學習這一領域問題的讀者朋友有幫助。html
這裏推薦Mit的Gilbert Strang教授的線性代數課程,講的很是好,循循善誘,深刻淺出。算法
Relevant Link: 數組
Gilbert Strang教授的MIT公開課:數據分析、信號處理和機器學習中的矩陣方法 https://mp.weixin.qq.com/s/gi0RppHB4UFo4Vh2Neonfw
對於數域K上的矩陣A,若是存在數域K上的矩陣B,使得:機器學習
則稱A是可逆矩陣(或非奇異矩陣)。svg
若是A是可逆矩陣,則適合上式的矩陣B稱爲A的逆矩陣,記做函數
若是A是可逆矩陣,則它又逆矩陣使得:性能
從上式可看出,也是可逆矩陣,而且:學習
從矩陣可逆的公式能夠看出,A與B可交換,所以可逆矩陣必定都是方陣。優化
利用反證法,假如還有矩陣B1也適合上式,則:編碼
所以,B1 = B。
而且:
若是A可逆,則A'也可逆,而且:
數據K上n級矩陣A可逆的充分必要條件是: 。
值得注意的是,也是矩陣對應線性方程組有解的充要條件。
n級矩陣A可逆的充分必要條件是 rank(A) = n,即A爲滿秩矩陣。
數據K上n級矩陣A可逆的充分必要條件是A的行(列)向量組線性無關。
充分性:設A能夠表示成一些初等矩陣的乘積,因爲初等矩陣均可逆,由於他們的乘積A也可逆。
必要性:設A可逆,則A通過初等行變換化成的簡化行階梯矩陣必定是單位矩陣I,所以有初等矩陣,使得
所以
因爲初等矩陣的逆矩陣還是初等矩陣,所以上式代表:矩陣A能夠表示爲一些初等矩陣的乘積。
當矩陣A可逆時,
上式給出了求逆矩陣的一種方法,稱之爲伴隨矩陣法。
有的時候,當矩陣的階數比較高的時候,使用其行列式的值和伴隨矩陣求解其逆矩陣會產生較大的計算量。這時,咱們能夠採用初等變換法進行逆矩陣求解。
設A是n級可逆矩陣,根據可逆矩陣性質,咱們知道,有初等矩陣,使得:
因此又有:
從上式能夠看出,若是有一系列初等行變換把A化成了單位矩陣I,那麼一樣的這些初等行變換就把I化成了。
所以咱們能夠把A與I並排放在一塊兒,組成一個nx2n級矩陣(A,I),對(A,I)做一系列初等行變換,把它的左半部分化成I,這時的右半部分就是,即:
這種求逆矩陣的方法稱爲初等變換法,這時最經常使用的方法。
在線性迴歸模型中,根據最小二乘求解公式,咱們有:
在滿秩狀況下(知足數據點個數>特徵數量),係數求解等價於存在一個簡單的閉式矩陣解,使得最小二乘最小化。由下式給出:
其中,是矩陣的逆矩陣,令,則最終學得的多元線性迴歸模型爲:
能夠看到,參數求解的本質就是矩陣乘法,矩陣求逆等操做。
固然,須要指出的是,對於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
在平面上取一個直角座標系Oxy,設向量a,β的座標分別是(a1,a2),(b1,b2)。若是a,β都是單位向量,而且互相垂直,則他們的座標知足:
上述4個等式能夠寫成一個矩陣形式:
設矩陣A的第1,2行分別是a,β的座標,則上面矩陣形式能夠重寫爲:
咱們把知足這種特性的矩陣A稱爲正交矩陣。
通常的,若是是實數域上的方陣A知足:,則稱A是正交矩陣。
若A,B都是正交矩陣,則有下式:
所以AB也是正交矩陣。
若A是正交矩陣,則,從而,由於轉置不概念行列式,即
因此,|A| = 1,或者 -1。
該定理告訴咱們,構建正交矩陣等價於求標準正交基,許多實際問題須要構造正交矩陣,因而咱們要設法求標準正交基。
設實數域上n級矩陣A的行向量組爲,列向量組爲,則:
(1)A爲正交矩陣當且僅當A的行向量知足下式:
(2)A爲正交矩陣當且僅當A的列向量組知足下式:
咱們引用一個符號,它的含義是:
稱爲Kronecker(克羅內克)記號,採用這個符號,上面兩式能夠分別寫成:
從上式能夠看到,從行向量和列向量的角度,正交矩陣都知足上面的定理。
這兩組式子的左端都是兩個n元有序數組的對應元素的乘積之和。與幾何空間中兩個向量的內積在直角座標系中的計算公式類似。所以,咱們能夠在實數域上的n維向量空間也引入內積的概念。
在中,任給兩個向量組,規定
這個二元實值函數(a,β)稱爲的一個內積,一般稱這個內積爲的標準內積。
上式也能夠簡寫爲:
對一切,有下列幾個性質
n維向量空間有了標準內積後,就稱爲一個歐幾里得空間。
在歐幾里得空間中,向量a的長度 |a| 規定爲:
長度爲1的向量稱爲單位向量,a是單位向量的充要條件是
由於,因而對於,必定是單位向量。
把非零向量 a 乘以,稱爲把a單位化。
在歐幾里得空間中,若是,則稱a與β是正交的,記做
在歐幾里得空間中,由非零向量組成的向量組若是其中每兩個不一樣的向量都彼此正交,則稱它們是正交向量組。
特別的,僅由一個非零向量組成的向量組也是正交向量組。
同時,若是正交向量組的每一個向量都是單位向量,則稱它爲正交單位向量組。
歐幾里得空間中,正交向量組必定是線性無關的。
證實:
設是正交向量組,設
把上式兩端的向量都與做內積,得:
因爲,當 j != i 時,所以上式得:
因爲,所以,從而得:
根據線性相關基本定理,線性無關。
歐幾里得空間中,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 《建明線性代數》丘維聲
若是矩陣A能夠通過一系列初等行變換與初等列變換變成矩陣B,則稱A與B是相抵的(或等價),記做
因爲矩陣的初等行(列)變換能夠經過初等矩陣與矩陣的乘法來實現,而且一個矩陣可逆的充要條件是它能表示成一些初等矩陣的乘積,所以:
s x n 矩陣A與B相抵,等價於:
→ A通過初等行變換和初等列變換變成B;
→ 存在s級初等矩陣與n級初等矩陣,使得:;
→ 存在s級可逆矩陣P與n級可逆矩陣Q,使得:
s x n 矩陣之間的相抵關係具備下述性質
設A與B都是數域K上n級矩陣(注意,必須是n級方陣才存在類似矩陣),若是存在數域K上的一個n級可逆矩陣U,使得
,
則稱A與B是類似的,或說B是A的類似矩陣,記做。
數域K上n級矩陣之間的類似關係具備下列性質:
而且當它們可逆時,它們的逆矩陣也類似
n級矩陣A的主對角線上元素的和稱爲A的跡,記做tr(A)
先拋出結論:同一個線性變換,不一樣基下的矩陣,稱爲類似矩陣。
這個結論不容易簡單闡述清楚,咱們先從一些簡單的概念開始,逐步切入概念。上面說到不一樣基下的矩陣,那什麼是不一樣向量基呢?即什麼是向量基變換呢?
咱們經過一個簡單的例子來直觀地說明什麼是座標(向量基)變換。
座標轉換是數學中的經常使用手段,目的是簡化運算,提升可視化理解程度。好比常見的,把直角座標系(座標系)的圓方程,換元爲極座標(座標系):
下圖展現了換元先後的函數形式:
從直觀上看,換元后的代數式和圖像都變簡單了。從線性方程角度,換元將原方程從非線性空間轉換到了線性空間。
線性函數能夠認爲是把點映射到點,咱們稱爲線性變換,記做:
該線性變換矩陣的形式以下:
進一步推廣開來,只要替換爲平面內全部的點,咱們就能夠對整個平面作變換,該線性變換記做:
進而能夠寫做矩陣的形式:
咱們記:
咱們能夠獲得更簡便的記法:
下圖用淡藍色網格來表示這個線性變換(這個變換實際上鏡面反轉):
上面的討論中,可能讀者朋友以爲很是天然,這是由於咱們在高中、大學的學習中,對直角座標系已經很是熟悉了,頭腦中也已經創建了很是直觀感性的空間想象能力。
其實在前面的討論中隱含了一個特徵重要的信息,就是座標系(向量基)。
是基於直角座標系的(標準正交基)
標準正交基是,它們所張成的線性空間以下:
經過這個轉換:
獲得的也是基於直角座標系的。
咱們先來講明不一樣基下的矩陣的變換思路:
上圖中:
綜上,咱們能夠有:
即矩陣A和矩陣B是能夠互相轉化的,它們是同一個線性變換在不一樣向量基下的不一樣表現形式。
推廣到通常狀況,咱們能夠認爲,:
那麼和互爲類似矩陣。
繼續來討論類似矩陣公式:
前面說到,表明了向量基轉換,上個小節一筆帶過了,這個小節咱們來詳細討論下這個轉換是如何完成的。
首先給出咱們空間中的一點,例如點:
不論有沒有向量基,這個點都是客觀存在的。
而後,咱們定義V2的向量基,,以後,咱們給出點在的座標:
重寫在該向量基下的表示:
如今咱們來看另外一個向量基V1,假設咱們知道了在V1,下的座標(以下圖所示):
那麼將V1下的座標帶入原式:
此時,實際上點的座標,已經從V2變到了V1向量基下的:
轉換爲矩陣形式:
因此其實就是:
,式中,上是在下的座標(向量基)。
由此能夠看到,P實際上表明瞭一種對向量基的轉換,或者說是向量基的映射。
Relevant Link:
https://www.matongxue.com/madocs/491.html
設A是數域K上的n級矩陣,若是中有非零列向量a,使得,則稱是A的一個特徵值,稱a是A的屬於特徵值的一個特徵向量。
例如,設
因爲
所以,a是A的一個特徵值,a是A的屬於特徵值2的一個特徵向量。
若是a是A的屬於特徵值的一個特徵向量,則
從而對於任意的,有
首先,不是全部的矩陣都存在特徵值,咱們來看下面這個例子。
設σ是平面上繞原點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是齊次線性方程組的一個非零解
n級矩陣的特徵多項式寫出來就是:
因而利用上式可判斷數域K上n級矩陣A有沒有特徵值和特徵向量,若是有的話,求A的所有特徵值和特徵向量的方法以下:
(1)第一步:計算A的特徵多項式;
(2)第二步:判別多項式在數域K中有沒有根,若是它在K中沒有根,則A沒有特徵值,從而A也沒有特徵向量。反之,若是在K中有根,則它在K中的所有根就是A的所有特徵值,此時接着作第三步;
(3)第三步:對於A的每個特徵值,求齊次線性方程組的一個基礎解系。因而A的屬於的所有特徵向量組成的集合是
設是A的一個特徵值,咱們把齊次線性方程組的解空間稱爲A的屬於的特徵子空間。它的所有非零向量就是A的屬於的所有特徵向量。
若是把矩陣看做是運動
特徵值、特徵向量天然能夠稱爲運動(即矩陣)的特徵。
在一個特定向量基下面有一個向量,咱們先隨便左乘一個矩陣,下圖所示:
咱們知道,矩陣乘法的意義是在一個特定的向量基下對向量進行一個線性變換,上圖中的變換結果看起來很普通沒啥特殊的。
咱們接下來調整下的方向:
實際上,這個矩陣A的特徵值有2個,對應的特徵向量也有2個,筆者用gif動圖展現了對應的特徵向量。
筆者這裏打開了Av的跡追蹤(圖中的紅點軌跡),能夠看到,矩陣A對應的特徵向量的方向正好就是A投影離散度最大的方向,同時兩個特徵向量彼此垂直,關於這點咱們後面討論PAC降維原理的時候會再談到。
原始的geogebra連接在這裏,讀者朋友能夠本身上手進行修改和可視化觀察。
,其中爲對角陣,的列向量是單位化的特徵向量。
能夠看到,矩陣的對角化分解將原矩陣分解爲了特徵向量和特徵值兩個部分,這個公式筆者認爲是線性代數裏最美妙的公式之一了。
總體矩陣表明的最後的運動結果就是這兩種的合成。
讀者思考:原始矩陣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/
咱們上一個章節討論了矩陣的特徵值分解,須要特別注意的是,特徵值分解只適用於方陣(矩陣類似也只適用於方陣)。而在現實的世界中,咱們看到的大部分矩陣都不是方陣,雖然在圖像處理領域能夠經過resize強行得到一個方陣matrix,可是這意味着還沒開始處理就先失真了一部分了。
相比於矩陣特徵值分解,矩陣奇異值分解,就是一種通用性更強的矩陣特徵分解方法,奇異值分解能夠適用於任意的矩陣,它本質上也矩陣特徵值分解的目的是同樣的,都是分解出矩陣的向量方向份量和不一樣方向的份量強度。
咱們知道,對於翻繩的這個遊戲而言,每輪的花型是由四隻手完成的:
咱們能夠認爲這個花型是由兩個方向的力合成的:
咱們能夠想象,若是其中一個力(相比另一個力而言)比較小的話,那麼繩子的形狀基本上由大的那個力來決定:
或者換句話說,每一個花型從力學上均可以分解爲兩個不一樣手方向上的力。不一樣的花型,分解的結果也不一樣。
瞭解了奇異值分解的基本感性概念,接下來須要先定義一下矩陣奇異值分解的數學公式定義:
U是一個M * M的方陣(裏面的向量是正交的,U裏面的向量稱爲左奇異向量);
Σ是一個M * N的實數對角矩陣(對角線之外的元素都是0,對角線上的元素稱爲奇異值,常見的作法是爲了奇異值由大而小排列);
VT(V的轉置)是一個N * N的矩陣,裏面的向量也是正交的,V裏面的向量稱爲右奇異向量);
和 都是酉矩陣,知足 。下圖能夠很形象的看出上面SVD的定義:
接下來的問題是如何求出SVD分解後的U,Σ,V這三個矩陣呢?方法就是藉助特徵值分解的方法。
若是咱們將一個任意mxn的矩陣A的轉置和A作矩陣乘法,那麼會獲得n×n的一個方陣 。既然 是方陣,那麼咱們就能夠進行特徵分解,獲得的特徵值和特徵向量知足下式:
這樣咱們就能夠獲得矩陣 的n個特徵值和對應的n個特徵向量v了。將 的全部特徵向量張成一個n×n的矩陣V,就是咱們SVD公式裏面的V矩陣了。通常咱們將V中的每一個特徵向量叫作A的右奇異向量。
若是咱們將A和A的轉置作矩陣乘法,那麼會獲得m×m的一個方陣 。既然 是方陣,那麼咱們就能夠進行特徵分解,獲得的特徵值和特徵向量知足下式:
這樣咱們就能夠獲得矩陣 的m個特徵值和對應的m個特徵向量u了。將 的全部特徵向量張成一個m×m的矩陣U,就是咱們SVD公式裏面的U矩陣了。通常咱們將U中的每一個特徵向量叫作A的左奇異向量。
如今U和V咱們都求出來了,接下來求奇異值矩陣Σ,因爲Σ除了對角線上是奇異值其餘位置都是0,那咱們只須要求出每一個奇異值σ就能夠了。
推導公式以下:
這樣咱們能夠求出咱們的每一個奇異值,進而求出奇異值矩陣Σ。
上面咱們說到, 的特徵向量組成的就是咱們SVD中的V矩陣,而 的特徵向量組成的就是咱們SVD中的U矩陣,這裏咱們來推導證實下,咱們以V矩陣的證實爲例:
上式證實中,使用了 ,因此等式能夠化簡。
能夠看出 的特徵向量組成的的確就是咱們SVD中的V矩陣。相似的方法能夠獲得 的特徵向量組成的就是咱們SVD中的U矩陣。
進一步咱們還能夠看出:特徵值矩陣等於奇異值矩陣的平方,也就是說特徵值和奇異值知足以下關係:
這樣也就是說,咱們能夠不用 來計算奇異值,也能夠經過求出 的特徵值取平方根來求奇異值。
這裏咱們用一個簡單的例子來講明矩陣是如何進行奇異值分解的。咱們的矩陣A定義爲:
根據上一章節所述,咱們先來求V(右奇異向量),咱們經過將矩陣A的轉置乘以矩陣A,獲得一個2級方陣,從而能夠藉助特徵值分解來計算奇異值分解。
經過計算矩陣的特徵多項式,並求根的方式來計算矩陣的特徵值,獲得了特徵值就獲得了特徵向量:
,令方程爲零,獲得方程的根爲,對特徵值開方既得奇異值:
將奇異值放置在對角位置既得奇異值矩陣:
矩陣的特徵向量爲:
兩個特徵向量合起來就是V(右奇異向量)
繼續求U(左奇異向量)
合起來既得:
綜上得
整個矩陣奇異值分解完畢。
仍是繼續上個小節的實際例子,咱們從幾何的視角來理解下SVD的概念:
上圖展現了一個奇異值分解過程,奇異值分解實際上把矩陣的變換分爲了三部分:
方陣沒有投影,這裏忽略,咱們來看旋轉和拉伸:
單位圓先被旋轉(90°),x和y座標系互換,是沒有形變的。
再進行拉伸,這裏決定了單位圓的形狀,奇異值分別是橢圓的長軸和短軸,σ1和σ2表明了在各自方向上的「拉伸力度」:
能夠看到,經過兩個方向上的拉伸力的綜合,棕色的圓被拉伸成了一個綠色橢圓,注意,由於以前已經進行了座標系的變換,因此此時是一個豎着的橢圓。
最後,再次旋轉90°,被旋轉到最終的位置,成爲一個橫着的橢圓,這一過程也沒有發生形變,最終就是上圖上看到的綠色橢圓了。
對於奇異值,它跟咱們特徵分解中的特徵值相似,在奇異值矩陣中也是按照從大到小排列,並且奇異值的減小特別的快,在不少狀況下,前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
係數在數域K中的n個變量的一個二次齊次多項式,稱爲數域K上的一個n元二次型,它的通常形式是:
上式也能夠寫成:
,其中
把上面二次型方程中的係數排成一個n級矩陣A:
把A稱爲二次型的矩陣,它是堆成矩陣。
顯然,二次型的矩陣是惟一的,它的主對角元依次是的稀疏,它的(i,j)元是的係數的一半。
令:
則二次型能夠寫成:
其中A是二次型的矩陣。
用一個例子來講明:
更通常的:
寫成矩陣相乘的形式:
簡單來講,二次型就是經過矩陣研究二次函數,藉助矩陣運算的各類高效技巧,能夠對各類複雜的二次函數具有更好的處理能力和直觀的表現。
設二次曲面S在直角座標系1中的方程爲:
這是一個什麼樣的曲面呢?
解決這個問題的思路是:依賴座標系線性變換的不變性,做直角座標變換,使得在直角座標系2中,S的方程不包含交叉項,只包含單純的平方項,那麼久能夠看出S是什麼二次曲面。
設直角座標系的變換公式爲:
,其中T必定是正交矩陣。
從而,上面二次曲面方程能夠重寫爲:
將上式中,中間的3級矩陣記做A,得:
爲了使新的方程中不出現交叉項,只要使矩陣爲對角矩陣,又因爲,所以也就是隻要使爲對角矩陣,這就是但願A能對角化,而且要找一個正交矩陣T,使A對角化。
因此二次型的主要研究問題就是:對於實數域上的對稱矩陣A,可否找到正交矩陣T,使爲對角矩陣?
咱們下面來看一些具體的例子。
下面展現了一個原的方程:
咱們經過線性變換,改變一下二次型矩陣:
能夠看到,橢圓和圓之間是線性關係,經過矩陣變換就能夠從圓變爲橢圓,咱們繼續扭曲:
咱們發現雙曲線和圓之間也是線性關係,準確的說是仿射的。
其實圓、橢圓、雙曲線之間關係很緊密的,統稱爲圓錐曲線,都是圓錐體和平面的交線。上面這幾個例子可能仍是不太直觀,咱們來看下面的動圖:
Relevant Link:
https://www.matongxue.com/madocs/271.html
有了上面對矩陣類似分解,特徵值/特徵向量的討論,咱們這節開始討論PCA主成分分析,這是一種降維手段,瞭解其底層數學原理後讀者朋友會發現其並不複雜,甚至很簡單質樸。
先擱置PCA的具體原理概念在一邊,這個小節咱們經過一個生活中的常見例子,展現在只有一個特徵值的狀況下進行降維處理,這裏所謂的只有一個特徵值指的是降維到能夠獲得一個1維向量,咱們後面會解釋原理,讀者朋友這裏姑且忽略。
假設如今咱們採集了一組房屋的兩個方面的特徵數據,【房價、面積】,能夠看出二者徹底正相關,有一列實際上是多餘的:
把這個二維數據畫在座標軸上,橫縱座標分別爲「房價」、「面積」,能夠看出它們排列爲一條直線:
咱們如今旋轉座標系,讓橫座標和這條直線重合:
旋轉後的座標系,橫縱座標再也不表明「房價」、「面積」了(由於咱們轉換了向量基),新的座標系而是二者的混合,這裏把它們稱做「主元1」、「主元2」,座標值很容易用勾股定理計算出來,好比在「主元1」的座標值爲下圖,同時,很顯然 在「主元2」上的座標爲0:
咱們把全部的數據點換算到新的座標系上:
能夠看到,由於「主元2」全都爲0,徹底是多餘的,咱們只須要「主元1」就夠了,這樣就把數據降爲了一維,並且沒有丟失任何信息:
接下來咱們繼續上面那個例子,可是咱們稍微修改一下采集到的數據集,將問題變得更貼近現實業務場景一些,標題這裏寫特徵值數量爲二,讀者朋友也能夠先忽略,咱們後面解釋:
觀察這組數據,很明顯,第二列和第一列依然存在着某種正相關,可是這回已經不像上個小節那樣是徹底相等了,而是有了一些本身的變化。
把這個二維數據畫在座標軸上,橫縱座標分別爲「房價」、「面積」,雖然數據看起來很接近一條直線,可是終究不在一條直線上:
如今新問題來了,這個狀況要怎麼降維呢?降維後的新的數據又是什麼樣的呢?
要回答這個問題,咱們須要將思路往回倒退,回到向量在座標系(向量基)中的表示,以及座標系的變換這個問題上來。
先討論只有一個點的狀況,在某座標系有一個點, ,它表示在該座標系向量基 的線性組合:
當使用不一樣的線性變換對座標系進行線性變換時,在不一樣座標系中, 的值會有所不一樣(不一樣的座標系表明了不一樣的視角),以下圖:
注意, 到原點的距離 不會由於座標系改變而改變:
因此,在某座標系下分配給 較多,那麼分配給 的就必然較少,反之亦然。最極端的狀況是,在某個座標系下,所有分配給了 ,使得 ,以下圖:
上圖對應的就是上個小節咱們的降維結果,將二維的數據徹底無損地降維到了一維。
可是遺憾的是,這個狀況在本例的數據集中是不可能的。由於其實上個小節的數據集中隱含了一個重要條件我沒有指出,即由於上個小節中的數據集的特徵值只有1個,特徵向量也只有一個,因此能夠從2列直接降維到1列。可是這個小節中的數據特徵向量有2個,特徵向量也有2個,是不可能無損地降維到一維的。
爲何沒法無損的降維到1維呢?咱們將問題擴展到兩個點 ,就能說清楚緣由了,兩個點以上本質是相似的,下圖給出一個圖示:
能夠直觀地看到,咱們沒法找到一個完美的座標系,使得a,b點都同時能落在同一個座標系上,也就說,沒法無損地降維到1維。
注意,這裏是說」不能無損地降到1維「,若是能夠接受數據損失,咱們強行地丟棄另外一個方向上的向量,也是能夠降到1維的。
好了!如今咱們已經認命了,即沒法無損地降維到1維,這個時候,咱們要改變策略,咱們但願找到一組新的座標系,這組座標系可以知足如下幾個特徵:
如何實現上述兩個目標呢?這就是接下來要詳述的PCA算法的原理。
好了,討論到了這裏,感性部分已經闡述完畢,總結一下就是:
以上部分都是一些感性化的討論,不具有實際操做性。接下來咱們要開始討論PCA的具體理論,看看如何用數學方式來描述上面的理論並進行實際降維操做。
假設有以下數據:
上圖中的2個數據向量,在初始座標系下(也就是天然基 )下座標值爲:
圖示以下:
隨着座標系的不一樣, 的值會不斷變化(在不一樣座標系下的不一樣表現)。
如今咱們的目標是:想盡可能多分配給 ,儘量少的分配給Y一、Y2,根據最小二乘法的思想,就是讓下式成立:
要實現上式,就須要找到一個新的座標系,咱們假設新的座標系以下:
則原始數據在新座標系下其中一個座標系e1的投影爲:
帶上上面最小二乘公式有:
上式實際上是一個二次型:
這裏矩陣 就是二次型,是一個對稱矩陣,能夠進行以下的奇異值分解:
其中, 爲正交矩陣,即 。
而 是對角矩陣:
其中, 是奇異值, 。
將 代回原方程:
由於 是正交矩陣,因此令:
所得的 也是單位向量,即:
繼續代回原方程:
至此,最初求最大值的問題就轉化爲了:
能夠用拉格朗日乘子法計算上述條件極值,結果是當 時取到極值。
所以能夠推出要尋找的主元1,即:
即:
一樣的思路能夠求出:
咱們上個章節經過一個具體的例子,推導瞭如何獲得一個最優的降維座標系。
可是請讀者朋友注意的是,上一節對最優化目標的描述是:想盡可能多分配給 ,儘量少的分配給Y一、Y2。這句話仍是過於直觀和感性,咱們這節用協方差矩陣的方式來形式化地定義出PCA降維的目標是什麼。
PCA降維的本質是基變換,若是咱們必須使用一組新的基來表示原始數據,又但願儘可能保留原始的信息(保留原始數據的機率分佈),咱們應該如何選擇?
而不一樣的基變換對應了不一樣的投影方向,咱們但願投影后的投影值儘量分散。數據越分散,可分性就越強,可分性越強,機率分佈保存的就越完整。 這種分散程度,能夠用數學上的方差來表述:
可是光有方差仍是不夠的,考慮三維降到二維問題。首先咱們但願找到一個方向使得投影后方差最大,這樣就完成了第一個方向的選擇,繼而咱們選擇第二個投影方向。若是咱們仍是單純只選擇方差最大的方向,很明顯,這個方向與第一個方向應該是「幾乎重合在一塊兒」,顯然這樣的維度是沒有用的,所以,應該有其餘約束條件。
從直觀上說,讓兩個新的向量基儘量表示更多的原始信息,同時咱們不但願它們之間存在(線性)相關性的,由於相關性意味着兩個字段不是徹底獨立,必然存在重複表示的信息。
數學上能夠用兩個字段的協方差表示其相關性:
,這裏Y表示第二個向量基。
當協方差爲0時,表示兩個字段徹底獨立。爲了讓協方差爲0,咱們選擇第二個基時只能在與第一個基正交的方向上選擇。所以最終選擇的兩個方向必定是彼此正交的。
用協方差矩陣來統一表示同一個向量基內數據的離散方差及不一樣向量基間相關性協方差這兩個數學概念:
根據上述推導,咱們要達到的優化目標,用數學語言等價於:將協方差矩陣對角化,即除對角線(方差要儘量大)外的其它元素化爲0(協方差爲0),而且在對角線上將元素按大小從上到下排列(這樣便於咱們篩選出方差最大的k個向量基),這樣咱們就達到了優化目的。
均可以進行奇異值分解:
矩陣P上個章節解釋過了,指的是原始數據的二次型矩陣。協方差矩陣 的奇異值分解和 相差無幾,只是奇異值縮小了 倍,可是不妨礙奇異值之間的大小關係,因此在實際問題中,每每都是直接分解協方差矩陣 。
考慮採樣y=sin(x)半個週期所得到的數據:
雖然上述數據顯然是線性不相關的(平均而言,當x值增長時,y值增長的和它減小的同樣多),所以對應於一個對角的協方差矩陣,但這兩個變量之間仍然有明確的非線性關係。
通常狀況下,PCA會減小數據中的線性相關性,但不會刪除統計相關。若是咱們的數據集是非線性相關的,那麼可能不適合用PCA進行降維。
PCA的一個最大假設是,最能區別的信息經過特徵空間中的最大方差捕獲。由於最大方差方向編碼的信息最多,這極可能是真的。
然而,有一些狀況,其中的區別信息實際駐留在最小方差的方向,使得PCA能夠大大損害分類性能。舉個例子,考慮下圖的兩種狀況(將二維特徵空間降到1D表示):
若是最能區別的信息包含在較小的特徵向量中,應用PCA實際上可能惡化維數的詛咒,由於如今須要更復雜的分類模型(例如非線性分類器)來分類低維問題。在這種狀況下,其餘降維的方法可能會感興趣,如線性判別分析(LDA),其試圖找到可以一個映射向量,該向量最優的分開兩個類別。
PCA降維,須要找到樣本協方差矩陣 的最大的k個特徵向量,而後用這最大的k個特徵向量張成的矩陣來作低維投影降維。能夠看出,在這個過程當中須要先求出協方差矩陣 ,當樣本數多樣本特徵數也多的時候,這個計算量是很大的。
注意到咱們的SVD也能夠獲得協方差矩陣 最大的k個特徵向量張成的矩陣,並且同時SVD有個好處,有一些SVD的實現算法能夠不用先求出協方差矩陣 ,也能求出咱們的右奇異矩陣V。也就是說,咱們的PCA算法能夠不用作特徵分解,而是作SVD來完成。這個方法在樣本量很大的時候頗有效。實際上,scikit-learn的PCA算法的背後真正的實現就是用的SVD,而不是咱們咱們認爲的暴力特徵分解。
另外一方面,注意到PCA僅僅使用了咱們SVD的右奇異矩陣,沒有使用左奇異矩陣,那麼左奇異矩陣有什麼用呢?
假設咱們的樣本是m×n的矩陣X,若是咱們經過SVD找到了矩陣 最大的k個特徵向量張成的m×k維矩陣U,則咱們若是進行以下處理:
能夠獲得一個k x n的矩陣X‘,這個矩陣和咱們原來的m×n維樣本矩陣X相比,行數從m減到了k,可見對行數進行了壓縮,左奇異矩陣能夠用於行數的壓縮。
右奇異矩陣能夠用於列數即特徵維度的壓縮,也就是咱們的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