四大機器學習降維演算法:PCA、LDA、LLE、Laplacian Eigenmaps
引言
機器學習領域中所謂的降維就是指採用某種對映方法,將原高維空間中的資料點對映到低維度的空間中。降維的本質是學習一個對映函式 f : x->y,其中x是原始資料點的表達,目前最多使用向量表達形式。 y是資料點對映後的低維向量表達,通常y的維度小於x的維度(當然提高維度也是可以的)。f可能是顯式的或隱式的、線性的或非線性的。
目前大部分降維演算法處理向量表達的資料,也有一些降維演算法處理高階張量表達的資料。之所以使用降維後的資料表示是因為在原始的高維空間中,包含有冗餘資訊以及噪音資訊,在實際應用例如影象識別中造成了誤差,降低了準確率;而通過降維,我們希望減少冗餘資訊所造成的誤差,提高識別(或其他應用)的精度。又或者希望通過降維演算法來尋找資料內部的本質結構特徵。
在很多演算法中,降維演算法成為了資料預處理的一部分,如PCA。事實上,有一些演算法如果沒有降維預處理,其實是很難得到很好的效果的。
主成分分析演算法(PCA)
Principal Component Analysis(PCA)是最常用的線性降維方法,它的目標是通過某種線性投影,將高維的資料對映到低維的空間中表示,並期望在所投影的維度上資料的方差最大,以此使用較少的資料維度,同時保留住較多的原資料點的特性。
通俗的理解,如果把所有的點都對映到一起,那麼幾乎所有的資訊(如點和點之間的距離關係)都丟失了,而如果對映後方差儘可能的大,那麼資料點則會分散開來,以此來保留更多的資訊。可以證明,PCA是丟失原始資料資訊最少的一種線性降維方式。(實際上就是最接近原始資料,但是PCA並不試圖去探索資料內在結構)
設n維向量w為目標子空間的一個座標軸方向(稱為映射向量),最大化資料對映後的方差,有:
其中m是資料例項的個數, xi是資料例項i的向量表達, x拔是所有資料例項的平均向量。定義W為包含所有映射向量為列向量的矩陣,經過線性代數變換,可以得到如下優化目標函式:
其中tr表示矩陣的跡,
A是資料協方差矩陣。
容易得到最優的W是由資料協方差矩陣前k個最大的特徵值對應的特徵向量作為列向量構成的。這些特徵向量形成一組正交基並且最好地保留了資料中的資訊。
PCA的輸出就是Y = W‘X,由X的原始維度降低到了k維。
PCA追求的是在降維之後能夠最大化保持資料的內在資訊,並通過衡量在投影方向上的資料方差的大小來衡量該方向的重要性。但是這樣投影以後對資料的區分作用並不大,反而可能使得資料點揉雜在一起無法區分。這也是PCA存在的最大一個問題,這導致使用PCA在很多情況下的分類效果並不好。具體可以看下圖所示,若使用PCA將資料點投影至一維空間上時,PCA會選擇2軸,這使得原本很容易區分的兩簇點被揉雜在一起變得無法區分;而這時若選擇1軸將會得到很好的區分結果。
Discriminant Analysis所追求的目標與PCA不同,不是希望保持資料最多的資訊,而是希望資料在降維後能夠很容易地被區分開來。後面會介紹LDA的方法,是另一種常見的線性降維方法。另外一些非線性的降維方法利用資料點的區域性性質,也可以做到比較好地區分結果,例如LLE,Laplacian Eigenmap等。以後會介紹。
LDA
Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一種有監督的(supervised)線性降維演算法。與PCA保持資料資訊不同,LDA是為了使得降維後的資料點儘可能地容易被區分!
假設原始資料表示為X,(m*n矩陣,m是維度,n是sample的數量)
既然是線性的,那麼就是希望找到映射向量a, 使得 a‘X後的資料點能夠保持以下兩種性質:
1、同類的資料點儘可能的接近(within class)
2、不同類的資料點儘可能的分開(between class)
所以呢還是上次PCA用的這張圖,如果圖中兩堆點是兩類的話,那麼我們就希望他們能夠投影到軸1去(PCA結果為軸2),這樣在一維空間中也是很容易區分的。
接下來是推導,因為這裡寫公式很不方便,我就引用Deng Cai老師的一個ppt中的一小段圖片了:
思路還是非常清楚的,目標函式就是最後一行J(a),μ(一飄)就是對映後的中心用來評估類間距,s(一瓢)就是對映後的點與中心的距離之和用來評估類內距。J(a)正好就是從上述兩個性質演化出來的。
因此兩類情況下:
加上a’a=1的條件(類似於PCA)
可以拓展成多類:
以上公式推導可以具體參考pattern classification書中的相應章節,講fisher discirminant的
OK,計算映射向量a就是求最大特徵向量,也可以是前幾個最大特徵向量組成矩陣A=[a1,a2,….ak]之後,就可以對新來的點進行降維了:y = A’X(線性的一個好處就是計算方便!)
可以發現,LDA最後也是轉化成為一個求矩陣特徵向量的問題,和PCA很像,事實上很多其他的演算法也是歸結於這一類,一般稱之為譜(spectral)方法。
線性降維演算法我想最重要的就是PCA和LDA了,後面還會介紹一些非線性的方法。
區域性線性嵌入(LLE)
Locally linear embedding(LLE)是一種非線性降維演算法,它能夠使降維後的資料較好地保持原有流形結構。LLE可以說是流形學習方法最經典的工作之一。很多後續的流形學習、降維方法都與LLE有密切聯絡。
見圖1,使用LLE將三維資料(b)對映到二維(c)之後,對映後的資料仍能保持原有的資料流形(紅色的點互相接近,藍色的也互相接近),說明LLE有效地保持了資料原有的流行結構。
但是LLE在有些情況下也並不適用,如果資料分佈在整個封閉的球面上,LLE則不能將它對映到二維空間,且不能保持原有的資料流形。那麼我們在處理資料中,首先假設資料不是分佈在閉合的球面或者橢球面上。
圖1 LLE降維演算法使用例項
LLE演算法認為每一個數據點都可以由其近鄰點的線性加權組合構造得到。演算法的主要步驟分為三步:(1)尋找每個樣本點的k個近鄰點;(2)由每個樣本點的近鄰點計算出該樣本點的區域性重建權值矩陣;(3)由該樣本點的區域性重建權值矩陣和其近鄰點計算出該樣本點的輸出值。具體的演算法流程如圖2所示:
Laplacian Eigenmaps 拉普拉斯特徵對映
繼續寫一點經典的降維演算法,前面介紹了PCA,LDA,LLE,這裡講一講Laplacian Eigenmaps。其實不是說每一個演算法都比前面的好,而是每一個演算法都是從不同角度去看問題,因此解決問題的思路是不一樣的。這些降維演算法的思想都很簡單,卻在有些方面很有效。這些方法事實上是後面一些新的演算法的思路來源。
Laplacian Eigenmaps[1] 看問題的角度和LLE有些相似,也是用區域性的角度去構建資料之間的關係。
它的直觀思想是希望相互間有關係的點(在圖中相連的點)在降維後的空間中儘可能的靠近。Laplacian Eigenmaps可以反映出資料內在的流形結構。
使用時演算法具體步驟為:
步驟1:構建圖
使用某一種方法來將所有的點構建成一個圖,例如使用KNN演算法,將每個點最近的K個點連上邊。K是一個預先設定的值。
步驟2:確定權重
確定點與點之間的權重大小,例如選用熱核函式來確定,如果點i和點j相連,那麼它們關係的權重設定為:
使用最小的m個非零特徵值對應的特徵向量作為降維後的結果輸出。
前面提到過,Laplacian Eigenmap具有區分資料點的特性,可以從下面的例子看出:
見圖1所示,左邊的圖表示有兩類資料點(資料是圖片),中間圖表示採用Laplacian Eigenmap降維後每個資料點在二維空間中的位置,右邊的圖表示採用PCA並取前兩個主要方向投影后的結果,可以清楚地看到,在此分類問題上,Laplacian Eigenmap的結果明顯優於PCA。
圖2 roll資料的降維
圖2說明的是,高維資料(圖中3D)也有可能是具有低維的內在屬性的(圖中roll實際上是2D的),但是這個低維不是原來座標表示,例如如果要保持區域性關係,藍色和下面黃色是完全不相關的,但是如果只用任何2D或者3D的距離來描述都是不準確的。
下面三個圖是Laplacian Eigenmap在不同引數下的展開結果(降維到2D),可以看到,似乎是要把整個帶子拉平了。於是藍色和黃色差的比較遠。