无监督学习 | DBSCAN 原理及Sklearn实现
文章目錄
- 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?∈D∣dist(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} 連接性(connectivity):xi?∈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}最大性(maximality):xi?∈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={x′∈D∣x′由x密度可達(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ì)象均被訪問過為止。
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT绘图原理
- 下一篇: 机器学习笔记九之支持向量机