Spectral Clustering


       Spectral Clustering(譜聚類)是一種基於圖論的聚類方法,它能夠識別任意形狀的樣本空間且收斂於全局最有解,其基本思想是利用樣本數據的相似矩陣進行特征分解后得到的特征向量進行聚類,可見,它與樣本feature無關而只與樣本個數有關。

一、圖的划分

        圖划分的目的是將有權無向圖划分為兩個或以上子圖,使得子圖規模差不多而割邊權重之和最小。圖的划分可以看做是有約束的最優化問題,它的目的是看怎么把每個點划分到某個子圖中,比較不幸的是當你選擇各種目標函數后發現該優化問題往往是NP-hard的。

        怎么解決這個問題呢?松弛方法往往是一種利器(比如SVM中的松弛變量),對於圖的划分可以認為能夠將某個點的一部分划分在子圖1中,另一部分划分在子圖2中,而不是非此即彼,使用松弛方法的目的是將組合優化問題轉化為數值優化問題,從而可以在多項式時間內解決之,最后在還原划分時可以通過閾值來還原,或者使用類似K-Means這樣的方法,之后會有相關說明。

二、相關定義

       1、用表示無向圖,其中分別為其頂點集和邊集;

       2、說某條邊屬於某個子圖是指該邊的兩個頂點都包含在子圖中;

       3、假設邊的兩個不同端點為,則該邊的權重用表示,對於無向無環圖有,為方便以下的“圖”都指無向無環圖;

       4、對於圖的某種划分方案的定義為:所有兩端點不在同一子圖中的邊的權重之和,它可以被看成該划分方案的損失函數,希望這種損失越小越好,本文以二分無向圖為例,假設原無向圖被划分為,那么有:

                         

三、Laplacian矩陣

        假設無向圖被划分為兩個子圖,該圖的頂點數為:,用表示維指示向量,表明該划分方案,每個分量定義如下:

                                                     

於是有:

                          

又因為:

                         

 

                                                                       

                                                                  

                                                                  

其中,為對角矩陣,對角線元素為:

                         

           為權重矩陣:

                         

重新定義一個對稱矩陣,它便是Laplacian矩陣:

                         

矩陣元素為:

                                                    

進一步觀察:

                          

如果所有權重值都為非負,那么就有,這說明Laplacian矩陣是半正定矩陣;而當無向圖為連通圖時有特征值0且對應特征向量為,這反映了,如果將無向圖划分成兩個子圖,一個為其本身,另一個為空時,為0(當然,這種划分是沒有意義的)。

其實上面推導的目的在於得到下面的關系:

                         

這個等式的核心價值在於:將最小化划分的問題轉變為最小化二次函數;從另一個角度看,實際上是把原來求離散值松弛為求連續實數值。

       觀察下圖:

圖1

