CLIQUE 聚類算法以及Java實現+多線程


CLIQUE(Clustering In QUEst)是一種簡單的基於網格的聚類方法,用於發現子空間中基於密度的簇。CLIQUE把每個維划分成不重疊的區間,從而把數據對象的整個嵌入空間划分成單元。它使用一個密度閾值識別稠密單元和稀疏單元。一個單元是稠密的,如果映射到它的對象數超過該密度閾值。

CLIQUE識別候選搜索空間的主要策略是使用稠密單元關於維度的單調性。這基於頻繁模式和關聯規則挖掘使用的先驗性質。在子空間聚類的背景下,單調性陳述如下:

一個k-維(>1)單元c至少有I個點,僅當c的每個(k-1)-維投影(它是(k-1)-維單元)至少有1個點。考慮下圖,其中嵌人數據空間包含3個維:age,salary,vacation. 例如,子空間age和salary中的一個二維單元包含l個點,僅當該單元在每個維(即分別在age和salary上的投影都至少包含l個點).

 

 

CLIQUE通過兩個階段進行聚類。在第一階段,CLIQUE把d-維數據空間划分若干互不重疊的矩形單元,並且從中識別出稠密單元。CLIQUE在所有的子空間中發現稠密單元。為了做到這一點,CLIQUE把每個維都划分成區間,並識別至少包含l個點的區間,其中l是密度閾值。然后,CLIQUE迭代地連接子空間.CLIQUE檢查中的點數是否滿足密度閾值。當沒有候選產生或候選都不稠密時,迭代終止。
在第二階段中,CLIQUE使用每個子空間中的稠密單元來裝配可能具有任意形狀的簇。其思想是利用最小描述長度(MDL)原理,使用最大區域來覆蓋連接的稠密單元,其中最大區域是一個超矩形,落人該區域中的每個單元都是稠密的,並且該區域在該子空間的任何維上都不能再擴展。一般地找出簇的最佳描述是NP一困難的。因此,CLIQUE采用了一種簡單的貪心方法。它從一個任意稠密單元開始,找出覆蓋該單元的最大區域,然后在尚未被覆蓋的剩余的稠密單元上繼續這一過程。當所有稠密單元都被覆蓋時,貪心方法終止。

 

最后給出Java實現(支持多屬性聚類,多線程)

https://github.com/HK-Zhang/wheats/tree/master/src/ClusterClique

 

參考文章:《數據挖掘概念與技術》韓家煒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM