1.譜聚類概述
譜聚類(Spectral clustering)是利用矩陣的特徵向量進行聚類的一種方法,其本質上是矩陣特徵分解進行降維的一種方法。它一般由兩部分組成,第一部分是對數據進行變換,第二部分再使用傳統的kmeans等方法對變換以後的數據進行聚類。
譜聚類是從圖論中演化出來的算法,後來在聚類中得到了廣泛的應用。它的主要思想是把所有的數據看做空間中的點,這些點之間可以用邊連接起來。距離較遠的兩個點之間的邊權重值較低,而距離較近的兩個點之間的邊權重值較高,通過對所有數據點組成的圖進行切圖,讓切圖後不同的子圖間邊權重和儘可能的低,而子圖內的邊權重和儘可能的高,從而達到聚類的目的。(這一段內容來自劉建平老師的描述,具體見參考文獻1)
2.譜聚類的基本步驟
在具體的內容展開之前,可以看一下譜聚類的基本步驟
1.先確定參數,包括一個描述相似性圖的鄰接矩陣W,與聚類的目標類書目k。
2.計算度(次數)矩陣D與拉普拉斯矩陣L。
3.計算標準化以後的拉普拉斯矩陣。
4.求最小k_1個特徵值所對應的的特徵向量。
5.將上述的特徵向量構成的矩陣行標準化,得到矩陣。
6.對上述的n個樣本用諸如kmeans等方法進行聚類,聚類維數爲。
7.得到簇的劃分
3.圖的基本概念
圖是數據結構中的概念。圖是由頂點與邊構成,任意兩個節點之間可能都有邊進行連接,如果邊帶有值的信息,稱爲權重。比如下面的一個圖。
圖一般用字母G表示,邊一般用E表示,點用V表示。如果兩個點之間有連接,則有一條邊。如果邊是單向的,則邊是有向的,該圖爲有向圖。否則爲無向圖。
頂點的度定義爲該頂點所關聯的邊的數量,對於有向圖它還分爲出度和入度,出度是指從一個頂點射出的邊的數量,入度是連入一個節點的邊的數量。無向圖可以用三元組形式化的表示:
其中,V是頂點集合,E是邊的集合,是邊的權重。假設i和j爲圖的頂點,爲邊(i,j)的權重,由它構成的矩陣W稱爲鄰接矩陣。那麼對於無向圖來說,其鄰接矩陣爲對稱矩陣。
對於圖中的任意一個點,定義他的度爲和他連接的所有邊的權重之和
利用每個點度的定義,可以得到一個n*n的度矩陣D,其爲對角矩陣,只有局對角線有值,對應第i個點的度。
$$$$
4.相似矩陣與拉普拉斯矩陣
上面提到了鄰接矩陣,那麼怎樣得到鄰接矩陣?常見的構建方法是對第i個數據點,離該點最近的p個數據點使用它們之間的歐幾里得距離作爲相似性的度量,其他較遠的點相似性程度都爲0。一旦構建好了相似性圖G,我們就可以寫下用來描述這個圖的臨接矩陣W。
一般由三種方式構建鄰接矩陣,鄰近,K鄰近與全鏈接。
鄰近是設置一個閾值,然後計算任意兩點ij之間的距離 。
第二種方式是K鄰近法,找到每個樣本最近的k個點作爲近鄰,只有和樣本距離最近的k個點之間的
全連接法相比較前兩種,所有的點之間的權重值都大於0,因此稱之爲全連接法。可以選擇不同的核函數來定義邊權重,常用的有多項式核函數,高斯核函數和Sigmoid核函數。最常用的是高斯核函數RBF,此時相似矩陣和鄰接矩陣相同:
其中,控制鄰域的寬度,是人工設置的超參數。
然後我們可以定義拉普拉斯矩陣L = D - W,其中D爲上面講到的度矩陣,是一個對角矩陣。W爲鄰接矩陣,可以由上面提到的方法構造出來。因爲D是對角矩陣,而W爲對稱矩陣,很明顯L也爲對稱矩陣。
5.圖的切割
對於無向圖G,我們的目標是將G(V, E)切成相互沒有連接的k個子圖,每個子圖點的集合爲:
。
對於任意兩個子圖點的集合A, B,定義AB之間的切圖權重爲
那麼對於k個子圖的集合,定義圖的cut
那麼切圖的要求自然就是高內聚,低耦合了,就是說每個子圖內的點權重高,而每個子圖之間的點權重和低。一個自然的想法就是最小化,但是這樣會存在問題。
上圖可以看出smallest cut跟best cut差別很大。
6.不同的切圖方式
6.1 RatioCut
爲了避免上面的最小切圖,除了考慮,我們還考慮最大化每個子圖點的個數,即
6.2 Ncut
Ncut與RatioCut不一樣的地方在於,將分母換成了。其中,我們將定義爲:
7.譜聚類的優缺點
優點:
1.算法過程中只用到數據點之間的相似矩陣,所以處理稀疏數據毫無壓力。
2.因爲在矩陣分解的過程中,會有降維,因此處理高維數據的時候複雜度比kmeans等算法低。
缺點:
1.最終的效果依賴相似矩陣,不同的相似矩陣結果差別比較大。
2.如果聚類的維度很高,可能因爲降維幅度不夠,譜聚類的運行速度和最後的聚類效果均不好。
8.總結
綜上所述,譜聚類是一種基於圖的算法。先把樣本數據看成圖的頂點,根據數據點之間的距離構造邊,形成帶權重的圖,然後通過對圖進行處理來完成算法所需的功能。對於聚類問題,通過圖的切割實現聚類,即將圖切分成多個子圖,這些子圖就是對應的簇。
參考文獻
1.https://www.cnblogs.com/pinard/p/6221564.html