機器學習-降維(SVD、PCA)

機器學習-降維(SVD、PCA)


降維是機器學習中很重要的一種思想。在機器學習中經常會碰到一些高維的數據集,而在高維數據情形下會出現數據樣本稀疏,距離計算等困難,這類問題是所有機器學習方法共同面臨的嚴重問題,稱之爲“維度災難”。另外在高維特徵中容易出現特徵之間的線性相關,這也就意味着有的特徵是冗餘存在的。基於這些問題,降維思想就出現了。

奇異值分解(SVD)

SVD算法不僅可以用於降維算法中的特徵分解,還可以用於推薦系統,以及自然語言處理等領域。是很多機器學習算法的基石。

在線性代數中我們學過矩陣(在這裏的矩陣必須是n×n的方陣)的特徵分解,矩陣A和特徵值、特徵向量之間的關係如下
在這裏插入圖片描述
將A矩陣做特徵分解,特徵向量Q是一組正交向量,具體表達式如下
在這裏插入圖片描述 
在這裏因爲Q中n個特徵向量爲標準正交基,滿足
QT=Q−1
也就是說Q爲酉矩陣。

矩陣的特徵值分解的侷限性比較大,要求矩陣A必須是方陣(即行和列必須相等的矩陣),那麼對於一般的矩陣該如何做分解?奇異值分解就可以處理這些一般性的矩陣,假設現在矩陣A是一個m×n的矩陣,我們可以將它的奇異值分解寫成下面的形式
在這裏插入圖片描述
在這裏U是m×m的矩陣,Σ是m×n的矩陣(除對角線上的值,其餘的值全爲0),V是n×n的矩陣。在這裏矩陣U和V都是酉矩陣,也就是說滿足
在這裏插入圖片描述
對於SVD的定義如下圖
在這裏插入圖片描述
矩陣
在這裏插入圖片描述
是一個n×n的方陣,我們對該方陣做特徵值分解,可以得到下面的表達式
在這裏插入圖片描述
我們將這裏得到的向量vi稱爲右奇異向量。通過該值我們可以得到ui(左奇異向量,方陣U中的向量)和σi(矩陣Σ中對角線上的值,也就是我們的奇異值)
在這裏插入圖片描述
對於奇異值,它跟我們特徵分解中的特徵值相似,在奇異值矩陣Σ中也是按照從大到小排列的,而且奇異值減小的特別快。在很多情況下,前10%甚至前1%的奇異值的和就佔總和的99%以上的比例。也就是說我們可以用最大的K個奇異值和對應的左右奇異向量來近似的描述矩陣,如下圖所示
在這裏插入圖片描述
具體表達式如下
 Am×n=Um×mΣm×nVTn×n≈Um×kΣk×kVTk×n
在並行化計算下,奇異值分解是非常快的。但是奇異值分解出的矩陣解釋性不強,有點黑盒子的感覺,不過還是在很多領域有着使用。

主成分分析(PCA)

PCA算法是最常用的算法,在數據壓縮,消除冗餘等領域有着廣泛的使用。

先來回顧下向量的內積,假設存在兩條發自原點的有向線段A和B,如下圖所示
在這裏插入圖片描述
設α是兩個向量之間的夾角,則向量的內積可以表示爲
在這裏插入圖片描述
此時假設向量B的模爲1,則上面的式子可以表示爲
在這裏插入圖片描述
也就是說當向量B的模爲1時,向量A與B的內積等於向量A在向量B上的投影的矢量長度(提醒:這個特性結合後面的基

確定一個向量不能只是單單的靠該直線的本身,也和該直線所在的座標系有關,對於二維空間內向量(x,y)事實上可以表示爲
在這裏插入圖片描述
在這裏(1, 0)和(0, 1)叫做二維空間中的一組基(也就是我們的x,y單位座標軸),如下圖所示
在這裏插入圖片描述
事實上對於一條直線我們可以選擇任意兩個線性無關的單位向量(選擇單位向量是因爲便於計算,參考上面的提醒)來表示它的基,如下圖所示我們用兩條單位對角線作爲基(在這裏我們選擇的基是正交的,因爲正交基具有較好的性質,因此一般都選擇正交基)
在這裏插入圖片描述
有了這些理解之後,我們可以認爲兩個矩陣相乘的意義是將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量爲基所表示的空間(提醒:該結論會結合下面的PCA中從高維到低維的映射來討論

首先假設在低維空間存在這樣一個超平面,將數據從高維映射到該超平面上會使得樣本之間的方差最大(樣本之間方差最大,也就意味着樣本在映射到低維之後仍能較好的保留各樣本之間的差異性。若映射後存在大量的樣本重合,則映射後的樣本中會存在大量無用的樣本)假定對樣本做中心化處理,也就是使得樣本的均值爲0,則所有樣本的方差和可以表示爲
在這裏插入圖片描述
因此我們只要找到一組基,使得樣本投影到每個基上的方差最大,但是這樣存在一個問題,因爲在尋找每個基時都是滿足方差最大,這可能會導致後面的基和前面的基重合,這樣就沒有意義。因此單純的選擇方差最大的方向顯然是不合適的,我們引入一個約束條件。在尋找這樣一組正交基時,我們不僅要使得映射後的方差最大,還要使得各特徵之間的協方差爲0(協方差表示特徵之間的相關性,使得特徵都線性無關)協方差表示如下
在這裏插入圖片描述
那麼對於方差和協方差有沒有一個可以同時表達這兩個值的東西呢?協方差矩陣就可以,協方差矩陣是對稱矩陣,矩陣的對角線上是方差,其餘的值都是協方差,其具體表示如下
在這裏插入圖片描述
那麼問題就好求解了,我們只要將協方差矩陣進行對角化,對角化後的矩陣除了對角線上的值,其餘的值都爲0

設原始數據矩陣X對應的協方差矩陣爲C,而P是一組基按行組成的矩陣,設Y=PX,則Y爲X對P做基變換後的數據。設Y的協方差矩陣爲D,我們推導一下D與C的關係

D=YYT=PXXTPT=PCPT

優化目標變成了尋找一個矩陣P,滿足是正交基矩陣,並且對角元素按從大到小依次排列,那麼P的前K行就是要尋找的基,用P的前K行組成的矩陣乘以X就使得X從N維降到了K維並滿足上述優化條件。

因此現在我們只需要對協方差矩陣C做對角化就好了,而且由於C是實對稱矩陣,因此滿足不同特徵值下的特徵向量兩兩正交。對協方差矩陣C做對角化
在這裏插入圖片描述
然後我們要找的P就是
在這裏插入圖片描述
得到P之後就可以直接求得我們降維後的矩陣Y=PX(注意:這裏對於矩陣X做左乘是會壓縮行的,也就是矩陣Y的行數要少於矩陣X,因此原始矩陣X是n∗m,其中n是特徵數,m是樣本數)。這就是整個PCA的簡單理解流程

事實上在數據量很大時,求協方差矩陣,然後在進行特徵分解是一個很慢的過程,因此在PCA背後的實現也是藉助奇異值分解來做的,在這裏我們只要求得奇異值分解中的左奇異向量或右奇異向量中的一個(具體求哪個是要根據你的X向量的書寫方式的,即行數是樣本數還是特徵數,總之左奇異向量是用來壓縮行數,右奇異向量是用來壓縮列數,而我們的目的是要壓縮特徵數)

在我們的PCA轉換中是一個線性轉換,因此也被稱爲線性降維。但有時數據不是線性的,無法用線性降維獲得好的結果,那麼這裏就引入了我們的核PCA方法來處理這些問題,具體表達式如下

在這裏插入圖片描述

只需要在求協方差矩陣時,將數據先映射到高維(根據低維不可分的數據在高維必定可分的原理),然後再對這高維的數據進行PCA降維處理,爲了減少計算量,像支持向量機中那樣用核函數來處理求內積的問題。這類方法就是核主成分分析方法(KPCA),KPCA由於要做核運算,因此計算量比PCA大很多。

發佈了54 篇原創文章 · 獲贊 5 · 訪問量 4838
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章