聚类算法(3):DBSCAN密度聚类
目錄
1. 基本概念
2. 算法描述
3. 算法實例
4. 算法優缺點
DBSCAN(Density—Based Spatial Clustering of Application with Noise)算法是一種典型的基于密度的聚類方法,即要求聚類空間中的一定區域內所包含對象(點或其他空間對象)的數目不小于某一給定閾值,它將簇定義為密度相連的點的最大集合。該方法能在具有噪聲的空間數據庫中發現任意形狀的簇,可將密度足夠大的相鄰區域連接,能有效處理異常數據,主要用于對空間數據的聚類,
1. 基本概念
DBSCAN 算法中有兩個重要參數:Eps 和 MmPtS。
- Eps:定義密度時的鄰域半徑;
- MmPts :定義核心點時的閾值,形成簇所需的最小核心點數量
在 DBSCAN 算法中將數據點分為以下 3 類。
1)核心點:稠密區域內部的點
如果一個對象在其半徑 Eps 內含有超過 MmPts 數目的點,則該對象為核心點。
2)邊界點:稠密區域邊緣的點
如果一個對象在其半徑 Eps 內含有點的數量小于 MinPts,但是該對象落在核心點的鄰域內,則該對象為邊界點。
3)噪音點:稀疏區域中的點
如果一個對象既不是核心點也不是邊界點,則該對象為噪音點。
通俗地講,核心點對應稠密區域內部的點,邊界點對應稠密區域邊緣的點,而噪音點對應稀疏區域中的點。
在圖 1 中,假設 MinPts=5,Eps 如圖中箭頭線所示,則點 A 為核心點,點 B 為邊界點,點 C 為噪音點。點 A 因為在其 Eps 鄰域內含有 7 個點,超過了 Eps=5,所以是核心點。
點 E 和點 C 因為在其 Eps 鄰域內含有點的個數均少于 5,所以不是核心點;點 B 因為落在了點 A 的 Eps 鄰域內,所以點 B 是邊界點;點 C 因為沒有落在任何核心點的鄰域內,所以是噪音點。
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 1??DBSCAN算法數據點類型示意
進一步來講,DBSCAN 算法還涉及以下一些概念。
| 名稱 | 說明 |
| Eps 鄰域 | 簡單來講就是與點的距離小于等于 Eps 的所有點的集合 |
| 直接密度可達 | 如果點 p 在核心點 q 的 Eps 鄰域內,則稱數據對象 p 從數據對象 q 出發是直接密度可達的。 |
| 密度可達 | 如果存在數據對象鏈?是從?關于 Eps 和 MinPts 直接密度可達的,則數據對象?是從數據對象?關于 Eps MinPts 密度可達的。 |
| 密度相連 | 對于對象 p 和對象 q,如果存在核心對象樣本 o,使數據對象 p 和對象 q 均從 o 密度可達,則稱 p 和 q 密度相連。顯然,密度相連具有對稱性。 |
| 密度聚類簇 | 由一個核心點和與其密度可達的所有對象構成一個密度聚類簇。 |
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 2??直接密度可達和密度可達示意
在圖 2 中,點 a 為核心點,點 b 為邊界點,并且因為 a 直接密度可達 b。但是 b 不直接密度可達 a(因為 b 不是一個核心點)。因為 c 直接密度可達 a,a 直接密度可達 b,所以 c 密度可達 b。但是因為 b 不直接密度可達 a,所以 b 不密度可達 c。但是 b 和 c 密度相連。
2. 算法描述
DBSCAN 算法對簇的定義很簡單,由密度可達關系導出的最大密度相連的樣本集合,即為最終聚類的一個簇。
DBSCAN 算法的簇里面可以有一個或者多個核心點。如果只有一個核心點,則簇里其他的非核心點樣本都在這個核心點的 Eps 鄰域里。如果有多個核心點,則簇里的任意一個核心點的 Eps 鄰域中一定有一個其他的核心點,否則這兩個核心點無法密度可達。這些核心點的 Eps 鄰域里所有的樣本的集合組成一個 DBSCAN 聚類簇。
DBSCAN算法的描述如下。
- 輸入:數據集,鄰域半徑 Eps,鄰域中數據對象數目閾值 MinPts;
- 輸出:密度聯通簇。
處理流程如下:
(1)從數據集中任意選取一個數據對象點 p; (從數據集中順序掃描還未分簇的樣本點p)
(2)計算出p?的 Eps 鄰域,如果對于參數 Eps 和 MinPts,所選取的數據對象點 p 為核心點,則找出所有從 p 密度可達的數據對象點,形成一個簇;
(3)如果選取的數據對象點 p 是邊緣點,選取另一個數據對象點;
(4)重復(2)、(3)步,直到所有點被處理。
DBSCAN 算法的計算復雜的度為 O(n2),n 為數據對象的數目。這種算法對于輸入參數 Eps 和 MinPts 是敏感的。
3. 算法實例
下面給出一個樣本數據集,如表 1 所示,并對其實施 DBSCAN 算法進行聚類,取 Eps=3,MinPts=3。
? ? ??
數據集中的樣本數據在二維空間內的表示如圖 3 所示:
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 3??直接密度可達和密度可達示意
第一步,順序掃描數據集的樣本點,首先取到 p1(1,2)。
1)計算 p1 的鄰域,計算出每一點到 p1 的距離,如 d(p1,p2)=sqrt(1+1)=1.414。
2)根據每個樣本點到 p1 的距離,計算出 p1 的 Eps 鄰域為 {p1,p2,p3,p13}。
3)因為 p1 的 Eps 鄰域含有 4 個點,大于 MinPts(3),所以,p1 為核心點。
4)以 p1 為核心點建立簇 C1,即找出所有從 p1 密度可達的點。
5)p1 鄰域內的點都是 p1 直接密度可達的點,所以都屬于C1。
6)尋找 p1 密度可達的點,p2 的鄰域為 {p1,p2,p3,p4,p13},因為 p1 密度可達 p2,p2 密度可達 p4,所以 p1 密度可達 p4,因此 p4 也屬于 C1。
7)p3 的鄰域為 {p1,p2,p3,p4,p13},p13的鄰域為 {p1,p2,p3,p4,p13},p3 和 p13 都是核心點,但是它們鄰域的點都已經在 Cl 中。
8)P4 的鄰域為 {p3,p4,p13},為核心點,其鄰域內的所有點都已經被處理。
9)此時,以 p1 為核心點出發的那些密度可達的對象都全部處理完畢,得到簇C1,包含點 {p1,p2,p3,p13,p4}。
第二步,繼續順序掃描數據集的樣本點,取到p5(5,8)。
1)計算 p5 的鄰域,計算出每一點到 p5 的距離,如 d(p1,p8)-sqrt(4+1)=2.236。
2)根據每個樣本點到 p5 的距離,計算出p5的Eps鄰域為{p5,p6,p7,p8}。
3)因為 p5 的 Eps 鄰域含有 4 個點,大于 MinPts(3),所以,p5 為核心點。
4)以 p5 為核心點建立簇 C2,即找出所有從 p5 密度可達的點,可以獲得簇 C2,包含點 {p5,p6,p7,p8}。
第三步,繼續順序掃描數據集的樣本點,取到 p9(9,5)。
1)計算出 p9 的 Eps 鄰域為 {p9},個數小于 MinPts(3),所以 p9 不是核心點。
2)對 p9 處理結束。
第四步,繼續順序掃描數據集的樣本點,取到 p10(1,12)。
1)計算出 p10 的 Eps 鄰域為 {p10,pll},個數小于 MinPts(3),所以 p10 不是核心點。
2)對 p10 處理結束。
第五步,繼續順序掃描數據集的樣本點,取到 p11(3,12)。
1)計算出 p11 的 Eps 鄰域為 {p11,p10,p12},個數等于 MinPts(3),所以 p11 是核心點。
2)從 p12 的鄰域為 {p12,p11},不是核心點。
3)以 p11 為核心點建立簇 C3,包含點 {p11,p10,p12}。
第六步,繼續掃描數據的樣本點,p12、p13 都已經被處理過,算法結束。
4. 算法優缺點
和傳統的 k-means 算法相比,DBSCAN 算法不需要輸入簇數 k 而且可以發現任意形狀的聚類簇,同時,在聚類時可以找出異常點。
優點:
1)聚類速度快,可以對任意形狀的稠密數據集進行聚類,而 k-means 之類的聚類算法一般只適用于凸數據集。
2)可以在聚類的同時發現異常點,對數據集中的異常點不敏感。
3)聚類結果沒有偏倚,而 k-means 之類的聚類算法的初始值對聚類結果有很大影響。
4)與K-MEANS比較起來,不需要輸入要劃分的聚類個數。
5)可以在需要時輸入過濾噪聲的參數。
缺點:
1)樣本集的密度不均勻、聚類間距差相差很大時,聚類質量較差,因為這種情況下參數MinPts和Eps選取困難,這時用 DBSCAN 算法一般不適合。
2)樣本集較大時,聚類收斂時間較長,此時可以對搜索最近鄰時建立的 KD 樹或者球樹進行規模限制來進行改進。當數據量增大時,要求較大的內存支持,I/O消耗也很大
3)調試參數比較復雜時,主要需要對距離閾值 Eps、鄰域樣本數閾值 MinPts 進行聯合調參,不同的參數組合對最后的聚類效果有較大影響。
4)對于整個數據集只采用了一組參數。如果數據集中存在不同密度的簇或者嵌套簇,則 DBSCAN 算法不能處理。為了解決這個問題,有人提出了 OPTICS 算法。
5)DBSCAN 算法可過濾噪聲點,這同時也是其缺點,這造成了其不適用于某些領域,如對網絡安全領域中惡意攻擊的判斷。
參考:https://blog.csdn.net/zhouxianen1987/article/details/68945844
總結
以上是生活随笔為你收集整理的聚类算法(3):DBSCAN密度聚类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言与数据分析:时间序列简单介绍
- 下一篇: 五种常用的异常值检测方法(均方差、箱形图