密度聚類。Clustering by fast search and
作者在這篇文章中介紹了一種新型的聚類演算法 -- 基於密度的聚類演算法。
靈感來源
經典的聚類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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習——dbscan密度聚類機器學習聚類
- Clustering and Projected Clustering with Adaptive Neighbors(自適應鄰域聚類CAN和自適應鄰域投影聚類PCAN)ProjectAPT聚類PCA
- DBSCAN聚類演算法(Density-Based Spatial Clustering of Applications with Noise)聚類演算法APP
- 程式設計實現DBSCAN密度聚類演算法,並以西瓜資料集4.0為例進行聚類效果分析程式設計聚類演算法
- 學點高階技術:基於密度的聚類演算法——FDBSCAN演算法聚類演算法
- 聚類分析聚類
- 聚類(part3)--高階聚類演算法聚類演算法
- 聚類之K均值聚類和EM演算法聚類演算法
- 【scipy 基礎】--聚類聚類
- 聚類演算法聚類演算法
- k-means聚類聚類
- 09聚類演算法-層次聚類-CF-Tree、BIRCH、CURE聚類演算法
- 04聚類演算法-程式碼案例一-K-means聚類聚類演算法
- 聚類分析-案例:客戶特徵的聚類與探索性分析聚類特徵
- unit3 文字聚類聚類
- 譜聚類原理總結聚類
- 密度
- 推薦系統中的產品聚類:一種文字聚類的方法聚類
- 解讀論文《Agglomerative clustering of a search engine query log》,以解決搜尋推薦相關問題
- 【Python機器學習實戰】聚類演算法(1)——K-Means聚類Python機器學習聚類演算法
- Spark構建聚類模型(二)Spark聚類模型
- 聚類演算法綜述聚類演算法
- sklearn建模及評估(聚類)聚類
- 譜聚類的python實現聚類Python
- OPTICS聚類演算法原理聚類演算法
- 非完整資料聚類初探聚類
- 初探DBSCAN聚類演算法聚類演算法
- 資料探勘-層次聚類聚類
- 14聚類演算法-程式碼案例六-譜聚類(SC)演算法案例聚類演算法
- 可伸縮聚類演算法綜述(可伸縮聚類演算法開篇)聚類演算法
- 【Python機器學習實戰】聚類演算法(2)——層次聚類(HAC)和DBSCANPython機器學習聚類演算法
- 前端架構思想:聚類分層前端架構聚類
- pyhanlp 文字聚類詳細介紹HanLP聚類
- Kmeans如何初始化聚類中心聚類
- Spark中的聚類演算法Spark聚類演算法
- MVO優化DBSCAN實現聚類優化聚類
- 機器學習(8)——其他聚類機器學習聚類
- 深度聚類演算法敘談聚類演算法