流形學習


流形學習

數據降維問題

在很多應用中,數據的維數會很高。以圖像數據為例,我們要識別32x32的手寫數字圖像,如果將像素按行或者列拼接起來形成向量,這個向量的維數是1024。高維的數據不僅給機器學習算法帶來挑戰,而且導致計算量大,此外還會面臨維數災難的問題(這一問題可以直觀的理解成特征向量維數越高,機器學習算法的精度反而會降低)。人所能直觀看到和理解的空間最多是3維的,為了數據的可視化,我們也需要將數據投影到低維空間中,因此就需要有數據降維這種算法來完成此任務。

例如,下圖是將0-9這10個手寫數字投影到3維空間中后的結果。從圖中我們可以清晰的看到這些手寫數字在3維空間中的分布,每一個類一般聚集在某一區域內。例如7位於空間的左上角,而6則位於右下角。

image-20210225154006756

在機器學習算法中,數據降維算法是一個大家族,既有有監督學習的版本,也有無監督學習的版本;既有線性的降維算法,也有非線性的降維算法。

最經典的數據降維算法要數PCA(主成分分析),這是一種線性降維算法,而且是無監督的,它通過線性變換將樣本投影到低維空間中.

但是當數據是非線性的時候,我們常常使用非線性降維技術,即使用一個非線性的映射函數將輸入向量x映射成一個更低維的向量y。

問題的關鍵是這個非線性映射函數如何得到,一般來說,它要使得數據降維之后保持之前的某些結構信息。非線性降維算法的典型代表有核PCA(KPCA,核主成分分析),神經網絡(如自動編碼器),流形學習等。

什么是流形?

流形(manifold)是幾何中的一個概念,它是高維空間中的幾何結構,即空間中的點構成的集合。可以簡單的將流形理解成二維空間的曲線,三維空間的曲面在更高維空間的推廣。

2維空間中的曲線,3維空間中的曲線可以看做是2維和3維空間中的1維流形,因為曲線是1維的。而3維空間中的曲面可以看做是2維的流形,因為曲面是2維的。n維空間中的m維流形就是具有m維幾何形狀的一個子集,在這里,m小於n。

什么是流形學習?

很多應用問題的數據在高維空間中的分布具有某種幾何形狀,即集中在某個低維的流形附近。對於前面所說的32x32的手寫數字圖像,數字7的圖像在1024維空間中應該聚集在某一個形狀的幾何體周圍(如帶狀區域,球面),其他的類別也是如此。

流形學習(manifold learning)假設數據在高維空間的分布位於某一更低維的流形上,基於這個假設來進行數據的分析。對於降維,要保證降維之后的數據同樣滿足與高維空間流形有關的幾何約束關系。除此之外,流形學習還可以用實現聚類,分類以及回歸算法。

假設有一個N維空間中的流形M,即M為N維歐氏空間的一個真子集:\(M\subset \mathbb{R}^N\),流形學習降維算法要實現的是如下映射:\(M\rightarrow \mathbb{R}^n , n<N\)。即將N維空間中流形M上的點映射為n維空間中的點⭐。下面介紹幾種典型的流形降維算法,包括局部線性映射,拉普拉斯特征映射,局部保持投影,等距映射。

局部線性嵌入

局部線性嵌入(LLE)的核心思想是每個樣本點都可以由與它相鄰的多個點的線性組合來近似重構,這相當於用分段的線性面片近似代替復雜的幾何形狀,樣本投影到低維空間之后要保持這種線性重構關系,即有相同的重構系數。

假設數據集由l個D維向量\(x_i\)組成,它們分布在D維空間中的一個流形附近。每個數據點和它的鄰居位於或者接近於流形的一個局部線性片段(平面,體現了線性,類似於微積分中的以直代曲的思想)上,即可以用鄰居點的線性組合來重構,組合系數刻畫了局部面片的幾何特性:\(x_i\approx \sum_jw_{ij}x_j\).權重\(w_{ij}\)第j個數據點對第i個點的組合權重.

這些點的線性組合被用來近似重構數據點i。權重系數通過最小化下面的重構誤差確定:

\[\min_{w_{ij}}\sum^l_{i=1}\Vert x_i-\sum^l_{j=1}w_{ij}x_j\Vert^2 \]

在這里還加上了兩個約束條件:每個點只由它的鄰居來重構,如果\(x_j\)不在\(x_i\)的鄰居集合里則權重值為0,這體現了局部性。另外限定權重矩陣的每一行元素之和為1,即:\(\sum_jw_{ij}=1\).

這是一個帶約束的優化問題,求解該問題可以得到權重系數。這一問題和主成分分析要求解的問題類似。可以證明,這個權重值對平移、旋轉、縮放等幾何變換具有不變性。

假設算法將向量從D維空間的x映射為d維空間的y。每個點在d維空間中的坐標由下面的最優化問題確定:

