1. 程式人生 > >Normalized Cut(歸一化割)

Normalized Cut(歸一化割)

所謂Clustering,就是說聚類,把一堆東西(合理地)分成兩份或者K份。從數學上來說,
聚類的問題就相當於Graph Partition的問題,即給定一個圖G = (V, E),如何把它的頂點集劃分為不相交的子集,
使得這種劃分最好。其難點主要有兩個:
1. 這個“合理”其實相當難達到,隨便設一個目標函式可能達不到希望的結果。大家可以看了看[1],這裡詳細地討論了一下準則的選擇問題。
2. 即使我們定義了一個相當好的聚類準則,如何優化它又是一個問題。

Normalized Cut
在圖上,定義什麼樣的聚類最好,最簡單的方法是圈定K個不相交頂點集之後,希望頂點集之間的邊,其權值的和最小。
(邊上的權值代表的是兩頭的頂點鄰近的程度,或者說相似度)
這就是所謂MinCut(最小割)問題。二類分類的最小割不是NP-hard的,但是這不能讓人感到開心,因為MinCut這個準則對於聚類不好。
具體來說,Mincut完全可能將離大部隊過遠的單個頂點與其它頂點分開, 形成兩類。
事實上,我們不僅僅要讓割邊的權和最小,而且要讓這K個頂點集都差不多大,這樣才符合聚類給人的直觀感覺。
於是在MinCut的基礎上,出現了Normalized Cut. 思路很簡單,將Cut normalize一下,除以表現頂點集大小的某種量度(如 vol A = 所有A中頂點集的度之和)。
也就是Normalize Cut(A, B) = Cut(A, B) / volA + cut(A, B) / volB
然而這樣一改,NP-hard就來了。這幾乎是所有組合優化問題的惡夢。
怎麼辦呢?把組合優化問題連續化,即所謂減少約束,進行適當的relax。那麼為什麼會和SVD扯上的呢?
很簡單,聚類是東西分成不相交集,也就是有正交的含義在裡面;只是分東西必須是0-1式的,這種離散化,就是np-hard的原因。
我們把正交約束保留,但把離散變成連續的,聚類就變成了尋找(列)正交陣的優化問題,那正是SVD的火力所在!就這樣,通過這種巧妙的relax,NP-hard問題有了近似解。且不說這近似解的質量如何,
這種方法是相當令人振奮的。
(關於Normalized Cut近似解的質量, 似乎沒有什麼文章能夠給出嚴格的證明,只是實際
效果不錯就是了。)

值得一提的是,Normalized Cut還和圖上的Markov chain有緊密的關係[5]。Normalized
Cut這個量度,
換成Markov chain的語言就是在圖上隨機遊走,子集間相互“串門”的概率大小。相當有
趣。