它所對應的矩陣為: 

       [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  0.0  0.8  0.6  0.0  0.1  0.0
[2,]  0.8  0.0  0.8  0.0  0.0  0.0
[3,]  0.6  0.8  0.0  0.2  0.0  0.0
[4,]  0.0  0.0  0.2  0.0  0.8  0.7
[5,]  0.1  0.0  0.0  0.8  0.0  0.8
[6,]  0.0  0.0  0.0  0.7  0.8  0.0

矩陣為:
 
       [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  1.5  0.0  0.0  0.0  0.0  0.0
[2,]  0.0  1.6  0.0  0.0  0.0  0.0
[3,]  0.0  0.0  1.6  0.0  0.0  0.0
[4,]  0.0  0.0  0.0  1.7  0.0  0.0
[5,]  0.0  0.0  0.0  0.0  1.7  0.0
[6,]  0.0  0.0  0.0  0.0  0.0  1.5
Laplacian矩陣為:
 
       [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  1.5 -0.8 -0.6  0.0 -0.1  0.0
[2,] -0.8  1.6 -0.8  0.0  0.0  0.0
[3,] -0.6 -0.8  1.6 -0.2  0.0  0.0
[4,]  0.0  0.0 -0.2  1.7 -0.8 -0.7
[5,] -0.1  0.0  0.0 -0.8  1.7 -0.8
[6,]  0.0  0.0  0.0 -0.7 -0.8  1.5

Laplacian矩陣是一種有效表示圖的方式,任何一個Laplacian矩陣都對應一個權重非負地無向有權圖,而滿足以下條件的就是Laplacian矩陣:

1、為對稱半正定矩陣,保證所有特征值都大於等於0;

2、矩陣有唯一的0特征值,其對應的特征向量為,它反映了圖的一種划分方式:一個子圖包含原圖所有端點,另一個子圖為空

四、划分方法

1、Minimum Cut 方法

       考慮最簡單情況,另,無向圖划分指示向量定義為:

                         

要優化的目標為,由之前的推導可以將該問題松弛為以下問題:

                       

從這個問題的形式可以聯想到Rayleigh quotient

                       

      原問題的最優解就是該Rayleigh quotient的最優解,而由Rayleigh quotient的性質可知:它的最小值,第二小值,......,最大值分別對應矩陣的最小特征值,第二小特征值,......,最大特征值,且極值相應的特征向量處取得,即需要求解下特征系統的特征值和特征向量:

                   

      這里需要注意約束條件,顯然的最小特征值為0,此時對應特征向量為,不滿足這個約束條件(剔除了無意義划分),於是最優解應該在第二小特征值對應的特征向量處取得

      當然,求得特征向量后還要考慮如何恢復划分,比如可以這樣:特征向量分量值為正所對應的端點划分為,反之划分為;也可以這樣:將特征向量分量值從小到大排列,以中位數為界划分;還可以用K-Means算法聚類。

2、Ratio Cut 方法

      實際當中,划分圖時除了要考慮最小化外還要考慮划分的平衡性,為緩解出現類似一個子圖包含非常多端點而另一個只包含很少端點的情況,出現了Ratio Cut,它衡量子圖大小的標准是子圖包含的端點個數。

       定義為子圖1包含端點數,為子圖2包含端點數,,則優化目標函數為:

                              

其中:

                          

做一個簡單變換:

                        

                               

                               

                               

其中:

                          

看吧,這形式多給力,原問題就松弛為下面這個問題了:

                        

依然用Rayleigh quotient求解其第二小特征值及其特征向量。

3、Normalized Cut 方法

       與Ratio Cut類似,不同之處是,它衡量子圖大小的標准是:子圖各個端點的Degree之和。

定義:為子圖1Degree之和:

                          

           為子圖2Degree之和:

                          

則優化目標函數為:

                              

其中:

                          

原問題就松弛為下面這個問題了:

                        

用泛化的Rayleigh quotient表示為:

                       

那問題就變成求解下特征系統的特征值和特征向量:

                                                                                                  ——式子1

                      (注:是一個對角矩陣,且)

                 

                              (其中:)    ——式子2

       顯然,式子1和式子2有相同的特征值,但是對應特征值的特征向量關系為:,因此我們可以先求式子2的特征值及其特征向量,然后為每個特征向量乘以就得到式子1的特征向量。

        哦,對了,矩陣叫做Normalized Laplacian,因為它對角線元素值都為1。

五、Spectral Clustering

       上邊說了這么多,其實就是想將圖的划分應用於聚類,而且這種聚類只需要樣本的相似矩陣即可,把每個樣本看成圖中的一個頂點,樣本之間的相似度看成由這兩點組成的邊的權重值,那么相似矩陣就是一幅有權無向圖。
       對照圖的划分方法,有下列兩類Spectral Clustering算法,他們的區別在於Laplacian矩陣是否是規范化的:

1、Unnormalized Spectral Clustering算法

算法輸入:樣本相似矩陣S和要聚類的類別數K。
根據矩陣S建立權重矩陣W、三角矩陣D;
建立Laplacian矩陣L;
求矩陣L的前K小個特征值及其對應的特征向量,注意最小的那個特征值一定是0且對應的特征向量為
以這K組特征向量組成新的矩陣,其行數為樣本數,列數為K,這里就是做了降維操作,從N維降到K維,(實際上除去那個全為1的向量維度降為了K-1);
使用K-Means算法進行聚類,得到K個Cluster。
 

2、Normalized Spectral Clustering算法

算法輸入:樣本相似矩陣S和要聚類的類別數K。
根據矩陣S建立權重矩陣W、三角矩陣D;
建立Laplacian矩陣L以及
求矩陣 的前K小個特征值及其對應的特征向量,注意最小的那個特征值一定是0且對應的特征向量為
利用 求得矩陣L前K小個特征向量;
以這K組特征向量組成新的矩陣,其行數為樣本數N,列數為K;
使用K-Means算法進行聚類,得到K個Cluster。

3、以圖1為例,取K=2,使用Unnormalized Spectral Clustering算法,此時聚類的對象其實就是矩陣L的第二小特征向量(使用R模擬):

 L矩陣為:
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  1.5 -0.8 -0.6  0.0 -0.1  0.0
[2,] -0.8  1.6 -0.8  0.0  0.0  0.0
[3,] -0.6 -0.8  1.6 -0.2  0.0  0.0
[4,]  0.0  0.0 -0.2  1.7 -0.8 -0.7
[5,] -0.1  0.0  0.0 -0.8  1.7 -0.8
[6,]  0.0  0.0  0.0 -0.7 -0.8  1.5
 q<-eigen(L) 求得L的特征值和特征向量分別為
$values
[1] 2.573487e+00 2.469025e+00 2.285298e+00 2.084006e+00 1.881842e-01 1.776357e-15

$vectors
            [,1]          [,2]        [,3]        [,4]       [,5]       [,6]
[1,] -0.10598786 -0.3788245748 -0.30546656  0.64690880  0.4084006 -0.4082483
[2,] -0.21517718  0.7063206485  0.30450981 -0.01441501  0.4418249 -0.4082483
[3,]  0.36782805 -0.3884382495  0.04461661 -0.63818761  0.3713186 -0.4082483
[4,] -0.61170644 -0.0009962363 -0.45451793 -0.33863293 -0.3713338 -0.4082483
[5,]  0.65221488  0.3509689196 -0.30495543  0.16645901 -0.4050475 -0.4082483
[6,] -0.08717145 -0.2890305075  0.71581349  0.17786774 -0.4451628 -0.4082483
 q$vectors[,5] 取第二小特征向量:
[1]  0.4084006  0.4418249  0.3713186 -0.3713338 -0.4050475 -0.4451628
 kmeans(q$vectors[,5],2) 利用K-Means算法聚類:
K-means clustering with 2 clusters of sizes 3, 3

Cluster means:
        [,1]
1 -0.4071814
2  0.4071814

Clustering vector:
[1] 2 2 2 1 1 1

Within cluster sum of squares by cluster:
[1] 0.002732195 0.002487796
 (between_SS / total_SS =  99.5 %)
從結果上可以看到頂點1、2、3被聚為一類,頂點4、5、6被聚為一類,與實際情況相符。

        在Mahout中已經有相應實現,放在下次學習吧。

六、總結

1、圖划分問題中的關鍵點在於選擇合適的指示向量並將其進行松弛化處理,從而將最小化划分的問題轉變為最小化二次函數,進而轉化為求Rayleigh quotient極值的問題;

2、 Spectral Clustering的各個階段為:

 選擇合適的相似性函數計算相似度矩陣;
計算矩陣L的特征值及其特征向量,比如可以用Lanczos迭代算法;
如何選擇K,可以采用啟發式方法,比如,發現第1到m的特征值都挺小的,到了m+1突然變成較大的數,那么就可以選擇K=m;
使用K-Means算法聚類,當然它不是唯一選擇;
Normalized Spectral Clustering在讓Cluster間相似度最小而Cluster內部相似度最大方面表現要更好,所以首選這類方法。

六、參考資料

1、Chris Ding.《A Tutorial on Spectral Clustering》、《Data Mining using Matrix and Graphs》

2、Jonathan Richard Shewchuk. 《Spectral and Isoperimetric Graph Partitioning》

3、Denis Hamad、Philippe Biela.《Introduction to spectral clustering》

4、Francis R. Bach、Michael I. Jordan.《Learning Spectral Clustering》

5、丕子.http://www.zhizhihu.com/html/y2010/1141.html


免責聲明!

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



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