1 簡介
帶噪空間基於密度的聚類方法(Density-Based Spatial Clustering of Applications with Noise,DBSCAN)是一種比較有代表性的基於密度的聚類算法。與劃分和層次聚類方法不同,它將簇定義爲密度相連的點的最大集合,能夠把具有足夠高密度的區域劃分爲簇,並可在帶噪聲的數據集空間中發現任意形狀的類別簇。和K-Means,BIRCH這些一般只適用於凸樣本集的聚類相比,DBSCAN既可以適用於凸樣本集,也可以適用於非凸樣本集。
2 算法
DBSCAN是一種基於密度的聚類算法,這類密度聚類算法一般假定類別可以通過樣本分佈的緊密程度決定。同一類別的樣本,他們之間應該是緊密相連的,算法將這樣的關係成爲密度相連的。算法通過將密度相連的樣本劃爲一類,這樣就得到了一個聚類類別。再將所有樣本劃爲多個密度相連的不同類別,就得到了最終的聚類結果。
2.1 定義
定義1:(點的Eps-鄰域)點的Eps-鄰域 表示樣本集合中於點的距離小於的所有樣本點的集合,用表示,定義爲
定義2:(核心點)樣本點的Eps-鄰域 的樣本點個數用表示,若其樣本點數,則稱樣本點爲核心點。其餘的樣本點成爲邊界點。如下圖所示,點爲核心點,點爲邊界點。
定義3:(直接密度可達)若樣本點與點滿足如下條件:
- (核心點條件)
則稱點可由點直接密度可達,反之不一定成立。如下圖所示,因爲點不是核心點,點是核心點,而點又在點的Eps-鄰域 內,因此點可由點直接密度可達,點不能由點直接密度可達。
定義4:(密度可達)若有一串點、、…、,其中,,而可由直接密度可達(),則稱點可由點密度可達。
密度可達性是密度直接可達性的擴展,這是一種傳遞的關係,但不是對稱可逆的,只有核心點對之間的密度可達性是對稱的。如下圖所示,點可由點密度可達,而點不能由點密度可達。
定義5(密度相連)若有點,使得點和點都由密度可達,那麼稱點和點是密度相連的。
密度相連性是一種對稱可逆的關係。如下圖所示,點和點是密度相連的。
定義6:(簇)設樣本集爲,那麼參數爲和的簇C是的非空子集,它滿足以下條件:
- ,如果,而且點由點密度可達,那麼點也屬於簇C(極大性);
- :和點是密度相連的(連接性)。
定義7:(噪聲點)設是樣本集的所有的簇,那麼噪聲點就是數據集中,不屬於以上所有簇的樣本點。即
引理1:設點是樣本集中的樣本點,而且,即點是核心點,那麼集合是一個簇。
簇中的每一個點有種的任意一個核心點密度可達的,所以簇剛好包含了所有由它的核心點密度可達的點。
引理2:設是一個簇,是簇中的任意一點且,那麼等價於集合,其中
2.2 算法實現步驟
輸入:樣本集,鄰域參數(,)
輸出:簇的劃分
1) 初始化核心點集 ,初始化聚類簇的序號 ,初始化未訪問的樣本點集 ,簇的劃分
2) 對於,按照下列步驟找出所有的核心點:
- 通過距離度量的方式,找到樣本點的Eps-鄰域
- 如果Eps-鄰域 的點數,則將加入到核心點集中:
3) 如果核心點集 ,則算法結束,否則轉入步驟4)
4)在覈心點集中,隨機選擇一個核心點,初始化當前簇的核心點隊列,更新類別序號,初始化當前簇樣本集合,更新未訪問樣本集合
5)如果當前簇的核心點隊列,則當前聚類簇生成完畢,更新簇的劃分,更新核心點集,轉入步驟3)
6)在當前簇的核心點隊列中隨機取出一個核心點,通過鄰域距離閾值劃出所有Eps-鄰域 ,令,更新當前簇的樣本集合,更新未訪問樣本集合,更新核心點隊列,轉入步驟5)
最終程序執行完成後將輸出簇的劃分結果。
3 僞代碼
根據以上算法,寫出如下僞代碼的形式:
其中ExpandCluster函數的僞代碼形式如下:
4 實驗結果
利用 SEQUOIA 2000 的部分測試樣本,測試DBSCAN算法以及CLARANS算法的聚類效果,並做對比。
以下是CLARANS算法的聚類結果:
以下是DBSCAN的聚類結果:
由實驗結果可以看出,DBSCAN對任意形狀的樣本集都具有較好的更符合人類直觀的聚類效果,並在聚類的同時可以找出噪聲點並排除噪聲點。
下表展示了DBSCAN算法與CLARANS算法的聚類效率的對比(單位 秒):
由表可以看出,DBSCAN的聚類效率更高,比CLARANS能快出1到2個數量級。
5 優缺點
DBSCAN具有以下優點:
- 可以對任意形狀的稠密數據集進行聚類;
- 可以在聚類的同時發現異常點,對數據集中的異常點不敏感;
- 相對於K-Means等聚類方法,DBSCAN對結果沒有偏倚,其初始值的設置幾乎不會影響聚類結果
DBSCAN也有它的缺點:
- 如果樣本集的密度不均勻、聚類間距差相差很大時,聚類質量較差,這時用DBSCAN聚類一般不適合;
- 如果樣本集較大時,聚類收斂時間較長,此時可以對搜索最近鄰時建立的KD樹或者球樹進行規模限制來改進;
- 調參相對於傳統的K-Means之類的聚類算法較爲複雜,主要需要對距離閾值和鄰域樣本數閾值聯合調參,不同的參數組合對最後的聚類效果有較大影響。
6 小結
和傳統的K-Means算法相比,DBSCAN最大的不同就是不需要輸入類別數,當然它最大的優勢是可以發現任意形狀的聚類簇,也就是說它可以用於非凸數據集的聚類,而不只是像K-Means等算法僅僅侷限於凸樣本集的聚類。同時它在聚類的同時還可以找出異常點,這點和BIRCH算法類似。當數據集不是稠密的類型,就不適合採用DBSCAN算法。
7 參考文獻
[1] Ester, Martin & Kriegel, Hans-Peter & Sander, Joerg & Xu, Xiaowei. (1996). A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise. KDD. 96. 226-231.
[2] DBSCAN密度聚類算法
[3] 聚類分析常用算法原理:KMeans,DBSCAN, 層次聚類
原創性聲明:本文屬於作者原創性文章,小弟碼字辛苦,轉載還請註明出處。謝謝~
如果有哪些地方表述的不夠得體和清晰,有存在的任何問題,歡迎評論和指正,謝謝各路大佬。
有需要相關技術支持的可諮詢QQ:297461921