譜聚類(Spectral Clustering)原理及Python實現
阿新 • • 發佈:2019-01-09
譜聚類原理及Python實現
圖模型
無向帶權圖模型
,每一條邊上的權重
為兩個頂點的相似度,從而可以定義相似度矩陣
,此外還可以定義度矩陣
和鄰接矩陣
,從而有拉普拉斯矩陣
。所以本文用到的矩陣總共兩個:
和
。
圖的分割
一個圖 可能有很多個子圖 (總共 個),現在的任務是將大圖分成若干小塊,要求分法是最佳的。何為“最佳”呢,遍歷每一個子圖,計算一個切圖懲罰,將他們加起來。式中的 表示子圖 的補集,代價函式 計算的是連線兩個子圖之間的權重之和。
根據這個公式,對於下面這個圖,假設點7和點8之間的權重值很小,那麼很容易有紅線所示的劃分(假設二分),上面的代價函式計算出來的值很小。但顯然綠色線所示才是最佳的分法。
距離度量與鄰接矩陣
鄰接矩陣某種程度上反映了圖中各結點之間的相似性,普通的鄰接矩陣元素非0即1,譜聚類中的鄰接矩陣用KNN來計算。具體來說,遍歷每一個結點 ,根據相似度(或距離)矩陣找出它的 個最接近的點,構成 的鄰域 ,然後按以下規則之一構造鄰接矩陣。
切圖聚類
RatioCut 切法
為了解決上面這個區域性最優問題,一個很自然的做法就是改進目標函式,要求每個劃分出來的子圖的結點數儘量大。例如上圖,最佳劃分對應的兩個子圖節點數都是4,而區域性最優劃分有一個子圖節點數為1。