局部線性嵌入(Locally Linear Embedding,如下簡稱LLE)也是很是重要的降維方法。和傳統的PCA,LDA等關注樣本方差的降維方法相比,LLE關注於降維時保持樣本局部的線性特徵,因爲LLE在降維時保持了樣本的局部特徵,它普遍的用於圖像圖像識別,高維數據可視化等領域。下面咱們就對LLE的原理作一個總結。算法
LLE屬於流形學習(Manifold Learning)的一種。所以咱們首先看看什麼是流形學習。流形學習是一大類基於流形的框架。數學意義上的流形比較抽象,不過咱們能夠認爲LLE中的流形是一個不閉合的曲面。這個流形曲面有數據分佈比較均勻,且比較稠密的特徵,有點像流水的味道。基於流行的降維算法就是將流形從高維到低維的降維過程,在降維的過程當中咱們但願流形在高維的一些特徵能夠獲得保留。app
一個形象的流形降維過程以下圖。咱們有一塊捲起來的布,咱們但願將其展開到一個二維平面,咱們但願展開後的布可以在局部保持布結構的特徵,其實也就是將其展開的過程,就想兩我的將其拉開同樣。框架
在局部保持布結構的特徵,或者說數據特徵的方法有不少種,不一樣的保持方法對應不一樣的流形算法。好比等距映射(ISOMAP)算法在降維後但願保持樣本之間的測地距離而不是歐式距離,由於測地距離更能反映樣本之間在流形中的真實距離。函數
可是等距映射算法有一個問題就是他要找全部樣本全局的最優解,當數據量很大,樣本維度很高時,計算很是的耗時,鑑於這個問題,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$$spa
其中,$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'$$blog
也就是說,投影先後線性關係的權重係數$w_{12}, w_{13}, w_{14}$是儘可能不變或者最小改變的。數學
從上面能夠看出,線性關係只在樣本的附近起做用,離樣本遠的樣本對局部的線性關係沒有影響,所以降維的複雜度下降了不少。it
下面咱們推導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.
在上一節咱們已經基本推導了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})$
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這三步過程當中尋求優化的方法。具體這裏就很少講了。
LLE是普遍使用的圖形圖像降維方法,它實現簡單,可是對數據的流形分佈特徵有嚴格的要求。好比不能是閉合流形,不能是稀疏的數據集,不能是分佈不均勻的數據集等等,這限制了它的應用。下面總結下LLE算法的優缺點。
LLE算法的主要優勢有:
1)能夠學習任意維的局部線性的低維流形
2)算法歸結爲稀疏矩陣特徵分解,計算複雜度相對較小,實現容易。
LLE算法的主要缺點有:
1)算法所學習的流形只能是不閉合的,且樣本集是稠密均勻的。
2)算法對最近鄰樣本數的選擇敏感,不一樣的最近鄰數對最後的降維結果有很大影響。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com)