日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

无监督学习 | DBSCAN 原理及Sklearn实现

發布時間:2025/3/15 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无监督学习 | DBSCAN 原理及Sklearn实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 密度聚類
  • 2. DBSCAN
    • 2.1 算法原理
  • 3. DBSCAN 優缺點
    • 3.1 優點
    • 3.2 缺點
    • 3.3 與 KMeans 比較
  • 4. SKlearn 實現
  • 5. 在線可視化 DBSCAN
  • 參考文獻

相關文章:

機器學習 | 目錄

機器學習 | 聚類評估指標

機器學習 | 距離計算

無監督學習 | KMeans 與 KMeans++ 原理

無監督學習 | GMM 高斯混合聚類原理及Sklearn實現

1. 密度聚類

密度聚類亦稱“基于密度的聚類”(Density-Based Clustering),此類算法假設聚類結構能通過樣本分布的緊密程度確定。通常情況下,密度聚類算法從樣本密度的角度來考察樣本之間的可連接性,并基于可連接樣本不斷擴展聚類簇以獲得最終的聚類結果[1]。這類算法可以克服 KMeans、BIRCH等只適用于凸樣本集的情況。

常用的密度聚類算法:DBSCAN、MDCA、OPTICS、DENCLUE等。[2]

密度聚類的主要特點是:

(1)發現任意形狀的簇

(2)對噪聲數據不敏感

(3)一次掃描

(4)需要密度參數作為停止條件

(5)計算量大、復雜度高

2. DBSCAN

DBSCAN(具有噪聲的基于密度的空間聚類,Density-Based Spatial Clustering of Applications with Noise)是一種著名的密度聚類算法,它基于一組“鄰域”(neighborhood)參數(ε,MinPts\varepsilon, MinPtsε,MinPts)來刻畫樣本分布的緊密程度。

首先我們通過一個簡單的例子來介紹 DBSCAN,對于以下數據,我們任意選取一個點,定義一個以 ?\epsilon? 為半徑的鄰域,若鄰域內沒有其他點,則這個點定義為噪聲或異常點。

圖1 鄰域半徑及噪聲點

若這個點不是噪聲,則考慮第二個參數:鄰域內最少樣本個數 MinPtsMinPtsMinPts,若某點鄰域內最少樣本個數不少于 MinPtsMinPtsMinPts,則這個點定義為核心點。對于該鄰域內的非核心對象,定義為邊界點,假設 MinPtsMinPtsMinPts=5 ,則聚類過程如下圖所示:

圖2 鄰域內樣本個數少于最少個數 圖3 核心點與邊界點

同理,繼續掃描其余的點,可得其他簇:

圖4 兩個不同的聚類簇

下面,我們將通過嚴格的數學定義,來描述 DBSCAN 聚類算法。

2.1 算法原理

首先,給定數據集 D={x1,x2,...,xm}D=\{x_1,x_2,...,x_m\}D={x1?,x2?,...,xm?},我們定義下面幾個概念:

  • ?\epsilon? 鄰域:對 xj∈Dx_j \in Dxj?D,其 ?\epsilon? 鄰域包含數據集 DDD 中與 xjx_jxj? 的距離不大于 ?\epsilon? 的樣本,即 N?={xo∈D∣dist(xi,xj≤?)}N_{\epsilon}=\{x_o \in D| dist(x_i,x_j \leq \epsilon) \}N??={xo?Ddist(xi?,xj??)}

  • 核心對象(core object):若 xjx_jxj?ε\varepsilonε 鄰域至少包含 MinPtsMinPtsMinPts 個樣本,即 ∣N?(xj)≥MinPts∣|N_{\epsilon}(x_j) \geq MinPts|N??(xj?)MinPts,則 xjx_jxj? 是一個核心對象;

  • 密度直達(directly density-reachable):若 xjx_jxj? 位于 xix_ixi??\epsilon? 鄰域中,且 xix_ixi? 是核心對象,則稱 xjx_jxj?xix_ixi? 密度直達;

  • 密度可達(density-reachable):對 xix_ixi?xjx_jxj?,若存在樣本序列 p1,p2,...,pnp_1,p_2,...,p_np1?,p2?,...,pn?,其中 p1=xi,pn=xjp_1 = x_i,p_n=x_jp1?=xi?,pn?=xj?pi+1p_{i+1}pi+1?pip_ipi? 密度直達,則稱 xix_ixi?xjx_jxj? 可達;

  • 密度相連(density-connected):對 xix_ixi?xjx_jxj?,若存在 xkx_kxk? 使得 xix_ixi?xjx_jxj? 均由 xkx_kxk? 密度可達,則稱 xix_ixi?xjx_jxj? 密度相連。

對于鄰域中的距離函數 dist(?,?),在默認情形下設為歐式距離。

下圖給出了上述概念的直觀顯示,假設 MinPts=3MinPts=3MinPts=3:虛線顯示出 ?\epsilon? 鄰域,x1x_1x1? 是核心對象, x2x_2x2?x1x_1x1? 密度直達,x3x_3x3?x1x_1x1? 密度可達,x3x_3x3?x4x_4x4? 密度相連。

圖4 樣本點劃分示意圖

基于這些概念,DBSCAN 將“簇”定義為:密度可達關系導出的最大的密度相連樣本集合。形式化地說,給定鄰域參數(?,MinPts\epsilon,MinPts?,MinPts),簇 C?DC \subseteq DC?D 是滿足以下性質的非空樣本子集:

連接性(connectivity):xi∈C,xj∈C?xi與xj密度相連(1)連接性(connectivity):x_i \in C,x_j \in C \Rightarrow x_i 與 x_j 密度相連 \tag{1} connectivityxi?C,xj?C?xi?xj?(1)

最大性(maximality):xi∈C,xj由xi密度可達?xj∈C(2)最大性(maximality):x_i \in C,x_j 由 x_i 密度可達 \Rightarrow x_j \in C \tag{2}maximalityxi?C,xj?xi??xj?C(2)

xxx 為核心對象,則 xxx 密度可達的所有樣本組成的集合記為 X={x′∈D∣x′由x密度可達}X=\{x' \in D| x' 由 x 密度可達\}X={xDxx},其中 XXX 為滿足連接性和最大性的簇。

于是,DBSCAN 算法先任選數據集中的一個核心對象為“種子”(seed),再由此出發確定相應的聚類簇。

算法描述如下圖所示,

  • 在第 1-7 行中,算法先根據給定的鄰域參數(?,MinPts\epsilon,MinPts?,MinPts)找出所有核心對象;

  • 在第 10-24 行中,以任一核心對象為出發點,找出由密度可達的樣本以生成聚類簇,知道所有核心對象均被訪問過為止。

圖5 DBSCAN 算法

3. DBSCAN 優缺點

3.1 優點

(1)不用指明類別數量;

(2)能靈活找到并分離各種形狀和大小的類;

(3)能很好地處理噪聲和離群點。

3.2 缺點

(1)對于從兩個類均可達的邊界點,由于各個點是被隨機訪問的,因此 DBSCAN 不能保證每次都返回相同聚類;

(2)在不同密度的類方面有一定難度。

3.3 與 KMeans 比較

從下面的圖中可以看出,DBSCAN 在不規則的數據上,能更好地分類。

圖6 DBCASAN 與 KMeans 聚類效果比較

4. SKlearn 實現

sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=’euclidean’, metric_params=None, algorithm=’auto’, leaf_size=30, p=None, n_jobs=None)

eps : float, optional 【?\epsilon?

The maximum distance between two samples for one to be considered as in the neighborhood of the other. This is not a maximum bound on the distances of points within a cluster. This is the most important DBSCAN parameter to choose appropriately for your data set and distance function.

min_samples : int, optional 【MinPtsMinPtsMinPts

The number of samples (or total weight) in a neighborhood for a point to be considered as a core point. This includes the point itself.

5. 在線可視化 DBSCAN

你可以通過這個網站選擇樣本分布和參數,并在線可視化 DBSCAN 聚類的過程。

參考文獻

[1] 周志華. 機器學習[M]. 北京: 清華大學出版社, 2016: 211.

[2] liuy9803.機器學習之密度聚類算法[EB/OL].https://blog.csdn.net/liuy9803/article/details/80812489, 2018-06-26 .

總結

以上是生活随笔為你收集整理的无监督学习 | DBSCAN 原理及Sklearn实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。