前言:以前只是調用過譜聚類算法,我也不懂為什么各家公司都問我一做文字檢測的這個算法具體咋整的,沒整明白還給我掛了哇擦嘞?訊飛還以這個理由刷本寶,今天一怒把它給整吧清楚了,下次誰再問來!說不暈你算我輸!
一、解釋:
譜聚類是一種基於圖論的算法,主要思想是把所有的數據看做空間中的點,這些點之間用帶權邊連接,距離越近權重越大,通過對這些點組成的圖進行切割,讓切圖后的子圖間的權重和盡可能小,子圖內的權重盡可能大,從而達到聚類的目的。
切圖的過程是:定義一個子圖與其他子圖間的權重和,同時要求每個子圖的個數不能太少,這樣圖切問題就轉換為了最小化這個權重和/子圖個數的過程。優化這個過程我們定義一個指示矩陣h,要分為的類別是(A1,A2...Ak),i屬於Aj類則hij≠0,否則等於0,這樣優化式子得到h之后我們就能知道各個節點的類別。根據分析得知,這個h的解與拉普拉斯矩陣L和權重矩陣D有關,具體來說是D-1/2LD-1/2的k個最小的特征值對應的特征向量,這樣我們就得到了h,也將維度從n降到了k。一般來說需要對h進行按行進行標准化,然后再對這個n*k的矩陣按行進行kmeans聚類,就得到了最終的聚類結果。
二、推導:
三、步驟:
輸入:樣本集D= (x1,x2,...,xn),相似矩陣的生成方式, 降維后的維度k1, 聚類方法,聚類后的維度k2
輸出: 簇划分C(c1,c2,...ck2).
1) 根據輸入的相似矩陣的生成方式構建樣本的相似矩陣S。
2)根據相似矩陣S構建鄰接矩陣W,構建度矩陣D。
3)計算出拉普拉斯矩陣L。
4)構建標准化后的拉普拉斯矩陣D−1/2LD−1/2
5)計算D−1/2LD−1/2最小的k1個特征值所各自對應的特征向量f。
6) 將各自對應的特征向量f組成的矩陣按行標准化,最終組成n×k1維的特征矩陣F。
7)對F中的每一行作為一個k1維的樣本,共n個樣本,用輸入的聚類方法進行聚類,聚類維數為k2。
8)得到簇划分C(c1,c2,...ck2)。
四、優缺點:
優點:只需要相似度矩陣,方便處理稀疏數據的聚類;使用了降維,處理高維數據效果比傳統聚類方法好。
缺點:如果降維的幅度不夠,效果和效率均不夠好;依賴於相似度矩陣。
五、鏈接: