小白都能瞭解的聚類算法之四(譜聚類)

1.譜聚類概述

譜聚類(Spectral clustering)是利用矩陣的特徵向量進行聚類的一種方法,其本質上是矩陣特徵分解進行降維的一種方法。它一般由兩部分組成,第一部分是對數據進行變換,第二部分再使用傳統的kmeans等方法對變換以後的數據進行聚類。
譜聚類是從圖論中演化出來的算法,後來在聚類中得到了廣泛的應用。它的主要思想是把所有的數據看做空間中的點,這些點之間可以用邊連接起來。距離較遠的兩個點之間的邊權重值較低,而距離較近的兩個點之間的邊權重值較高,通過對所有數據點組成的圖進行切圖,讓切圖後不同的子圖間邊權重和儘可能的低,而子圖內的邊權重和儘可能的高,從而達到聚類的目的。(這一段內容來自劉建平老師的描述,具體見參考文獻1)

2.譜聚類的基本步驟

在具體的內容展開之前,可以看一下譜聚類的基本步驟
1.先確定參數,包括一個描述相似性圖的鄰接矩陣W,與聚類的目標類書目k。
2.計算度(次數)矩陣D與拉普拉斯矩陣L。
3.計算標準化以後的拉普拉斯矩陣D1/2LD1/2D^{-1/2}LD^{1/2}
4.求D1/2LD1/2D^{-1/2}LD^{1/2}最小k_1個特徵值所對應的的特徵向量fkf_k
5.將上述的特徵向量fkf_k構成的矩陣行標準化,得到nkn*k矩陣。
6.對上述的n個樣本用諸如kmeans等方法進行聚類,聚類維數爲k2k_2
7.得到簇的劃分C(c1,c2,,ck2)C(c_1, c_2, \cdots, c_{k2})

3.圖的基本概念

圖是數據結構中的概念。圖是由頂點與邊構成,任意兩個節點之間可能都有邊進行連接,如果邊帶有值的信息,稱爲權重。比如下面的一個圖。

在這裏插入圖片描述
圖一般用字母G表示,邊一般用E表示,點用V表示。如果兩個點之間有連接,則有一條邊。如果邊是單向的,則邊是有向的,該圖爲有向圖。否則爲無向圖。

頂點的度定義爲該頂點所關聯的邊的數量,對於有向圖它還分爲出度和入度,出度是指從一個頂點射出的邊的數量,入度是連入一個節點的邊的數量。無向圖可以用三元組形式化的表示:
(V,E,ω)(V, E, \omega)

其中,V是頂點集合,E是邊的集合,ω\omega是邊的權重。假設i和j爲圖的頂點,WijW_{ij}爲邊(i,j)的權重,由它構成的矩陣W稱爲鄰接矩陣。那麼對於無向圖來說,其鄰接矩陣爲對稱矩陣。

對於圖中的任意一個點viv_i,定義他的度did_i爲和他連接的所有邊的權重之和
di=j=1nwijd_i = \sum \limits_{j=1}^{n}w_{ij}

利用每個點度的定義,可以得到一個n*n的度矩陣D,其爲對角矩陣,只有局對角線有值,對應第i個點的度。
$$D=[d1d2dn](3) D = \left[ \begin{matrix} d_1 & \cdots & \cdots \\ \cdots & d_2 & \cdots \\ \cdots & \cdots & \cdots \\ \cdots & \cdots & d_n \\ \end{matrix} \right] \tag{3} $$

4.相似矩陣與拉普拉斯矩陣

上面提到了鄰接矩陣,那麼怎樣得到鄰接矩陣?常見的構建方法是對第i個數據點,離該點最近的p個數據點使用它們之間的歐幾里得距離作爲相似性的度量,其他較遠的點相似性程度都爲0。一旦構建好了相似性圖G,我們就可以寫下用來描述這個圖的臨接矩陣W。
一般由三種方式構建鄰接矩陣,ϵ\epsilon鄰近,K鄰近與全鏈接。

