如引用請務必注明此文出自:http://www.cnblogs.com/xbinworld
繼續寫一點經典的降維算法,前面介紹了PCA,LDA,LLE,這里講一講Laplacian Eigenmaps。
其實不是說每一個算法都比前面的好,而是每一個算法都是從不同角度去看問題,因此解決問題的思路是不一樣的。這些降維算法的思想都很簡單,卻在有些方面很有效。這些方法事實上是后面一些新的算法的思路來源。
Laplacian Eigenmaps[1] 看問題的角度和LLE有些相似,也是用graph的角度去構建數據之間的關系。
它的直觀思想是希望相互間有關系的點(在圖中相連的點)在降維后的空間中盡可能的靠近。Laplacian Eigenmaps可以反映出數據內在的流形結構。
Laplacian Eigenmaps也通過構建相似關系圖(對應的矩陣為)來重構數據流形的局部結構特征。Laplacian Eigenmaps算法的主要思想是,如果兩個數據實例i和j很相似,那么i和j在降維后目標子空間中應該盡量接近。設數據實例的數目為n,目標子空間的維度為m。定義
大小的矩陣
,其中每一個行向量
是數據實例i在目標m維子空間中的向量表示,Laplacian Eigenmaps要優化的目標函數如下
定義對角矩陣,對角線上
位置元素等於矩陣
的第i行之和,經過線性代數變換,上述優化問題可以用矩陣向量形式表示如下:
其中矩陣是圖拉普拉斯矩陣。限制條件
保證優化問題有解,並且保證映射后的數據點不會被“壓縮”到一個小於m維的子空間中。使得公式最小化的Y的列向量是以下廣義特征值問題的m個最小非0特征值(包括重根)對應的特征向量:
使用時算法具體步驟為:
步驟1:構建圖
使用某一種方法來將所有的點構建成一個圖,例如使用KNN算法,將每個點最近的K個點連上邊。K是一個預先設定的值。
步驟2:確定權重
確定點與點之間的權重大小,例如選用熱核函數來確定,如果點i和點j相連,那么它們關系的權重設定為:
步驟3:特征映射
使用最小的m個非零特征值對應的特征向量作為降維后的結果輸出。
前面提到過,Laplacian Eigenmap具有區分數據點的特性,可以從下面的例子看出:
圖1 Laplacian Eigenmap實驗結果
見圖1所示,左邊的圖表示有兩類數據點(數據是圖片),中間圖表示采用Laplacian Eigenmap降維后每個數據點在二維空間中的位置,右邊的圖表示采用PCA並取前兩個主要方向投影后的結果,可以清楚地看到,在此分類問題上,Laplacian Eigenmap的結果明顯優於PCA。
圖2 roll數據的降維
圖2說明的是,高維數據(圖中3D)也有可能是具有低維的內在屬性的(圖中roll實際上是2D的),但是這個低維不是原來坐標表示,例如如果要保持局部關系,藍色和下面黃色是完全不相關的,但是如果只用任何2D或者3D的距離來描述都是不准確的。
下面三個圖是Laplacian Eigenmap在不同參數下的展開結果(降維到2D),可以看到,似乎是要把整個帶子拉平了。於是藍色和黃色差的比較遠。
Reference
[1] Belkin, M., Niyogi, P. Laplacian eigenmaps and spectral techniques for embedding and clustering. Advances in neural information processing systems. 2002, 1585-592.