局部線性嵌入(Locally Linear Embedding,以下簡稱LLE)也是非常重要的降維方法。和傳統的PCA,LDA等關注樣本方差的降維方法相比,LLE關注於降維時保持樣本局部的線性特征,由於LLE在降維時保持了樣本的局部特征,它廣泛的用於圖像圖像識別,高維數據可視化等領域。下面我們就對LLE的原理做一個總結。
1. 流形學習概述
LLE屬於流形學習(Manifold Learning)的一種。因此我們首先看看什么是流形學習。流形學習是一大類基於流形的框架。數學意義上的流形比較抽象,不過我們可以認為LLE中的流形是一個不閉合的曲面。這個流形曲面有數據分布比較均勻,且比較稠密的特征,有點像流水的味道。基於流行的降維算法就是將流形從高維到低維的降維過程,在降維的過程中我們希望流形在高維的一些特征可以得到保留。
一個形象的流形降維過程如下圖。我們有一塊卷起來的布,我們希望將其展開到一個二維平面,我們希望展開后的布能夠在局部保持布結構的特征,其實也就是將其展開的過程,就想兩個人將其拉開一樣。
在局部保持布結構的特征,或者說數據特征的方法有很多種,不同的保持方法對應不同的流形算法。比如等距映射(ISOMAP)算法在降維后希望保持樣本之間的測地距離而不是歐式距離,因為測地距離更能反映樣本之間在流形中的真實距離。
但是等距映射算法有一個問題就是他要找所有樣本全局的最優解,當數據量很大,樣本維度很高時,計算非常的耗時,鑒於這個問題,LLE通過放棄所有樣本全局最優的降維,只是通過保證局部最優來降維。同時假設樣本集在局部是滿足線性關系的,進一步減少的降維的計算量。
2. LLE思想
現在我們來看看LLE的算法思想。
LLE首先假設數據在較小的局部是線性的,也就是說,某一個數據可以由它鄰域中的幾個樣本來線性表示。比如我們有一個樣本$x_1$,我們在它的原始高維鄰域里用K-近鄰思想找到和它最近的三個樣本$x_2,x_3,x_4$. 然后我們假設$x_1$可以由$x_2,x_3,x_4$線性表示,即:$$x_1 = w_{12}x_2 + w_{13}x_3 +w_{14}x_4$$
其中,$w_{12}, w_{13}, w_{14}$為權重系數。在我們通過LLE降維后,我們希望$x_1$在低維空間對應的投影$x_1'$和$x_2,x_3,x_4$對應的投影$x_2',x_3',x_4'$也盡量保持同樣的線性關系,即$$x_1' \approx w_{12}x_2' + w_{13}x_3' +w_{14}x_4'$$
也就是說,投影前后線性關系的權重系數$w_{12}, w_{13}, w_{14}$是盡量不變或者最小改變的。
從上面可以看出,線性關系只在樣本的附近起作用,離樣本遠的樣本對局部的線性關系沒有影響,因此降維的復雜度降低了很多。
下面我們推導LLE算法的過程。
3. LLE算法推導
對於LLE算法,我們首先要確定鄰域大小的選擇,即我們需要多少個鄰域樣本來線性表示某個樣本。假設這個值為k。我們可以通過和KNN一樣的思想通過距離度量比如歐式距離來選擇某樣本的k個最近鄰。
在尋找到某個樣本的$x_i$的k個最近鄰之后我們就需要找到找到$x_i$和這k個最近鄰之間的線性關系,也就是要找到線性關系的權重系數。找線性關系,這顯然是一個回歸問題。假設我們有m個n維樣本$\{x_1,x_2,...,x_m\}$,我們可以用均方差作為回歸問題的損失函數:即:$$J(w) = \sum\limits_{i=1}^{m}||x_i-\sum\limits_{j \in Q(i)}w_{ij}x_j||_2^2$$
其中,$Q(i)$表示$i$的k個近鄰樣本集合。一般我們也會對權重系數$w_{ij}$做歸一化的限制,即權重系數需要滿足$$\sum\limits_{j \in Q(i)}w_{ij} = 1$$
對於不在樣本$x_i$鄰域內的樣本$x_j$,我們令對應的$w_{ij} = 0$,這樣可以把$w$擴展到整個數據集的維度。
也就是我們需要通過上面兩個式子求出我們的權重系數。一般我們可以通過矩陣和拉格朗日子乘法來求解這個最優化問題。
對於第一個式子,我們先將其矩陣化:$$ \begin{align} J(W) & = \sum\limits_{i=1}^{m}||x_i-\sum\limits_{j \in Q(i)}w_{ij}x_j||_2^2 \\& = \sum\limits_{i=1}^{m}||\sum\limits_{j \in Q(i)}w_{ij}x_i-\sum\limits_{j \in Q(i)}w_{ij}x_j||_2^2 \\& = \sum\limits_{i=1}^{m}||\sum\limits_{j \in Q(i)}w_{ij}(x_i-x_j)||_2^2 \\& = \sum\limits_{i=1}^{m} W_i^T(x_i-x_j)(x_i-x_j)^TW_i \end{align}$$
其中$W_i =(w_{i1}, w_{i2},...w_{ik})^T$。
我們令矩陣$Z_i=(x_i-x_j)(x_i-x_j)^T,j \in Q(i)$,則第一個式子進一步簡化為$J(W) = \sum\limits_{i=1}^{k} W_i^TZ_iW_i$.對於第二個式子,我們可以矩陣化為:$$\sum\limits_{j \in Q(i)}w_{ij} = W_i^T1_k = 1$$
其中$1_k$為k維全1向量。
現在我們將矩陣化的兩個式子用拉格朗日子乘法合為一個優化目標:$$L(W) = \sum\limits_{i=1}^{k} W_i^TZ_iW_i + \lambda(W_i^T1_k - 1)$$
對$W$求導並令其值為0,我們得到$$2Z_iW_i + \lambda1_k = 0$$
即我們的$$W_i = \lambda'Z_i^{-1}1_k$$
其中 $\lambda' = -\frac{1}{2}\lambda$為一個常數。利用 $W_i^T1_k = 1$,對$W_i$歸一化,那么最終我們的權重系數$W_i$為:$$W_i = \frac{Z_i^{-1}1_k}{1_k^TZ_i^{-1}1_k}$$
現在我們得到了高維的權重系數,那么我們希望這些權重系數對應的線性關系在降維后的低維一樣得到保持。假設我們的n維樣本集$\{x_1,x_2,...,x_m\}$在低維的d維度對應投影為$\{y_1,y_2,...,y_m\}$, 則我們希望保持線性關系,也就是希望對應的均方差損失函數最小,即最小化損失函數$J(Y)$如下:$$J(y) = \sum\limits_{i=1}^{m}||y_i-\sum\limits_{j=1}^{m}w_{ij}y_j||_2^2$$
可以看到這個式子和我們在高維的損失函數幾乎相同,唯一的區別是高維的式子中,高維數據已知,目標是求最小值對應的權重系數$W$,而我們在低維是權重系數$W$已知,求對應的低維數據。注意,這里的$W$已經是$m \times m$維度,之前的$W$是$m \times k$維度,我們將那些不在鄰域位置的$W$的位置取值為0,將$W$擴充到$m \times m$維度。
為了得到標准化的低維數據,一般我們也會加入約束條件如下:$$\sum\limits_{i=1}^{m}y_i =0;\;\; \frac{1}{m}\sum\limits_{i=1}^{m}y_iy_i^T = I$$
首先我們將目標損失函數矩陣化:$$ \begin{align} J(Y) & = \sum\limits_{i=1}^{m}||y_i-\sum\limits_{j=1}^{m}w_{ij}y_j||_2^2 \\& = \sum\limits_{i=1}^{m}||YI_i-YW_i||_2^2 \\& = tr(Y(I-W)(I-W)^TY^T) \end{align}$$
如果我們令$M=(I-W)(I-W)^T$,則優化函數轉變為最小化下式:$J(Y) = tr(YMY^T)$,tr為跡函數。約束函數矩陣化為:$YY^T=mI$
如果大家熟悉譜聚類和PCA的優化,就會發現這里的優化過程幾乎一樣。其實最小化J(Y)對應的Y就是M的最小的d個特征值所對應的d個特征向量組成的矩陣。當然我們也可以通過拉格朗日函數來得到這個:$$L(Y) = tr(YMY^T+\lambda(YY^T-mI))$$
對Y求導並令其為0,我們得到$2MY^T + 2\lambda Y^T =0$,即$MY^T = \lambda' Y^T$,這樣我們就很清楚了,要得到最小的d維數據集,我們需要求出矩陣M最小的d個特征值所對應的d個特征向量組成的矩陣$Y=(y_1,y_2,...y_d)^T$即可。
一般的,由於M的最小特征值為0不能反應數據特征,此時對應的特征向量為全1。我們通常選擇M的第2個到第d+1個最小的特征值對應的特征向量$M=(y_2,y_3,...y_{d+1})$來得到最終的Y。為什么M的最小特征值為0呢?這是因為$W^Te =e$, 得到$|W^T-I|e =0$,由於$e \neq 0$,所以只有$W^T-I =0$,即 $(I-W)^T=0$,兩邊同時左乘$I-W$,即可得到$(I-W)(I-W)^Te =0e$,即M的最小特征值為0.
4. LLE算法流程
在上一節我們已經基本推導了LLE降維的整個流程,現在我們對算法過程做一個總結。整個LLE算法用一張圖可以表示如下:
從圖中可以看出,LLE算法主要分為三步,第一步是求K近鄰的過程,這個過程使用了和KNN算法一樣的求最近鄰的方法。第二步,就是對每個樣本求它在鄰域里的K個近鄰的線性關系,得到線性關系權重系數W,具體過程在第三節第一部分。第三步就是利用權重系數來在低維里重構樣本數據,具體過程在第三節第二部分。
具體過程如下:
輸入:樣本集$D=\{x_1,x_2,...,x_m\}$, 最近鄰數k,降維到的維數d
輸出: 低維樣本集矩陣$D'$
1) for i 1 to m, 按歐式距離作為度量,計算和$x_i$最近的的k個最近鄰$(x_{i1}, x_{i2}, ...,x_{ik},)$
2) for i 1 to m, 求出局部協方差矩陣$Z_i=(x_i-x_j)(x_i-x_j)^T$,並求出對應的權重系數向量:$$W_i = \frac{Z_i^{-1}1_k}{1_k^TZ_i^{-1}1_k}$$
3) 由權重系數向量$W_i$組成權重系數矩陣$W$,計算矩陣$M=(I-W)(I-W)^T$
4) 計算矩陣M的前d+1個特征值,並計算這d+1個特征值對應的特征向量$\{y_1,y_2,...y_{d+1}\}$。
5)由第二個特征向量到第d+1個特征向量所張成的矩陣即為輸出低維樣本集矩陣$D' = (y_2,y_3,...y_{d+1})$
5. LLE的一些改進算法
LLE算法很簡單高效,但是卻有一些問題,比如如果近鄰數k大於輸入數據的維度時,我們的權重系數矩陣不是滿秩的。為了解決這樣類似的問題,有一些LLE的變種產生出來。比如:Modified Locally Linear Embedding(MLLE)和Hessian Based LLE(HLLE)。對於HLLE,它不是考慮保持局部的線性關系,而是保持局部的Hessian矩陣的二次型的關系。而對於MLLE,它對搜索到的最近鄰的權重進行了度量,我們一般都是找距離最近的k個最近鄰就可以了,而MLLE在找距離最近的k個最近鄰的同時要考慮近鄰的分布權重,它希望找到的近鄰的分布權重盡量在樣本的各個方向,而不是集中在一側。
另一個比較好的LLE的變種是Local tangent space alignment(LTSA),它希望保持數據集局部的幾何關系,在降維后希望局部的幾何關系得以保持,同時利用了局部幾何到整體性質過渡的技巧。
這些算法原理都是基於LLE,基本都是在LLE這三步過程中尋求優化的方法。具體這里就不多講了。
6. LLE總結
LLE是廣泛使用的圖形圖像降維方法,它實現簡單,但是對數據的流形分布特征有嚴格的要求。比如不能是閉合流形,不能是稀疏的數據集,不能是分布不均勻的數據集等等,這限制了它的應用。下面總結下LLE算法的優缺點。
LLE算法的主要優點有:
1)可以學習任意維的局部線性的低維流形
2)算法歸結為稀疏矩陣特征分解,計算復雜度相對較小,實現容易。
LLE算法的主要缺點有:
1)算法所學習的流形只能是不閉合的,且樣本集是稠密均勻的。
2)算法對最近鄰樣本數的選擇敏感,不同的最近鄰數對最后的降維結果有很大影響。
(歡迎轉載,轉載請注明出處。歡迎溝通交流: liujianping-ok@163.com)