聚類--譜聚類

前言:關於譜聚類,已經有很多厲害的老師和大牛寫過教程博客等,也有很不錯的tutorial文章可供參考。此博文僅記述個人的一些總結、思考、疑問,算是對現有譜聚類學習資源的一個小補充。

1. 譜聚類簡述

說到聚類,可能最先想到的就是經典的Kmeans算法。但是,Kmeans的應用是有前提條件的,它假設(目標式中的)誤差服從標準正態分佈,因此,Kmeans在處理非標準正態分佈和非均勻樣本集時,聚類效果會比較差。對於非專業滴同志們,這種統計學術語聽起來總是讓人覺得有點虛、不好懂,下面給兩個圖,直觀感受一下。

圖1.1(a) 圖1.1(b) 圖1.1(c)
圖1.1 (a)非標準正態分佈集 (b)非均勻分佈集 (c) 處理two moon數據集kmeans可能的聚類結果

對於圖1.1中給出的情形,用Kmeans聚類就顯得有些力不從心了,比如對於two moon這個toy dataset,理想情況下的結果應該和(a)中所示一致,但kmeans聚類後的效果可能是(c)中的樣子。

爲了處理這種奇奇怪怪形狀分佈的數據,譜聚類(spectral clustering)該出場了。不同於Kmeans採用數據點和聚類中心的歐式距離作爲相似性度量,譜聚類是基於數據的相似度矩陣,也即,只用給出數據的相似度矩陣而不用給出數據本身,譜聚類就可以得到最終的聚類結果。這裏先提一句,譜聚類算法得到最終聚類結果,一般是通過Kmeans,就是說Kmeans成爲了譜聚類算法的一部分。另外應該指出的是,譜聚類是一類基於譜方法的聚類算法,只不過平常提到譜聚類,一般都是指代最原始和經典的那兩個(Ncut,Ratio Cut),在很多文章和博客裏,看到的算法僞代碼就是它們的。還有,爲什麼取名叫譜聚類,個人覺着這個“譜”字,正表明了求解過程與特徵分解有關。

2. 公式化表述

在這一節,我們來看一下圖論中的標準切割(Ncut)和比例切割(RatioCut),並由此得到標準化的和非標準化的譜聚類目標函數。下面咱們先簡單瞭解一些圖論中的概念(這方面基礎內容不瞭解的話,可求助wikipedia/baidu,或見其它博文介紹,或者從公式推導角度直接往下看,也沒多大問題)。

G=(V,E) 表示一個帶權無向圖,其中V={vi}ni=1 是頂點,可以對應成n個數據點,E 是用來連接頂點的邊的集合,每條邊上帶有權值,vivj 之間的權值大小用wij 表示,由此可得到數據之間的相似度矩陣W ,它的第i行第j列元素就是wij 。定義頂點vi 的度爲di=nj=1wij , 則度矩陣D 就是由{di}ni=1 作爲對角元素組成的對角矩陣。傳聞中的拉普拉斯矩陣(Laplacian matrix)就可以這樣定義L=DW ,標準形式爲L~=InD1/2WD1/2 ,這裏In 表示大小爲nxn的單位陣。

繼續,來看看什麼是“割–Cut”。給定一個頂點集AV ,其補集表示爲A¯ 。評估集合A 的大小有兩種方式,一種是用A 中的頂點個數|A| 來衡量,一種是用A 中的頂點的度之和vol(A)=iAdi 來衡量。AA¯ 之間的割可以這樣來定義:cut(A,A¯)=iA,jA¯wij

給了一堆概念和定義,一不小心就讓人如墜雲霧,爲什麼要扯出什麼圖論?這個“割”真的是用小刀割東西的那個“割”嘛?首先第一個問題,把數據點看作是一個圖中的頂點,繼而把對數據的處理,轉化爲對圖的分析,這種隱去實際意義,抓住問題本質的過程,就是建模,模型建好了,在理論上求解完畢了,再反過來對應回一個個實際的問題。事實上,很多實際生活中的問題,就是通過圖來分析的,比如實現手機地圖軟件裏的實時導航功能,就是一個路徑規劃的問題—-兩個目的地,即圖中兩個頂點,是否可達,即是否存在一系列邊將這兩個頂點連起來,最短路徑又是哪條,即怎麼走最近。第二個問題,就是你想的那個割,這裏割的是圖中的邊。想一想,要把數據點聚類成若干個簇,對應就是把圖中的頂點分成若干個組,我們很自然地希望組內頂點間的關聯度大(wij 大),組間頂點的關聯度小,也就是說,我們可以把權值小的那些邊給割斷,保留權值大的那些邊,以達到分組的目的。

