天天看點

聚類之譜聚類

譜聚類是一直讓我很郁悶的一個聚類方法,因為光知道做法,不知道原理,這樣用起來的時候真心很虛,就是很納悶,為啥這麼做就可以呢?

譜聚類是利用相似矩陣或其他派生矩陣的結構特征,将樣本劃分到不相交類别中,并使類内樣本相似度很高,而類别間樣本相似度較低的一類技術,是一種啟發式的聚類算法。

現在就介紹一下譜聚類的原理吧

由于實體與實體之間的互相作用,産生了大量的複雜資料集,我們可以用數學中的圖論的概念來表達這類複雜的資料,其中結點表示的實體,邊表示實體之間的的互相作用。

不放我們先簡單介紹一點圖論的知識吧。

圖G由一一系列的結點和邊組成,G={V,E},圖的結構由鄰接矩陣A來表示。

其中如果結點i和j相接,則Aij=1,如果不相接,Aij=0

聚類之譜聚類

圖既可以是有向的也可以是無向圖,無向圖的鄰接矩陣使對稱的,這都比較好了解。

當然了,這裡都是用1/0表示兩個節點之間是有關系的,我們當然可以對邊進行權重,如果聯系大的話我們的權值就大,這樣的話,我們既可以用距離公式,算兩個樣本點的距離,那麼這個鄰接矩陣A就是一個權重邊的鄰接矩陣,矩陣中的每一個元素也代表着兩個樣本的距離。

圖的拉普拉斯矩陣可由鄰接矩陣導出:

聚類之譜聚類

D是對角陣,表示的樣本i到其他所有樣本的距離的加和:

聚類之譜聚類

這個di也叫結點i的度,我們現在說一下這個未正則的拉普拉斯矩陣的性質:

a.  L是對稱半正定的

b.  各特征值為實數且非負,最小值為0,是以,是以,可以将特征值排列:

聚類之譜聚類

c. 零特征值的個數等于圖連接配接部分的數目,對應的特征向量可以作為一個訓示向量,表示給定的結點屬于那一部分,我們可以通過一幅圖來表示這個特性:

聚類之譜聚類
聚類之譜聚類

如上圖所示,拉普拉斯矩陣0特征值的個數為3個,這就表明其由3個互相分離的部分,同樣我們從右邊的表中可以看出,12345為一部分,678為一部分,10111213為一部分,是以,特征向量矩陣的行表示出結點屬于那一部分。

是不是和聚類有些相近了呢!!!

我們直接套用在聚類架構下來看看這個譜聚類:

a:  定義樣本之間的相似度,形成相似度矩陣A

b:  通過相似度矩陣計算拉普拉斯矩陣

c:  對拉普拉斯矩陣進行特征分解,選擇前k小的特征值的特征向量,構成n*k維特征向量矩陣

d:  利用K-means算法,将n個按照特征向量行劃分的k維樣本劃分到k個類别中去。

完活,僅此而已,真心不難!!!

另外,我們求相似矩陣的時候,有很多種方式,這裡介紹兩種:

首先定義兩節點邊上的權值,這些權值用以衡量兩節點的相似性,權值的定義方法也有很多種,我們假定一個鄰接矩陣A,矩陣元素Aij = s(xi,xj),

s(xi,xj)是樣本x和y之間的相似度。我們設定一個ε鄰域,當樣本之間的距離小于這個ε鄰域是,結點之間就存在一條邊:

聚類之譜聚類

除此之外,我們還可以用高斯相似度來做:

聚類之譜聚類

當然了,拉普拉斯矩陣的形式也有三種:

剛剛介紹的那種是未正則的拉普拉斯矩陣,除此之外還有:

規範化拉普拉斯矩陣(正則化拉普拉斯矩陣):

聚類之譜聚類

(非對稱)随機遊走拉普拉斯矩陣:

聚類之譜聚類

需要注意的是,随機遊走拉普拉斯矩陣最終取的是前k大的,而非前k小的。

繼續閱讀