DBSCAN注意事項

DBSCAN共包括3個輸入數據:數據集D,給定點在鄰域內成爲核心對象的最小鄰域點數:MinPts,鄰域半徑:Eps,其中Eps和MinPts需要根據具體應用人爲設定。

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

K-距離:K距離的定義在DBSCAN算法原文中給出了詳細解說,給定K鄰域參數k,對於數據中的每個點,計算對應的第k個最近鄰域距離,並將數據集所有點對應的最近鄰域距離按照降序方式排序,稱這幅圖爲排序的k距離圖,選擇該圖中第一個谷值點位置對應的k距離值設定爲Eps。一般將k值設爲4。

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

DBSCAN原理僞代碼:

(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


轉自https://blog.csdn.net/zhouxianen1987/article/details/68945844 

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