標籤:
原文連結:http://www.cnblogs.com/chaosimple/p/3164775.html#undefined
1、DBSCAN簡介
DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有雜訊的基於密度的聚類方法)是一種基於密度的空間聚類演算法。該演算法將具有足夠密度的地區劃分為簇,並在具有雜訊的空間資料庫中發現任意形狀的簇,它將簇定義為密度相連的點的最大集合。
該演算法利用基於密度的聚類的概念,即要求聚類空間中的一定地區內所包含對象(點或其他空間對象)的數目不小於某一給定閾值。DBSCAN演算法的顯著優點是聚類速度快且能夠有效處理雜訊點和發現任意形狀的空間聚類。但是由於它直接對整個資料庫進行操作且進行聚類時使用了一個全域性的表徵密度的參數,因此也具有兩個比較明顯的弱點:
(1)當資料量增大時,要求較大的記憶體支援I/O消耗也很大;
(2)當空間聚類的密度不均勻、聚類間距差相差很大時,聚類品質較差。
2、DBSCAN和傳統聚類演算法對比
DBSCAN演算法的目的在於過濾低密度地區,發現稠密度樣本點。跟傳統的基於層次的聚類和劃分聚類的凸形聚類簇不同,該演算法可以發現任意形狀的聚類簇,與傳統的演算法相比它有如下優點:
(1)與K-MEANS比較起來,不需要輸入要劃分的聚類個數;
(2)聚類簇的形狀沒有偏倚;
(3)可以在需要時輸入過濾雜訊的參數;
3、演算法涉及的基本定義:
(1)鄰域:給定對象半徑 內的地區稱為該對象的鄰域。
(2)核心對象:如果給定對象 鄰域內的樣本點數大於等於MinPts,則稱該對象為核心對象。
(3)直接密度可達:給定一個對象集合D,如果p在q的鄰域內,且q是一個核心對象,則我們說對象p從對象q出發是直接密度可達的(directly density-reachable)。
(4)密度可達:對於樣本集合D,如果存在一個對象鏈,,對於, 是從 關於和 MinPts直接密度可達,則對象p是從對象q關於和 MinPts密度可達的(density-reachable)。
(5)密度相連:如果存在對象,使對象p和q都是從o關於和 MinPts密度可達的,那麼對象p到q是關於和 MinPts密度相連的(density-connected)。
可以發現,密度可達是直接密度可達的傳遞閉包,並且這種關係是非對稱的。只有核心對象之間相互密度可達。然而,密度相連是對稱關係。DBSCAN目的是找到密度相連對象的最大集合。
4、DBSCAN演算法的聚類過程
DBSCAN演算法基於一個事實:一個聚類可以由其中的任何核心對象唯一確定。等價可以表述為:任一滿足核心對象條件的資料對象p,資料庫D中所有從p密度可達的資料對象o所組成的集合構成了一個完整的聚類C,且p屬於C。
演算法的具體聚類過程如下:
掃描整個資料集,找到任意一個核心點,對該核心點進行擴充。擴充的方法是尋找從該核心點出發的所有密度相連的資料點(注意是密度相連)。遍曆該核心點的鄰域內的所有核心點(因為邊界點是無法擴充的),尋找與這些資料點密度相連的點,直到沒有可以擴充的資料點為止。最後聚類成的簇的邊界節點都是非核心資料點。之後就是重新掃描資料集(不包括之前尋找到的簇中的任何資料點),尋找沒有被聚類的核心點,再重複上面的步驟,對該核心點進行擴充直到資料集中沒有新的核心點為止。資料集中沒有包含在任何簇中的資料點就構成異常點。
5、演算法虛擬碼
演算法描述:
演算法: DBSCAN
輸入: E——半徑
MinPts——給定點在E鄰域內成為核心對象的最小鄰域點數。
D——集合。
輸出: 目標類簇集合
方法: Repeat
1) 判斷輸入焦點是否為核心對象
2) 找出核心對象的E鄰域中的所有直接密度可達點。
Until 所有輸入焦點都判斷完畢
Repeat
針對所有核心對象的E鄰域內所有直接密度可達點找到最大密度相連對象集合,中間涉及到一些密度可達對象的合并。
Until 所有核心對象的E領域都遍曆完畢
【轉】常用聚類演算法(一) DBSCAN演算法