日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/15 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无监督学习 | DBSCAN 原理及Sklearn实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1. 密度聚類
  • 2. DBSCAN
    • 2.1 算法原理
  • 3. DBSCAN 優(yōu)缺點(diǎn)
    • 3.1 優(yōu)點(diǎn)
    • 3.2 缺點(diǎn)
    • 3.3 與 KMeans 比較
  • 4. SKlearn 實(shí)現(xiàn)
  • 5. 在線可視化 DBSCAN
  • 參考文獻(xiàn)

相關(guān)文章:

機(jī)器學(xué)習(xí) | 目錄

機(jī)器學(xué)習(xí) | 聚類評(píng)估指標(biāo)

機(jī)器學(xué)習(xí) | 距離計(jì)算

無(wú)監(jiān)督學(xué)習(xí) | KMeans 與 KMeans++ 原理

無(wú)監(jiān)督學(xué)習(xí) | GMM 高斯混合聚類原理及Sklearn實(shí)現(xiàn)

1. 密度聚類

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

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

密度聚類的主要特點(diǎn)是:

(1)發(fā)現(xiàn)任意形狀的簇

(2)對(duì)噪聲數(shù)據(jù)不敏感

(3)一次掃描

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

(5)計(jì)算量大、復(fù)雜度高

2. DBSCAN

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

首先我們通過一個(gè)簡(jiǎn)單的例子來介紹 DBSCAN,對(duì)于以下數(shù)據(jù),我們?nèi)我膺x取一個(gè)點(diǎn),定義一個(gè)以 ?\epsilon? 為半徑的鄰域,若鄰域內(nèi)沒有其他點(diǎn),則這個(gè)點(diǎn)定義為噪聲或異常點(diǎn)。

圖1 鄰域半徑及噪聲點(diǎn)

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

圖2 鄰域內(nèi)樣本個(gè)數(shù)少于最少個(gè)數(shù) 圖3 核心點(diǎn)與邊界點(diǎn)

同理,繼續(xù)掃描其余的點(diǎn),可得其他簇:

圖4 兩個(gè)不同的聚類簇

下面,我們將通過嚴(yán)格的數(shù)學(xué)定義,來描述 DBSCAN 聚類算法。

2.1 算法原理

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

  • ?\epsilon? 鄰域:對(duì) xj∈Dx_j \in Dxj?D,其 ?\epsilon? 鄰域包含數(shù)據(jù)集 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??)}

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

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

  • 密度可達(dá)(density-reachable):對(duì) 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? 密度直達(dá),則稱 xix_ixi?xjx_jxj? 可達(dá);

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

對(duì)于鄰域中的距離函數(shù) dist(?,?),在默認(rèn)情形下設(shè)為歐式距離。

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

圖4 樣本點(diǎn)劃分示意圖

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

連接性(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密度可達(dá)?xj∈C(2)最大性(maximality):x_i \in C,x_j 由 x_i 密度可達(dá) \Rightarrow x_j \in C \tag{2}maximalityxi?C,xj?xi?達(dá)?xj?C(2)

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

于是,DBSCAN 算法先任選數(shù)據(jù)集中的一個(gè)核心對(duì)象為“種子”(seed),再由此出發(fā)確定相應(yīng)的聚類簇。

算法描述如下圖所示,

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

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

圖5 DBSCAN 算法

3. DBSCAN 優(yōu)缺點(diǎn)

3.1 優(yōu)點(diǎn)

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

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

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

3.2 缺點(diǎn)

(1)對(duì)于從兩個(gè)類均可達(dá)的邊界點(diǎn),由于各個(gè)點(diǎn)是被隨機(jī)訪問的,因此 DBSCAN 不能保證每次都返回相同聚類;

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

3.3 與 KMeans 比較

從下面的圖中可以看出,DBSCAN 在不規(guī)則的數(shù)據(jù)上,能更好地分類。

圖6 DBCASAN 與 KMeans 聚類效果比較

4. SKlearn 實(shí)現(xiàn)

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

你可以通過這個(gè)網(wǎng)站選擇樣本分布和參數(shù),并在線可視化 DBSCAN 聚類的過程。

參考文獻(xiàn)

[1] 周志華. 機(jī)器學(xué)習(xí)[M]. 北京: 清華大學(xué)出版社, 2016: 211.

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。