2.1 由Ratio Cut到非標準譜聚類

假設我們要把頂點集分成k個組—-聚類成k個簇,A1,...,Ak ,滿足AiAj=A1,...,Ak=V 。我們想讓被割去的都是一些權值小的邊,即保證了關聯度大的頂點被分到同一個組內,那麼我們可以最小化下面的比例切割目標式:

RatioCut(A1,...,Ak)=i=1kcut(Ai,Ai¯)|Ai|(2.1)
式(2.1)中,分母的作用是尋求一種balance,努力讓各個簇的大小相近,避免有的簇包含很多數據點,而有的簇僅包含一個或幾個數據點。這裏提一句,還有一種最小割(mincut),就是隻將分子上的各項求和,沒有考慮分母項,即對各簇的大小沒有限制。式(2.1)這個目標式好提出,但是不好解啊—-NP hard問題,怎麼辦,那就繞點兒路,退而求它的鬆弛問題(relaxed problem),湊合得個近似解好了。

定義k個簇指示向量(indicator vector) fj=(f1j,...,fnj) ,其中

fij=1/|Aj|,0,if viAjotherwise(2.2)
上式中i=1,,n,j=1,,k 。將這k個指示向量按列排成矩陣,則得到指示矩陣(indicator matrix) FRn×k ,根據前面給的定義,可以推出F 滿足:
FTFfiLfi=Ik=cut(Ai,Ai¯)|Ai|(2.3)(2.4)
這裏式(2.4)的推導對於譜聚類的提出和理解還是比較重要的,它將一個圖切割的問題,巧妙且簡潔地用數據的拉普拉斯矩陣和簇指示向量來表示,繼而聚類問題實際就變成了求解簇指示向量f 。爲了不沖淡主線,證明部分作爲附錄補在文末,供有需要者參考。基於式(2.4),最小化Ratio Cut就可以寫成如下的問題:
minFRn×kTr(FTLF)s.t.Fdefined as Eq.(2.2), FTF=Ik.(2.5)
Tr()表示矩陣的跡,即對角元素之和。式(2.5)是帶有正交約束,且變量爲離散值的最小化問題,這裏相比式(2.1)只是表述形式變了,依然是不好求解的,這時就需要發揮不要臉之精神,對於使問題變得困難的那個離散定義,我們假裝看不見,假裝看不見,然後問題就變成了:
minFRn×kTr(FTLF)s.t.FTF=Ik.(2.6)
這個就是Ratio Cut的鬆弛版問題(the relaxation of Ratio Cut),原來指示向量的元素只能取固定的幾個非負值,現在我們將它鬆弛成可以取任意實值。好了,我們給這個新的比較好解的問題取個名兒,對了,就是譜聚類!這裏拉普拉斯矩陣L是非標準的形式,所以式(2.6)就是非標準譜聚類的目標函數。

2.2 由Ncut到標準譜聚類

標準切割(Normalized Cut, Ncut)和比例切割很類似,只是衡量簇的大小時是採用的另一種方式,Ncut的目標式是:

NCut(A1,...,Ak)=i=1kcut(Ai,Ai¯)vol(Ai)(2.7)
同樣,定義k個指示向量 fj=(f1j,...,fnj) ,其中
fij=1/vol(Ai),0,if viAjotherwise(2.8)
這時,我們可以推出F 滿足:
FTDFfiLfi=Ik=cut(Ai,Ai¯)vol(Ai)(2.9)(2.10)
基於式(2.10),再次假裝看不見指示向量的離散定義,最小化鬆弛版的NCut就是:
minFRn×kTr(FTLF)s.t.FTDF=Ik.(2.11)
我們令H=D1/2F ,則上式可以寫成:
minHRn×kTr(HTL~H)s.t.HTH=Ik.(2.12)
採用標準化的拉普拉斯矩陣L~ ,我們得到了標準形式的譜聚類目標式。

3. 目標函數的求解

3.1 瑞利商(Rayleigh quotient)

ARn×n 是一個對稱陣,0xRn ,稱

R(x)=xTAxxTx(3.1)
爲矩陣A 的瑞利商。下面討論對稱陣的特徵值與它的瑞利商的極值之間的關係。

定理:將A的特徵值(都是實數)按從大到小的順序排列爲λ1λ2...λn ,則有:

λ1=maxx0R(x),λn=minx0R(x)
證明:令Λ=diag(λ1,...,λn) ,對於對稱陣A ,一定存在正交陣Q 使A 對角化,即QTAQ=Λ ,將Q 按列分塊爲Q=(q1,...,qn) ,則有Aqj=λjqj ,注意這裏q1,...,qnA 的兩兩正交的單位特徵向量。對於非零向量x ,存在一組數c1,...cn ,使得
x=c1q1+...+cnqn(|c1|2+...+|cn|20).
因此有
Ax=c1λ1q1+...+cnλnqn
於是
R(x)=xTAxxTx=λ1|c1|2++λn|cn|2|c1|2++|cn|2
由此可得λnR(x)λ1 ,容易驗證R(q1)=λ1R(qn)=λn ,證畢

對於非標準譜聚類目標式(2.6),因爲fTifi=1 爲常數,所以

minfTiLfiminR(fi)
fi 的解就是拉普拉斯矩陣L 的最小特徵值對應的特徵向量,因此,F 就是由L 的前k個最小的特徵值對應的特徵向量按列組成(同樣,H 就是L~ 前k個最小的特徵向量)。接下來,我們得從這個連續取值的指示矩陣F 出發,想辦法得到最終的聚類結果。如果是原問題(Ratio Cut/Ncut)的離散解,那我們直接對照定義就可以得到數據所屬的簇標號,現在這種連續的情況,我們可以把F 的每一行,看作是一個數據點在k維空間中的表達,然後採用Kmeans算法,對這n個k維的數據點進行聚類,得到最終的聚類結果。這裏Kmeans操作,可以看作一個離散化的過程,所以譜聚類實際上做的,就是先將NP–hard的離散問題鬆弛爲好求解的連續問題,再將連續問題的解離散化,得到最終的聚類結果

在上一節中,我們假裝看不見離散約束從而得到了譜聚類的目標式,大家心裏一定會有困惑,哪能這樣搞,那最後的結果肯定不是原問題的解了呀。的確,這麼粗暴地簡化問題,在理論上是不能保證我們最後得到的解,和原問題(Ratio Cut/Ncut)的解之間有什麼必然聯繫的,只不過在實際問題中,譜聚類取得的效果的確還是不錯的。

圖3.1
圖3.1 一個反例:Ratio Cut和譜聚類得到截然不同的解,藍色的線表示Ratio Cut切割方式,只用兩刀,綠色線是非標準譜聚類的結果,需要切k刀,具體細節說明請參見參考文獻[1]。

【注】:根據定義,可知拉普拉斯矩陣L是一個對稱半正定陣,即所有特徵值都爲非負實數,且L的最小特徵值爲0。對於一個全連通圖,L只有一個0特徵值,且對應的特徵向量爲常1向量(constant one vector),就是所有元素都取相同值的單位向量,這種指示向量其實是不具備區分信息的,或者說,它表示把原圖劃分爲一個空集和圖自身。所以有時候,我們直接把這個特徵向量去掉,只對k-1個指示/特徵向量進行分析。對於一個含c個連通分量的圖,L有c個0特徵值,對應的特徵向量就是簇指示向量,可以直接區分出哪些數據點位於同一個連通分量內。另外,除去通過Kmeans得到最終的聚類結果,也有人用譜旋轉(spectral rotation)得到,在此不做展開。

3.2 拉格朗日乘子法

在這一小節,我們直接從拉格朗日乘子法的角度來求解譜聚類。設ΛRk×k 爲拉格朗日乘子矩陣,式(2.6)的拉格朗日函數爲:

