DBSCAN算法的說明文檔

DBSCAN算法的描述

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

DBSCAN算法使用場景

  如果數據集是稠密的,並且數據集不是凸的,那麼用DBSCAN會比K-Means聚類效果好很多,如果數據集不是稠密的,則不推薦用DBSCAN來聚類。

DBSCAN算法原理

DBSCAN基礎知識

E\mathcal{E}領域: 對象o的E\mathcal{E}鄰域就是以o爲中心,以E\mathcal{E}爲半徑的空間。
核心對象:xj\mathrm{x}_{\mathrm{j}}E\mathcal{E}領域至少包含MinPts個樣本,即Nε(xj)MinPts\left|N_{\varepsilon}\left(x_{j}\right)\right| \geq M i n P t s,那麼xj\mathrm{x}_{\mathrm{j}}是一個核心對象。
邊界點(edge point): 邊界點不是核心點,但落在某個核心點的鄰域內。
噪音點(outlier point): 既不是核心點,也不是邊界點的任何點。
直接密度可達: 對於樣本集合D,如果樣本點q在p的E\mathcal{E}領域中,並且p是核心對象,那麼對象q從對象p直接密度可達(密度直達)。
密度可達: 對於樣本集合D,給定一串樣本點p1,p2…,pn,p=p1,q=pn,假如對象pi從pi-1直接密度可達,那麼對象q從對象p密度可達。
密度相連: 存在樣本集合D中的一點o,如果對象o到對象p和對象q都是密度可達的,那麼p和q密度相聯。
DBSCAN所定義的簇: 由密度可達關係導出的最大的密度相連樣本集合。

DBSCAN算法基本原理

  1. DBSCAN通過檢查數據集中每點的Eps鄰域來搜索簇,如果點p的Eps鄰域包含的點多於MinPts個,則創建一個以p爲核心對象的簇;
  2. 然後,DBSCAN迭代地聚集從這些核心對象直接密度可達的對象,這個過程可能涉及一些密度可達簇的合併;
  3. 當沒有新的點添加到任何簇時,該過程結束。

Wiki百科給出的DBSCAN算法的僞代碼:

輸入:數據集D,給定點在鄰域內成爲核心對象的最小鄰域點數:MinPts,鄰域半徑:Eps
輸出:簇集合

(1) 首先將數據集D中的所有對象標記爲未處理狀態
(2) for(數據集D中每個對象p) do
(3)    if (p已經歸入某個簇或標記爲噪聲) then
(4)         continue;
(5)    else
(6)         檢查對象p的Eps鄰域 NEps(p)(7)         if (NEps(p)包含的對象數小於MinPts) then
(8)                  標記對象p爲邊界點或噪聲點;
(9)         else
(10)                 標記對象p爲核心點,並建立新簇C, 並將p鄰域內所有點加入C
(11)                 for (NEps(p)中所有尚未被處理的對象q)  do
(12)                       檢查其Eps鄰域NEps(q),若NEps(q)包含至少MinPts個對象,則將NEps(q)中未歸入任何一個簇的對象加入C;
(13)                 end for
(14)        end if
(15)    end if
(16) end for

DBSCAN算法的時間複雜度和空間複雜度

時間複雜度

  • DBSCAN的基本時間複雜度是 O(N*找出Eps領域中的點所需要的時間), N是點的個數。最壞情況下時間複雜度是O(N2N^{2})
  • 在低維空間數據中,有一些數據結構如KD樹,使得可以有效的檢索特定點給定距離內的所有點,時間複雜度可以降低到O(NlogN)

空間複雜度: 低維和高維數據中,其空間都是O(N),對於每個點它只需要維持少量數據,即簇標號和每個點的標識(核心點或邊界點或噪音點)

DBSCAN算法的調參

  • E\mathcal{E}的值可以使用繪製k-距離曲線(k-distance graph)方法得到,在k-距離曲線圖明顯拐點位置爲對應較好的參數。若參數設置過小,大部分數據不能聚類;若參數設置過大,多個簇和大部分對象會歸併到同一個簇中。

    k-距離定義:

    給定K鄰域參數k,對於數據中的每個點,計算對應的第k個最近鄰域距離,並將數據集所有點對應的最近鄰域距離按照降序方式排序,稱這幅圖爲排序的k距離圖,選擇該圖中第一個谷值點位置對應的k距離值設定爲E\mathcal{E}

  • MinPts的選取有一個指導性的原則(a rule of thumb),MinPts≥dim+1,其中dim表示待聚類數據的維度。MinPts設置爲1是不合理的,因爲設置爲1,則每個獨立點都是一個簇,MinPts≤2時,與層次距離最近鄰域結果相同,因此,MinPts必須選擇大於等於3的值。若該值選取過小,則稀疏簇中結果由於密度小於MinPts,從而被認爲是邊界點兒不被用於在類的進一步擴展;若該值過大,則密度較大的兩個鄰近簇可能被合併爲同一簇。因此,該值是否設置適當會對聚類結果造成較大影響。

DBSCAN算法的優缺點

算法優點

  • DBSCAN不需要事先知道要形成的簇類的數量
  • DBSCAN可以發現任意形狀的簇類;
  • DBSCAN能夠識別出噪聲點。對離羣點有較好的魯棒性,甚至可以檢測離羣點;
  • 可以在需要時輸入過濾噪聲的參數;

算法缺點

  • 當數據量增大時,要求較大的內存支持I/O消耗也很大;
  • 輸入參數敏感,確定參數Eps , MinPts困難 ,若選取不當 ,將造成聚類質量下降;
  • 算法聚類效果依賴於距離公式選取,實際應用中常用歐式距離,對於高維數據,存在“維數災難”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章