ϵ\epsilon鄰近是設置一個閾值ϵ\epsilon,然後計算任意兩點ij之間的距離sij=xixj22s_{}ij = || x_i - x_j || _2 ^ 2
P(xPax)={0,sij>ϵϵ,sijϵP(x|Pa_x)=\begin{cases} 0, & s_{ij} > \epsilon\\ \epsilon, & s_{ij} \leq \epsilon \end{cases}

第二種方式是K鄰近法,找到每個樣本最近的k個點作爲近鄰,只有和樣本距離最近的k個點之間的ωij>0\omega_{ij} > 0
全連接法相比較前兩種,所有的點之間的權重值都大於0,因此稱之爲全連接法。可以選擇不同的核函數來定義邊權重,常用的有多項式核函數,高斯核函數和Sigmoid核函數。最常用的是高斯核函數RBF,此時相似矩陣和鄰接矩陣相同:

wij=sij=exp(xixj222σ2)w_{ij} = s_{ij} = exp(- \frac{||x_i - x_j||_2^2}{2\sigma ^ 2})
其中,σ\sigma控制鄰域的寬度,是人工設置的超參數。

然後我們可以定義拉普拉斯矩陣L = D - W,其中D爲上面講到的度矩陣,是一個對角矩陣。W爲鄰接矩陣,可以由上面提到的方法構造出來。因爲D是對角矩陣,而W爲對稱矩陣,很明顯L也爲對稱矩陣。

5.圖的切割

對於無向圖G,我們的目標是將G(V, E)切成相互沒有連接的k個子圖,每個子圖點的集合爲:
A1,A2,,AkA_1, A_2, \cdots, A_k
對於任意兩個子圖點的集合A, B,定義AB之間的切圖權重爲
W(A,B)=iA,jBwijW(A, B) = \sum \limits _{i \in A, j \in B} w_{ij}
那麼對於k個子圖的集合A1,A2,,AkA_1, A_2, \cdots, A_k,定義圖的cut
cut(A1,A2,,Ak)=12i=1kW(Ai,Ai)cut(A_1, A_2, \cdots, A_k) = \frac{1}{2}\sum \limits _{i=1}^k W(A_i, \overline {A_i})
那麼切圖的要求自然就是高內聚,低耦合了,就是說每個子圖內的點權重高,而每個子圖之間的點權重和低。一個自然的想法就是最小化cut(A1,A2,,Ak)cut(A_1, A_2, \cdots, A_k),但是這樣會存在問題。
在這裏插入圖片描述
上圖可以看出smallest cut跟best cut差別很大。

6.不同的切圖方式

6.1 RatioCut

爲了避免上面的最小切圖,除了考慮cut(A1,A2,,Ak)cut(A_1, A_2, \cdots, A_k),我們還考慮最大化每個子圖點的個數,即

Ratiocut(A1,A2,,Ak)=12i=1kW(Ai,Ai)AiRatiocut(A_1, A_2, \cdots, A_k) = \frac{1}{2} \sum \limits _{i=1}^k \frac{W(A_i, \overline {A_i})}{|A_i|}

6.2 Ncut

Ncut與RatioCut不一樣的地方在於,將分母Ai|A_i|換成了vol(Ai)vol(A_i)。其中,我們將vol(Ai)vol(A_i)定義爲:
vol(Ai)=iAdivol(A_i) = \sum \limits _{i \in A} d_i

7.譜聚類的優缺點

優點:
1.算法過程中只用到數據點之間的相似矩陣,所以處理稀疏數據毫無壓力。
2.因爲在矩陣分解的過程中,會有降維,因此處理高維數據的時候複雜度比kmeans等算法低。
缺點:
1.最終的效果依賴相似矩陣,不同的相似矩陣結果差別比較大。
2.如果聚類的維度很高,可能因爲降維幅度不夠,譜聚類的運行速度和最後的聚類效果均不好。

8.總結

綜上所述,譜聚類是一種基於圖的算法。先把樣本數據看成圖的頂點,根據數據點之間的距離構造邊,形成帶權重的圖,然後通過對圖進行處理來完成算法所需的功能。對於聚類問題,通過圖的切割實現聚類,即將圖切分成多個子圖,這些子圖就是對應的簇。

參考文獻

1.https://www.cnblogs.com/pinard/p/6221564.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章