J(F)=Tr(FTLF)Tr(Λ(FTFIk))(3.2)
求導並置零:
J(F)F=2LFF(Λ+ΛT)=0(3.3)
Λ~=12(Λ+ΛT) ,有LF=FΛ~ ,所以F 就是L 的特徵向量矩陣,Λ~ 是相應的特徵值組成的對角矩陣。J(F)=Tr(FTFΛ~)=Tr(Λ~) ,要最小化J(F) ,自然取L 的前k個最小的特徵值,F 則由對應的特徵向量組成。

4. 從圖重構角度再理解

4.1 正交非負約束

譜聚類目標式中,指示向量可取任意實值,而原始Ratio Cut/Ncut中,指示向量元素是離散的非負值。如果我們在鬆弛過程中,帶上非負約束,那麼新的模型應該更接近於原始問題,公式化表述就是:

minFRn×kTr(FTLF)s.t.FTF=IkF0.(4.1)
式(4.1)是一個帶有正交非負約束的問題,它的解實際上已經是離散的了。由於非負性,F 中的元素大小直接反應了數據與簇之間的關係緊密程度,這個性質被廣泛用於非負矩陣分解中。所以,如果我們能求出這個問題的解F ,那麼最終的聚類結果可以直接根據F 每一行的最大元素的列索引得到,而不再需要額外的後處理步驟了,如前文提及的Kmeans。這是一個比較好的特點,因爲這樣做,算法的性能不再受制於其它算法的性能,要知道,Kmeans本身就對初始化十分敏感,不同的初始點,可能得到截然不同的聚類結果。

圖4.1

圖4.1 正交非負約束下的F示意圖。這兩個約束使得F是一個離散取值的、稀疏的、具有物理意義的矩陣,物理意義就是上面說的元素值對應數據和簇的關係。示意圖中,F是一個“9x3”的指示矩陣,表示有9個數據點,分別屬於3個不同的簇,比如第一個點屬於第一個簇,則F的第一行第一列元素非零(實心黑圓),第一行其它元素爲0,指示向量(F的列)是單位向量。

4.1 圖重構角度

在這一節,我們關注一種特殊情形,並得到譜聚類的圖重構理解視角。如果我們構建了一個圖,它的相似度矩陣W ,恰好是一個雙隨機矩陣(各行和、列和均爲1),則度矩陣D 就簡化爲一個單位陣I ,此時拉普拉斯矩陣L=IW=L~也就是說L 已經是標準化的,此時Ratio Cut問題等價於Ncut問題。此時式(4.1)可寫爲如下形式:

minFTF=I,F0WFFT2F.(4.2)
證明: 注意有W 是對稱雙隨機陣,Tr(WTW)Tr(FFTFFT) 是常數項。
Eq.(4.1)maxFTF=I,F0Tr(FTWF)minFTF=I,F0Tr(WTFFT+FFTW)minFTF=I,F0Tr[WTWWT(FFT)(FFT)W+(FFT)(FFT)]Eq.(4.2)

式(4.2)就體現了圖重構的思想W 是原本構建好的圖(相似度矩陣確定後,圖也確定了,故此處可用圖代指),現在我們用簇指示矩陣來重構一個圖,使得重構圖和原始圖W 相近,這樣使得重構圖,不僅具有原圖的信息,而且在優化過程中,獲得了很好的結構—-分塊對角陣。一個塊就對應一個連通分量,往往一個連通分量內的數據屬於同一個簇,或者一個連通分量直接就對應了一個簇,實際中,由於冗餘特徵和噪音的存在,構建的原圖往往只有一個連通分量。所以在這種特殊情況下,譜聚類可以看作是在用一種具有結構信息的重構圖,來近似原始構建的圖,如圖4.2所示。

圖4.2
圖4.2 指示矩陣重構圖示意

5. 與K-means的聯繫

Kmeans公式化表述的證明過程可參見另一篇談PCA的博文,這裏只貼結果,Kmeans的目標函數可以寫成如下形式:

minFRn×kTr(FTKF)s.t.FTF=IkF0.(5.1)
這裏的F 也是指示矩陣,XRd×n 表示數據矩陣,n爲數據個數,K=XTX 可看作一種相似度矩陣,這裏採用的是標準內積線性核。對於Kernel Kmeans,K~=ϕ(X)Tϕ(X)ϕ() 是一種高維映射。

