聚類算法之基於密度的聚類算法DBSCAN算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一個比較有代表性的基於密度的聚類算法。與劃分和層次聚類方法不同,它將簇定義爲密度相連的點的最大集合,能夠把具有足夠高密度的區域劃分爲簇,並可在噪聲的空間數據庫中發現任意形狀的聚類。

DBSCAN算法最重要的兩個參數是ε\varepsilonMinPtsMinPts,其中ε\varepsilon描述了某一樣本的鄰域距離閾值,MinPtsMinPts描述了某一樣本的距離爲ε\varepsilon的鄰域中樣本個數的閾值。

DBSCAN算法中的概念

ε\varepsilon 包含樣本集DD中與某個樣本xx的距離不大於ε\varepsilon的子樣本集。
核心對象: 對於任意一個樣本xx,若其ε\varepsilon鄰域中至少包含MinPtsMinPts個樣本,則該樣本xx是核心對象。
密度直達:xix_i位於xjx_jε\varepsilon鄰域中,且xjx_j是核心對象,則稱xix_ixjx_j密度直達,反之不一定成立。
密度可達: 對於xix_ixjx_j,若存在樣本序列{P1,P2,...,Pt}\begin{Bmatrix}P_1,P_2,...,P_t\end{Bmatrix},滿足P1=xi,Pt=xjP_1=x_i,P_t=x_jPt+1P_{t+1}PtP_{t}密度直達,則稱xix_ixjx_j密度可達。密度可達滿足傳遞性,此時序列P1,P2,...,Pt1P_1,P_2,...,P_{t-1}均爲核心對象,因爲只有核心對象才能使其他樣本密度直達。
密度相連: 對於xix_ixjx_j,若存在覈心對象xkx_k,使xix_ixjx_j均由xkx_k密度可達,則稱xix_ixjx_j密度相連。密度相連滿足對稱性。

DBSCAN算法流程

輸入樣本集D={x1,x2,...,xm}D=\begin{Bmatrix}x_1,x_2,...,x_m\end{Bmatrix},鄰域參數(ε\varepsilonMinPtsMinPts),樣本距離度量方式。

1.初始化核心對象集合Ω=\Omega= \varnothing,初始化聚類簇數K=0,初始化爲未訪問樣本集合Γ=D\Gamma=D,簇劃分C=C= \varnothing

2.對於j=1,2,3...mj=1,2,3...m,按下面步驟找出所有核心對象:
a.通過距離度量方式,找到樣本xjx_jε\varepsilon鄰域子樣本集Nε(xj)N_\varepsilon(x_j)
b.若子樣本集中樣本個數滿足Nε(xj)MinPtsN_\varepsilon(x_j)\geq MinPts,則將樣本xjx_j加入核心對象樣本集合Ω=Ω{xj}\Omega= \Omega\cup\begin{Bmatrix}x_j\end{Bmatrix}

3.如果Ω=\Omega= \varnothing,則算法結束,否則進入4;

4.在覈心對象集合中,隨機選擇一個核心對象o,初始化當前簇核心對象隊列Ωcut={o}\Omega_{cut}=\begin{Bmatrix}o\end{Bmatrix},初始化類別序號K=K+1K=K+1,初始化當前簇樣本集合CK={o}C_K=\begin{Bmatrix}o\end{Bmatrix},更新未訪問集合Γ=Γ{o}\Gamma=\Gamma-\begin{Bmatrix}o\end{Bmatrix}

5.若當前簇核心對象隊列Ωcut=\Omega_{cut}=\varnothing,則當前聚類簇CKC_K生成完畢,更新簇劃分C={C1,C2,C3...CK}C= \begin{Bmatrix}C_1,C_2,C_3...C_K\end{Bmatrix},更新核心對象集合Ω=ΩCK\Omega= \Omega-C_K,轉入3;

6.在當前簇核心對象隊列Ωcut\Omega_{cut}中取出一個核心對象oo',通過鄰域距離閾值ε\varepsilon找出所有的ε\varepsilon鄰域子樣本集Nε(o)N_\varepsilon(o'),令Δ=Nε(o)Γ\Delta =N_\varepsilon (o')\cap \Gamma,更新當前簇樣本集合CK=CKΔC_K=C_K\cup\Delta,更新未訪問樣本集合Γ=ΓΔ\Gamma=\Gamma-\Delta,更新Ωcut=Ωcut(Nε(o)Ω)\Omega_{cut}=\Omega_{cut}\cup(N_\varepsilon(o')\cap\Omega),轉入步驟5;

輸出結果:簇劃分C={C1,C2,C3...CK}C= \begin{Bmatrix}C_1,C_2,C_3...C_K\end{Bmatrix}

DBSCAN算法總結

優點:
1.可以對任意形狀的稠密數據集進行聚類,K-Means一般只適用於凸數據集,而DBSCAN無此限制;
2.可以在聚類的同時發現異常點,對異常點不敏感;
3.聚類結果沒有偏倚,相對的,K-Means初始值對聚類結果有很大影響。

缺點:
1.如果樣本密度不均勻、聚類間距差相差很大時,聚類質量較差,這時一般不適用於DBSCAN;
2.如果數據較大時,收斂時間較長,此時可以對搜索最近鄰時建立的KD樹或者球樹進行規模限制來進行改進;
3.調參較傳統的K-Means複雜,需要對ε\varepsilonMinPtsMinPts聯合調參,不同參數組合對結果影響很大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章