密度聚類。Clustering by fast search and

Bacer發表於2021-09-09

作者在這篇文章中介紹了一種新型的聚類演算法 -- 基於密度的聚類演算法。

靈感來源

經典的聚類K-means是透過指定聚類中心,再透過迭代的方式更新聚類中心的方式,由於每個點都被指派到距離最近的聚類中心,所以導致其不能檢測非球面類別的資料分佈。雖然有DBSCAN(density-based spatial clustering of applications with noise)對於任意形狀分佈的進行聚類,但是必須指定一個密度閾值,從而去除低於此密度閾值的噪音點。

這篇文章假設聚類中心周圍都是密度比其低的點,同時這些點距離該聚類中心的距離相比於其他聚類中心最近。

聚類方法

對於每一個資料點i,需要計算兩個量一個是區域性密度圖片描述和與高於i點密度的最小距離。

區域性密度定義如下:


圖片描述

當x,否則圖片描述。這裡圖片描述是一個截斷距離,文中為所有點的相互距離中由小到大排列佔總數2%的位置距離數值定義圖片描述。演算法只關心的量級因此對於的選擇比較魯棒。

距離定義如下:


圖片描述

所有比i點密度高的所有點的最近距離表示圖片描述。對於最大密度的點其為所有點與點距離的最大值圖片描述

找出聚類中心:

以下A圖為例,所有點的密度值按照由高到低排列,“1”表示密度最高的點。B圖中畫圖每個點和的函式關係,從中可以看出“9”和“10”號點擁有相近的密度值但是其不同,這裡“9”屬於“1”號類別。“26”、“27”和“28”號點有一個相對較大的,但是其太小,這主要是因為它們是孤立點。 這裡可以透過給定的圖片描述min和圖片描述min篩選出同時滿足(圖片描述>圖片描述min)和(圖片描述>圖片描述min)條件的點作為距離中心點。

圖片描述


剩餘點的類別指派:

當聚類中心確定之後,剩下的點的類別標籤指定按照以下原則:

當前點的類別標籤等於高於當前點密度的最近的點的標籤一致。從而對所有點的類別進行了指定。如下圖所示,編號表示密度高低,“1”表示密度最高,以此類推。“1”和“2”均為聚類中心,"3"號點的類別標籤應該為與距離其最近的密度高於其的點一致,因此“3”號點屬於聚類中心1,由於“4”號點最近的密度比其高的點為“3”號點,因此其類別標籤與”3“號相同,也為聚類中心1。


圖片描述


在對每一個點指派所屬類別之後,這裡文章沒有人為直接用噪音訊號截斷的方法去除噪音點,而是先算出類別之間的邊界,然後找出邊界中密度值最高的點的密度作為閾值只保留前類別中大於或等於此密度值的點,這裡將此密度閾值記為圖片描述

類別間邊界確定:

以下圖為例,對於類別1中的所有點,計算與其他類別中所有點距離小於等於的最大密度值,例如“1”號點由於其距離其他類別的點的距離均大於,因此不予考慮。由下圖可以看出密度第6的值距離其他類別最近所以圖片描述=圖片描述(6),由於“7”號點的密度圖片描述(7), 因此將其作為噪音點去除,最後得到的類別1的點為綠色圈所示“1”、“3”和“6”。


圖片描述


聚類效果展示

下圖是一個非球形類分佈圖,同時加入黑色噪音點後,A圖為類的機率分佈,B、C圖為4000個和1000個樣本點,E和F生成的每個點對應的圖片描述圖片描述的函式圖,可以明顯看出類別中心及個數。F圖為隨著樣本點的增加,錯誤指派點的比率。

圖片描述

以下是使用該演算法在其他資料集上進行聚類的效果圖

圖片描述


演算法優點

該聚類演算法可以得到非球形的聚類結果,可以很好地描述資料分佈,同時在演算法複雜度上也比一般的K-means演算法的複雜度低。

同時此演算法的只考慮點與點之間的距離,因此不需要將點對映到一個向量空間中。

演算法缺點

需要事先計算好所有點與點之間的距離。如果樣本太大則整個距離矩陣的記憶體開銷特別大,因此如果只需要得到最終聚類中心,則可以考慮犧牲速度的方式計算每一個樣本點的圖片描述圖片描述,避免直接載入距離矩陣


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2768/viewspace-2804328/,如需轉載,請註明出處,否則將追究法律責任。

相關文章