與譜聚類對比,Kmeans的交替迭代過程,相當於是直接在求一個離散定義的帶正交約束的問題,沒有像譜聚類一樣對原問題進行鬆弛。

6. 譜聚類的不足

因爲要計算拉普拉斯矩陣的特徵分解,譜聚類一個很大的問題是計算複雜度高,達到O(n3) ,n爲數據點個數。隨着大數據時代的來臨,如何改進譜聚類,使之能處理大規模數據,是一個很有價值的研究方向,比較典型的解決思路有通過Nystro¨ m方法降低計算複雜度,有通過分步解決,先選取一部分代表點得到聚類標籤,再根據代表點和其它點間的某種關係(常利於稀疏學習等技術構建這種關係),得到剩餘的點的聚類標籤。

另一個不足是out of sample的問題,即給定一個新的測試樣例,無法方便地得到其聚類標籤,必須重新對整個數據集(包括新加的樣例)來一遍完整的譜聚類流程。這個問題的一種解決思路是,得到訓練數據的指示矩陣F後,將F的行作爲線性迴歸中的標籤項(FXTθ ),求出對應的迴歸係數矩陣θRd×k ,對於新來的樣例,根據θ 得到其k維空間中的表達(擬合標籤),再直接對所有數據的k維表達進行聚類就行。

7. 一個小問題

本文寫作過程中主要參考了A Tutorial on Spectral Clustering,在論文第九頁,定義Ratio Cut和Ncut的目標函數時,我始終覺得有點問題,少了一個係數1/2,雖然這並不影響最終結果,因爲對於最小最大問題,常係數是可以去掉的。不過單純從加深理解的角度,還是可以看細一點,在此貼出我的問題,還希望正好知道這一點的人不吝賜教。

這裏寫圖片描述
圖7.1

上面的Ratio Cut 和Ncut的目標式中,第二個等式我覺得有問題,舉個例子,k=2時:
cut(A1,A2)=12(W(A1,A2)+W(A2,A1))=W(A1,A2)
所以兩個目標式中的第三項,都比第二項要少一個係數12 ,所以個人認爲這裏是個typo,或者是我的理解仍有誤。

主要參考文獻/資源

【1】Luxburg U V. A tutorial on spectral clustering[J]. Statistics and Computing, 2007, 17(4):395-416.
【2】http://blog.csdn.net/v_july_v/article/details/40738211
【3】http://blog.pluskid.org/?p=287
【4】http://www.cnblogs.com/xingshansi/p/6702188.html

附錄—–Ratio Cut相關證明

先貼一個很重要的公式,這一項在一些地方被稱作圖正則項(graph regularization),可以將有監督學習擴展爲半監督學習,它可以從流形學習的觀點來解釋,這裏不展開。

這裏寫圖片描述

注意,這裏f 是一個n維指示向量,即fi 表示一個實數,如果把f 換成指示矩陣Ffi 表示一個n維向量,則只需將上式中實數的平方替換成向量的範數的平方,即||fifj||22 ,等式依然是成立的。這個公式可以這樣來證明:
這裏寫圖片描述

在參考文獻[1]中,講Ratio Cut時,是用二聚類情形作爲例子,進行了較爲詳細地引出和推證,對於更爲一般的情形,原文中只是給出了結論,網絡上現有的博文,大多也是直接貼上原文中在二聚類情形下的證明。在這裏,我們給出一般情形下的證明(本文正文中也是隻關注了一般情形),證明過程跟二聚類情形是很類似的。

我們要證明的結論是:fiLfi=cut(Ai,Ai¯)|Ai|i=1,...,k ,k是簇的個數,fi 是第i個子集Ai 的指示向量,fi 的第p個元素fip 指示第p個數據點是否屬於子集Ai

fiLfi=12p,q=1nwpq(fipfiq)2=12pAi,qAi¯wpq(1|Ai|0)2+qAi,pAi¯wpq(01|Ai|)2=cut(Ai,Ai¯)|Ai|

注意到fiLfi=(FTLF)ii ,所以
RatioCut(A1,...,Ak)=i=1kcut(Ai,Ai¯)|Ai|=i=1kfiLfi=Tr(FTLF)

Ncut的相關結論也可按照上述過程推證,此處略。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章