DBSCAN聚類算法——機器學習(理論+圖解+python代碼)


DBSCAN聚類算法——機器學習(理論+圖解+python代碼)

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚類算法,它是一種基於高密度連通區域的、基於密度的聚類算法,能夠將具有足夠高密度的區域划分為簇,並在具有噪聲的數據中發現任意形狀的簇

基本概念:

 
 

 

minPts = 3

 
基於密度的聚類中的密度可達和密度相連性

 

由上圖可看出m,p,o.r 都是核心對象,因為他們的內都只是包含3個對象。

1.對象q是從m直接密度可達的。對象m從p直接密度可達的。

2.對象q是從p(間接)密度可達的,因為q從m直接密度可達,m從p直接密度可達。

3.r和s是從o密度可達的,而o是從r密度可達的,所有o,r和s都是密度相連的。

 

DBSCAN聚類算法原理的基本要點:

1.DBSCAN算法需要選擇一種距離度量,對於待聚類的數據集中,任意兩個點之間的距離,反映了點之間的密度,說明了點與點是否能夠聚到同一類中。由於DBSCAN算法對高維數據定義密度很困難,所以對於二維空間中的點,可以使用歐幾里德距離來進行度量。

2.DBSCAN算法需要用戶輸入2個參數:一個參數是半徑(Eps),表示以給定點P為中心的圓形鄰域的范圍;另一個參數是以點P為中心的鄰域內最少點的數量(MinPts)如果滿足:以點P為中心、半徑為Eps的鄰域內的點的個數不少於MinPts,則稱點P為核心點。

3.DBSCAN聚類使用到一個k-距離的概念,k-距離是指:給定數據集P={p(i); i=0,1,…n},對於任意點P(i),計算點P(i)到集合D的子集S={p(1), p(2), …, p(i-1), p(i+1), …, p(n)}中所有點之間的距離,距離按照從小到大的順序排序,假設排序后的距離集合為D={d(1), d(2), …, d(k-1), d(k), d(k+1), …,d(n)},則d(k)就被稱為k-距離。也就是說,k-距離是點p(i)到所有點(除了p(i)點)之間距離第k近的距離。對待聚類集合中每個點p(i)都計算k-距離,最后得到所有點的k-距離集合E={e(1), e(2), …, e(n)}。

4.根據經驗計算半徑Eps:根據得到的所有點的k-距離集合E,對集合E進行升序排序后得到k-距離集合E’,需要擬合一條排序后的E’集合中k-距離的變化曲線圖,然后繪出曲線,通過觀察,將急劇發生變化的位置所對應的k-距離的值,確定為半徑Eps的值。

5.根據經驗計算最少點的數量MinPts:確定MinPts的大小,實際上也是確定k-距離中k的值,DBSCAN算法取k=4,則MinPts=4。

6.另外,如果覺得經驗值聚類的結果不滿意,可以適當調整Eps和MinPts的值,經過多次迭代計算對比,選擇最合適的參數值。可以看出,如果MinPts不變,Eps取得值過大,會導致大多數點都聚到同一個簇中,Eps過小,會導致一個簇的分裂;如果Eps不變,MinPts的值取得過大,會導致同一個簇中點被標記為離群點,MinPts過小,會導致發現大量的核心點。

我們需要知道的是,DBSCAN算法,需要輸入2個參數,這兩個參數的計算都來自經驗知識。半徑Eps的計算依賴於計算k-距離,DBSCAN取k=4,也就是設置MinPts=4,然后需要根據k-距離曲線,根據經驗觀察找到合適的半徑Eps的值,下面的算法實現過程中,我們會詳細說明。

對於算法的實現,首先我們概要地描述一下實現的過程:

1.解析樣本數據文件

2.計算每個點與其他所有點之間的歐幾里德距離

3.計算每個點的k-距離值,並對所有點的k-距離集合進行升序排序,輸出的排序后的k-距離值

4.將所有點的k-距離值,在Excel中用散點圖顯示k-距離變化趨勢

5.根據散點圖確定半徑Eps的值

6.根據給定MinPts=4,以及半徑Eps的值,計算所有核心點,並建立核心點與到核心點距離小於半徑Eps的點的映射

7.根據得到的核心點集合,以及半徑Eps的值,計算能夠連通的核心點,並得到離群點

8.將能夠連通的每一組核心點,以及到核心點距離小於半徑Eps的點,都放到一起,形成一個簇

9.選擇不同的半徑Eps,使用DBSCAN算法聚類得到的一組簇及其離群點,使用散點圖對比聚類效果

算法流程

 
 

缺點:

(1)當數據量增大時,要求較大的內存支持I/O消耗也很大;

(2)當空間聚類的密度不均勻、聚類間距差相差很大時,聚類質量較差。

 



作者:山的那邊是什么_
鏈接:https://www.jianshu.com/p/e8dd62bec026
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM