譜聚類(Spectral Clustering)是一種廣泛使用的數據聚類算法,[Liu et al. 2004]基於譜聚類算法首次提出了一種三維網格分割方法。該方法首先構建一個相似矩陣用於記錄網格上相鄰面片之間的差異性,然后計算相似矩陣的前k個特征向量,這些特征向量將網格面片映射到k維譜空間的單位球上,最后使用K-means方法對譜空間中的數據點進行聚類。具體算法過程如下:
一.相似矩陣
網格分割以面片為基本單元,為了能使算法沿着幾何模型的凹形區域進行分割,網格相鄰面片之間的距離采用[Katz et al. 2003]中提到的方法,具體形式在“三維網格分割算法”中有所解釋,距離由測地距離Geod_Dist和角度距離Ang_Dist兩部分組成,如下所示:
上式中有兩個重要的參數δ和η,參數δ通常取值范圍為[0.01, 0.05],其用於控制測地距離和角度距離之間的權重比例,參數η通常取值范圍為[0.1, 0.2],其使得分割邊界更傾向於凹形區域。
計算完相鄰面片之間的距離后,相似矩陣中對應位置的值由距離的高斯函數得到:
其中:
二.網格譜聚類
譜聚類方法在本質上都是類似的,都是利用相似矩陣的特征向量將原始空間中的數據映射到譜空間,並在譜空間中進行聚類。網格上的譜聚類方法如下:
1 由上述定義計算相似矩陣W;
2 計算歸一化矩陣N:N = D-1/2WD-1/2;
3 計算矩陣N的前k個最大特征向量e1, e2, … , ek,以這k個特征向量為列組成矩陣U = [e1, e2, … , ek];
4 將矩陣U的每一行單位化后得到矩陣Ȗ;
5 提取出k個初始聚類中心用於K-means聚類,該過程先計算矩陣Q = ȖȖT,然后查找矩陣Q中的最小元素Qrs,那么r和s點就是兩個距離最遠的點,然后繼續查找后續點;
6 以Ȗ的行向量為數據樣本進行K-means聚類。
圖:分割區域分別為k = 2, 3, 4, 5, 6, 7, 8
參考文獻:
[1] Rong Liu and Hao Zhang. 2004. Segmentation of 3D Meshes through Spectral Clustering. In Proceedings of the Computer Graphics and Applications, 12th Pacific Conference (PG '04). IEEE Computer Society, Washington, DC, USA, 298-305.
[2] Sagi Katz and Ayellet Tal. 2003. Hierarchical mesh decomposition using fuzzy clustering and cuts. ACM Trans. Graph. 22, 3 (July 2003), 954-961.
附錄
譜聚類(Spectral Clustering)算法
1 圖Laplacian矩陣
給定頂點集V = {v1, v2, … , vn},頂點vi和vj之間存在非負權重wij ≥ 0。G = (V, E)代表無向圖,其滿足wij = wji,如果wij = 0,則說明圖中vi和vj之間無連接。頂點vi ∈ V的度定義:,圖的度矩陣D為對角矩陣,其對角線上的元素為d1, d2, … , dn。
非歸一化的Laplacian矩陣定義:L = D – W,其具備如下性質:
★ 對於任意向量f ∈ Rn,都有:
★ 矩陣L為對稱半正定矩陣
★ 矩陣L最小的特征值為0,對應的特征向量為1
★ 矩陣L存在n個非負實特征值0 = λ1 ≤ λ2 ≤ … ≤ λn
歸一化的Laplacian矩陣有2種形式,具體定義如下:
Lsym = D-1/2LD-1/2 = I – D-1/2WD-1/2
Lrw = D-1L = I – D-1W
歸一化的Laplacian矩陣具備如下性質:
★ 對於任意向量f ∈ Rn,都有:
★ 矩陣Lrw存在特征值λ和特征向量u時,矩陣Lsym對應存在特征值λ和特征向量D1/2u
★ 矩陣Lrw特征值λ和特征向量u的求解等價於廣義特征值問題Lu = λDu
★ 矩陣Lrw最小的特征值為0,對應的特征向量為1;矩陣Lsym最小的特征值為0,對應的特征向量為D1/21
★ 矩陣Lsym和矩陣Lrw為半正定矩陣,並且存在n個非負實特征值0 = λ1 ≤ λ2 ≤ … ≤ λn
2 譜聚類之圖割解釋
下面將介紹譜聚類的具體原理,聚類的目標是將數據點分成若干類,使得在同一個類里的數據點之間存在較大的相似性,而在不同類里的數據點之間差異較大。假設給定鄰接權重矩陣為W的相似圖,構建圖分割最簡單直接的方法就是轉化為最小割問題。對於k個分割區域而言,那么分割區域A1, A2, … , Ak的求解即對應如下最小化問題:
式中Ā代表A的補集,即分割區域A以外的部分。
實際上利用上述方法求解得到的結果往往並不理想,例如假設分割區域數目為2時,上述最小割的結果很有可能會出現從圖中單獨分割一個數據點作為一個區域的情況,如下圖所示。一種避免出現該問題的方法是對分割區域A1, A2, … , Ak的大小做限制,如何限定分割區域大小,有兩種最常用的方法:Ratio Cut和Normalized Cut。
在Ratio Cut方法里,區域大小由區域中數據點的個數|A|決定,而在Ncut中,區域大小由區域中數據點的權重vol(A)決定,有了區域大小限定之后上述圖分割問題可以進一步修改為如下形式:
上述目標函數表明分割區域不能太小,但是當加入區域大小限定條件之后,上述問題的求解變成了NP-hard問題,而譜聚類算法利用松弛思想可以近似求解該問題。
2.1 Ratio Cut(k = 2)
對於2個分割區域而言,我們的優化目標如下:
為了求解上述問題,我們首先定義一個指示向量(indicator vector)f = (f1, f2, … , fn)’ ∈ Rn:
我們可以將Ratio Cut的目標函數寫成Laplacian矩陣形式:
同時可以得到:
因此優化問題可以等價為:
指示向量f中元素只能取2個特定的離散值,該問題仍然是NP-hard問題。如果將f中的元素取值范圍松弛擴大到整個實數域R,那么根據Rayleigh-Ritz定理,該問題的最優解就是矩陣L第二小特征值所對應的特征向量(注意矩陣L最小的特征值為0,對應的特征向量為1),然后我們再將最優解進一步轉化為離散特征向量,這一過程通常使用k-means聚類方法將指示向量中的元素聚為2類,使得每一類中的元素對應一個離散值。
2.2 Ratio Cut(任意k)
對於k個分割區域而言,求解過程與上述類似,我們定義k個指示向量hj = (h1,j, h2,j, … , hn,j)’:
(i = 1, … , n;j = 1, … , k)
以這k個指示向量為列可以組成矩陣H∈ Rn×k,其滿足H’H = I,並且可以得到:
於是:
因此優化問題等價為:
利用松弛思想並根據Rayleigh-Ritz定理,在實數域內,上述問題的最優解H為矩陣L前k個特征向量為列向量所組成的矩陣,然后我們再將實數域解轉化為離散域解,同樣這一過程以矩陣H的行向量作為數據樣本進行k-means聚類。
對於Ratio Cut方法,總結得到如下算法流程:
2.3 Ncut(k = 2)
對於2個分割區域,定義指示向量f:
那么可以得到:
因此優化問題等價為:
將向量f里的元素松弛到實數域,並用f = D-1/2g替換后可以得到:
由於D-1/2LD-1/2 = Lsym,D1/21是矩陣Lsym的最小特征向量,vol(V)是一個常量,所以根據Rayleigh-Ritz定理,實數域內最優解g為矩陣Lsym第二小特征值所對應的特征向量,替換后得到最優解f = D-1/2g。而根據歸一化Laplacian矩陣的性質,最優解f同樣等於矩陣Lrw第二小特征值所對應的特征向量。之后再利用k-means聚類方法將實數域解轉化為離散域解。
2.4 Ncut(任意k)
對於k個分割區域,定義k個指示向量hj = (h1,j, h2,j, … , hn,j)’:
(i = 1, … , n;j = 1, … , k)
以這k個指示向量為列組成矩陣H∈ Rn×k,其滿足:
H’H = I,hi’Dhi = 1,hi’Lhi = cut(Ai, Āi)/vol(Ai)
因此優化問題等價為:
用H = D-1/2T替換並將解空間松弛到實數域,問題轉變為:
利用Rayleigh-Ritz定理,實數域內最優解T為矩陣Lsym前k個特征向量為列向量所組成的矩陣,替換后最優解H = D-1/2T。而根據歸一化Laplacian矩陣的性質,最優解H同樣等於矩陣Lrw前k個特征向量為列向量所組成的矩陣。之后再利用k-means聚類方法將實數域解轉化為離散域解。
對於Ncut方法,總結得到如下算法流程:
本文為原創,轉載請注明出處:http://www.cnblogs.com/shushen。
參考:
Von Luxburg, Ulrike. "A tutorial on spectral clustering." Statistics and Computing 17.4 (2007): 395-416.
http://blog.pluskid.org/?p=287