泛統計理論初探——DBSCAN方法簡介

數據挖掘-聚類算法之DBSCAN

DBSCAN算法簡介
在之前的文章裏,我們探討了最常見的一種聚類算法,即Kmeans算法,在本文中,我們將簡要介紹DBSCAN算法,同時將比較DBSCAN方法相對於Kmeans的優缺點。
DBSCAN全稱是Density-Based Spatial Clustering of Applications with Noise
從英文的釋義就可以明確,該算法是基於密度進行聚類的算法。該算法的核心思想是基於密度進行分類,即某個樣本的周圍一定有相同類別的樣本。基於這個思想,我們自然會相到首先要確定鄰域距離,即在多少半徑範圍之內的點算作一類,即該算法所謂的E-鄰域。同時還需要明確在E-鄰域範圍之內包含多少個點才能算作密集(同一個類),即該算法所謂的minPoints參數。實際在使用該算法的時候只需要設置E-鄰域和minPoints參數即可以使用,但是除了這個E-鄰域和minPoints參數,下面還有幾個重要的概念需要理解:
1、核心對象,核心對象指的是,如果在E-鄰域之內對應的鄰居點的數量大於minPoints參數,那麼這個點就稱之爲核心對象,也稱爲核心點。
2、密度直達,密度直達指的是,在覈心對象A點的鄰域範圍之內,比如有個點是B,那麼稱之爲B點由A點密度直達。
3、密度可達,密度可達這個概念指的是一種可達的路徑傳遞性,即給一系列的樣本點A、B、C、D、E、F,如果A點到B點是密度直達的,B點到C點是密度直達的,C-D、D-E、E-F均是密度直達的,那麼點F就是從點A密度可達,也就是說密度可達的概念是將密度直達的概念進行延伸,造成了一種路徑傳遞特性。
4、密度相連,密度相連指的是對於兩個點B和C之間存在一個核心對象點A,使得點B和點C都通過點A密度可達,那麼就稱爲點B和點C密度相連。
5、邊界點,邊界點指的是在覈心對象的E鄰域範圍內的點數量小於minPoints參數,但是也是在覈心點鄰域內的點。
6、噪音點,即不屬於核心對象和邊界點的那一類點。
經過上述的概念的理解,下面來對DBSCAN算法的流程進行梳理,主要有以下3個步驟:
1)初始化所有點,全部進行標記,即設置操作標識爲0
2)從所有操作標識爲0的點進行抽取和計算,對得到的點進行判別,如果該點是核心點,那麼就找出和該核心點密度可達的對象,並形成一個簇;如果該點不是核心點,就不做處理。將抽取的點的操作標識設爲1,然後進行下一次點的抽取。
3)以此進行循環,直到所有的點都被處理,得到所有的簇就是聚類的結果。
在這裏插入圖片描述
其實算法的目的就是找到上述的紅點,和紅點移動的圓圈的區域,即爲簇,而在圖裏的右上角的黑點其實可以算作噪音點,在上圖的結果裏很明顯的可以發現,有兩個簇,即紅色點移動的兩個路徑,最終會形成兩個簇,也就是會聚類出2個類。
DBSCAN的優點其實很明顯,它不需要像Kmeans一樣去設置K的大小,因爲K的大小不是很直觀,使用者很難進行設置,而且DBSCAN的算法可以處理不同形狀的聚類情況,比Kmeans方法要更通用一些(Kmeans方法只能對凸的球形樣本進行聚類),在這個基礎上DBSCAN還可以發現樣本集合裏的噪音點,可以用於異常點的檢測和剔除。與此同時,我們還發現DBSCAN的穩健性比較強,該方法對異常點不敏感(Kmeans方法由於計算距離,會受到異常點的影響),該方法同時對初始值點不敏感(Kmeans方法會受到初始點的設置的影響)。
DBSCAN方法其實也有缺點,如果數據分佈的比較稀疏的時候,使用DBSCAN效果一般,同時它的超參數有2個,即E鄰域的大小和minPoints的數量,調整參數的步驟相對於Kmeans要複雜一些,因爲是2個超參數的組合。
總的來說,初學者首先要對數據的分佈有個大致的理解,要區分使用Kmeans和DBSCAN的場合,一般來說數據比較稀疏或是凸的球形分佈,那麼使用Kmeans方法,如果數據的分佈不是凸的球形或是比較稠密,那麼使用DBSCAN方法。並且在調參的步驟要儘量細心觀察結果進行比較,這樣才能得到最優的聚類結果。

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