【無監督學習】2:DBSCAN聚類演算法原理
前言:無監督學習想快一點複習完,就轉入有監督學習
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
聚類演算法主要包括哪些演算法?
主要包括:K-means、DBSCAN、Density Peaks聚類(區域性密度聚類)、層次聚類、譜聚類。
若按照聚類的方式可劃分成三類:第一類是類似於K-means、DBSCAN、Density Peaks聚類(區域性密度聚類)的依據密度的聚類方式;
第二種是類似於層次聚類的依據樹狀結構的聚類方式;
第三種是類似於譜聚類的依據圖譜結構的聚類方式。
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
什麼是無監督學習?
- 無監督學習也是相對於有監督學習來說的,因為現實中遇到的大部分資料都是未標記的樣本,要想通過有監督的學習就需要事先人為標註好樣本標籤,這個成本消耗、過程用時都很巨大,所以無監督學習就是使用無標籤的樣本找尋資料規律的一種方法
- 聚類演算法就歸屬於機器學習領域下的無監督學習方法。
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
無監督學習的目的是什麼呢?
- 可以從龐大的樣本集合中選出一些具有代表性的樣本子集加以標註,再用於有監督學習
- 可以從無類別資訊情況下,尋找表達樣本集具有的特徵
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
分類和聚類的區別是什麼呢?
- 對於分類來說,在給定一個資料集,我們是事先已知這個資料集是有多少個種類的。比如一個班級要進行性別分類,我們就下意識清楚分為“男生”、“女生”兩個類;該班又轉入一個同學A,“男ta”就被分入“男生”類;
- 而對於聚類來說,給定一個資料集,我們初始並不知道這個資料集包含多少類,我們需要做的就是將該資料集依照某個“指標”,將相似指標的資料歸納在一起,形成不同的類;
- 分類是一個後續的過程,已知標籤資料,再將測試樣本分入同標籤資料集中;聚類是不知道標籤,將“相似指標”的資料強行“擼”在一起,形成各個類。
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
一、DBSCAN聚類
定義:DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪聲的基於密度的聚類方法)是一種基於密度的空間聚類演算法。該演算法將具有足夠密度的區域劃分為簇,並在具有噪聲的空間資料庫中發現任意形狀的簇,DBSCAN演算法將“簇”定義為密度相連的點的最大集合。
1、傳統的密度定義:基於中心的方法
傳統的密度定義方法——事先給定半徑r,資料集中點a的密度,要通過落入以點a為中心以r為半徑的圓內點的計數(包括點a本身)來估計。很顯然,密度是依賴於半徑的。如下圖所示:
2、DBSCAN中依照密度,對樣本點的劃分
基於以上密度的定義,我們可以將樣本集中的點劃分為以下三類:
- 核心點:在半徑r區域內,含有超過MinPts數目(最小數目)的點,稱為核心點;
- 邊界點:在半徑r區域內,點的數量小於MinPts數目,但是是核心點的直接鄰居;
- 噪聲點:既不是核心點也不是邊界點的點
下圖可以很清楚的區分三種點:
依照上圖以及三種點的定義,可以得到:噪聲點是不會被聚類納入的點,邊界點與核心點組成聚類的“簇”。
3、介紹三個有趣的概念
- 直接密度可達:在給定一個物件集合D,如果p在q的r領域內,且q是一個核心點物件,則稱物件p從物件q出發時是直接密度可達的
- 密度可達:在給定物件集合D中,如果存在一個物件鏈q–>e–>a–>k–>l–>p,任意相鄰兩個物件間都是直接密度可達的,則稱物件p是物件q關於r鄰域內、MinPts數目下,是密度可達的;
- 密度相連:如果在物件集合D中存在一個物件O,使得物件p和q都是從O關於r鄰域內、MinPts數目下,是密度相連的。
如下圖所示:r用一個相應的半徑表示,設MinPts=3,分析Q、M、P、S、O、R這5個樣本點之間的關係。
根據以上概念可知:由於有標記的各點M、P、O和R的r鄰域均包含3個以上的點,因此它們都是核物件;M是從P的“直接密度可達”;Q是從M的“直接密度可達”;基於上述結果,Q是從P的“密度可達”;但P從Q是無法“密度可達”(非對稱的);類似的,S和R都是從O的“密度可達”;O、R都是從S的“密度相連”。
也就是說:核心點能夠連通(密度可達),它們構成的以r為半徑的圓形鄰域相互連線或重疊,這些連通的核心點及其所處的鄰域內的全部點構成一個簇。
4、DBSCAN聚類演算法原理
- DBSCAN通過檢查資料集中每個點的r鄰域來搜尋簇,如果點p的r鄰域包含多於MinPts個點,則建立一個以p為核心物件的簇;
- 然後, DBSCAN迭代的聚集從這些核心物件直接密度可達的物件,這個過程可能涉及一些密度可達簇的合併;
- 當沒有新的帶你新增到任何簇時,迭代過程結束。
DBSCAN聚類演算法效果展示如下圖:
5、DBSCAN聚類演算法優缺點
優點:基於密度定義,可以對抗噪聲,能處理任意形狀和大小的簇
缺點:當簇的密度變化太大時候,聚類得到的結果會不理想;對於高維問題,密度定義也是一個比較麻煩的問題。
6、DBSCAN聚類演算法
# -*- coding:utf-8 -*-
# -*- author:zzZ_CMing
# -*- 2018/04/10;15:38
# -*- python3.5
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
import matplotlib.colors
# 建立Figure
fig = plt.figure()
# 用來正常顯示中文標籤
matplotlib.rcParams['font.sans-serif'] = [u'SimHei']
# 用來正常顯示負號
matplotlib.rcParams['axes.unicode_minus'] = False
X1, y1 = datasets.make_circles(n_samples=5000, factor=.6,
noise=.05)
X2, y2 = datasets.make_blobs(n_samples=1000, n_features=2,
centers=[[1.2,1.2]], cluster_std=[[.1]],random_state=9)
# 原始點的分佈
ax1 = fig.add_subplot(311)
X = np.concatenate((X1, X2))
plt.scatter(X[:, 0], X[:, 1], marker='o')
plt.title(u'原始資料分佈')
plt.sca(ax1)
"""
# K-means聚類
from sklearn.cluster import KMeans
ax2 = fig.add_subplot(312)
y_pred = KMeans(n_clusters=3, random_state=9).fit_predict(X)
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title(u'K-means聚類')
plt.sca(ax2)
"""
# DBSCAN聚類
from sklearn.cluster import DBSCAN
ax3 = fig.add_subplot(313)
y_pred = DBSCAN(eps = 0.1, min_samples = 10).fit_predict(X)
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title(u'DBSCAN聚類')
plt.sca(ax3)
plt.show()
效果展示:
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
系列推薦:
【監督學習】1:KNN演算法實現手寫數字識別的三種方法
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
【無監督學習】1:K-means演算法原理介紹,以及程式碼實現
【無監督學習】2:DBSCAN演算法原理介紹,以及程式碼實現
【無監督學習】3:Density Peaks聚類演算法(區域性密度聚類)
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
【深度學習】1:感知器原理,以及多層感知器解決異或問題
【深度學習】2:BP神經網路的原理,以及異或問題的解決
【深度學習】3:BP神經網路識別MNIST資料集
【深度學習】4:BP神經網路+sklearn實現數字識別
【深度學習】5:CNN卷積神經網路原理、MNIST資料集識別
【深度學習】8:CNN卷積神經網路識別sklearn資料集(附原始碼)
【深度學習】6:RNN遞迴神經網路原理、MNIST資料集識別
【深度學習】7:Hopfield神經網路(DHNN)原理介紹
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
TensorFlow框架簡單介紹
–-----------------------------------------------------------------------------—--------------------------------------------------------—----
相關文章
- 【Python機器學習實戰】聚類演算法(2)——層次聚類(HAC)和DBSCANPython機器學習聚類演算法
- 聚類演算法——DBSCAN演算法原理及公式聚類演算法公式
- 機器學習——dbscan密度聚類機器學習聚類
- 初探DBSCAN聚類演算法聚類演算法
- 機器學習-聚類分析之DBSCAN機器學習聚類
- 機器學習——監督學習&無監督學習機器學習
- 一圖看懂監督學習、無監督學習和半監督學習
- 20分鐘學會DBSCAN聚類演算法聚類演算法
- 監督學習,無監督學習常用演算法集合總結,引用scikit-learn庫(監督篇)演算法
- 無監督學習-K-means演算法演算法
- 9.1.6 DBSCAN聚類演算法————機器學習實戰第二版聚類演算法機器學習
- [譯] Python 中的無監督學習演算法Python演算法
- 【ML吳恩達】3 有監督學習和無監督學習吳恩達
- 機器學習--有監督學習--分類演算法(預測分類)機器學習演算法
- 一文簡述多種無監督聚類演算法的Python實現聚類演算法Python
- 無監督學習之降維
- 監督學習or無監督學習?這個問題必須搞清楚
- 【深度學習基礎-15】非監督學習-用K-mean演算法聚類如何使用及例項計算深度學習演算法聚類
- 手把手教你在多種無監督聚類演算法實現Python(附程式碼)聚類演算法Python
- 監督學習
- DBSCAN聚類演算法(Density-Based Spatial Clustering of Applications with Noise)聚類演算法APP
- 機器學習--有監督學習--演算法整理機器學習演算法
- MVO優化DBSCAN實現聚類優化聚類
- 基於自編碼器的表徵學習:如何攻克半監督和無監督學習?
- 【機器學習基礎】無監督學習(2)——降維之LLE和TSNE機器學習
- 【機器學習基礎】無監督學習(3)——AutoEncoder機器學習
- 【機器學習基礎】無監督學習(1)——PCA機器學習PCA
- 演算法金 | K-均值、層次、DBSCAN聚類方法解析演算法聚類
- 自監督學習
- OPTICS聚類演算法原理聚類演算法
- 機器學習7-模型儲存&無監督學習機器學習模型
- 無監督學習才不是“不要你管”
- 機器學習:監督學習機器學習
- 003.00 監督式學習
- 自監督學習概述
- 機器學習個人筆記(三)之無監督學習機器學習筆記
- 吳恩達機器學習筆記 —— 14 無監督學習吳恩達機器學習筆記
- 深度解讀DBSCAN聚類演算法:技術與實戰全解析聚類演算法