\[\min_{y_i}\sum^l_{i=1}\Vert y_i-\sum^l_{j=1}w_{ij}y_j \Vert ^2 \]

這里的權重和上一個優化問題的值相同,在前面已經得到。優化的目標是\(y_i\),這個優化問題等價於求解稀疏矩陣的特征值問題。得到y之后,即完成了從D維空間到d維空間的非線性降維。下面是整個過程的示意圖:

image-20210226093211325

拉普拉斯特征映射

拉普拉斯特征映射(LE)是基於圖論的方法。它從樣本點構造帶權重的圖,然后計算圖的拉普拉斯矩,對該矩陣進行特征值分解得到投影變換矩陣。

設W為一個圖的鄰接矩陣,D為一個對角矩陣,其主對角線元素為圖中每個頂點帶權重的度,則拉普拉斯矩陣定義為\(L=D-W\)

無向圖的拉普拉斯矩陣是對稱矩陣,另外可以證明它是半正定矩陣,因此所有特征值為非負實數。降維變換通過對拉普拉斯矩陣進行特征值分解得到.

拉普拉斯矩陣進行數據降維的具體做法

假設有一批樣本點\(x_1,...,x_k\),它們是\(R^l\)空間的向量,降維的目標就是將它們變換為更低維的\(R^m\)空間中的向量\(y_1,...,y_k\),其中\(m<<l\)。這里假設\(x_1,...x_k\in M\),M為嵌入\(R^l\)空間中的一個流形。

算法為樣本點構造加權圖,圖的節點是每一個樣本點,邊為每個節點與它的鄰居節點之間的相似度每個節點只和它的鄰居有連接關系

第一步

算法的第一步是構造圖的鄰接關系。如果樣本點\(x_i\)和樣本點\(x_j\)的距離很近,則為圖的節點i和節點j建立一條邊

第二步

判斷兩個樣本點是否解接近的方法有兩種。

第一種

第一種是計算二者的歐氏距離,如果距離小於某一值\(\varepsilon\)則認為兩個樣本很接近:\(\Vert x_i-x_j \Vert^2<\varepsilon\).其中\(\varepsilon\)是一個人工設定的閾值。

第二種

第二步是計算邊的權重,在這里也有兩種選擇。

第一種方法為如果節點i和節點j是聯通的,則它們之間的邊的權重為:

\[w_{ij}=\exp(-\frac{\Vert x_i-x_j \Vert^2}{t}) \]

否則權重為\(w_{ij}=0\)。其中t是一個人為設定的大於0的實數。

第二種方法為如果節點i與節點j是聯通的則權重為1,否則為0.

第三步

特征映射。假設構造的圖是聯通的,即任何兩個節點之間都有路徑可達,如果不聯通,則算法分別作用於每個聯通分量上。根據前面構造的圖計算它的拉普拉斯矩陣,然后求解如下廣義特征值和特征向量問題:\(Lf=\lambda Df\)

由於是實對稱矩陣半正定矩陣,因此特征值非負。假設\(f_0,...,f_{k-1}\)是這個廣義特征值問題的解,它們按照特征值的大小升序排列,即:\(0=\lambda_0\leq...\leq\lambda_{k-1}\)

去掉值為0的特征值\(\lambda_0\),用剩下部分特征向量為行來構造投影矩陣,將向量投影到以它們為基的空間中。下圖是拉普拉斯特征映射對三維數據進行降維的一個例子:

image-20210226095324503

上圖中左側為三維空間中的樣本分布,右圖為降維后的結果。這種變換起到的效果大致上相當於把三維空間中的曲面拉平之后鋪到二維平面上。

局部保持投影

局部保持投影(LPP)思路和拉普拉斯特征映射類似,也是一種基於圖論的方法。

假設有樣本集\(x_1,...,x_m\),它們是\(R^n\)空間中的向量,這里的目標是尋找一個變換矩陣A,將這些樣本點映射到更低維的\(R^l\)空間,得到向量\(y_1,...,y_m\),使得\(y_i\)能夠代表\(x_i\):\(y_i=A^Tx_i\).假設\(x_1,...x_m\in M\)其中M是\(R^l\)空間中的一個流形。

第一步

根據樣本構造圖,這和拉普拉斯特征映射的做法相同,在這里不再重復介紹。

第二步

特征映射,計算廣義特征向量問題:\(XLX^Ta=\lambda XDX^Ta\)

矩陣L和D的定義與計算方式和上一節相同,矩陣X是將樣本按列排列形成的。假設上面廣義特征向量問題的解為\(a_0,...,a_{l-1}\),它們對應的特征值滿足\(\lambda_0<...<\lambda_{l-1}\).要尋找的降維變換矩陣為:\(x_i\rightarrow y_i =A^Tx_i,A=(a_0,a_1,...a_{l-1})\)

這樣\(y_i\)是一個l維的向量,A是一個nxl的矩陣。對向量左乘矩陣Ay_i的轉置即可完成數據的降維。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM