1. 程式人生 > >DBSCAN(基於高密度聚類的)演算法

DBSCAN(基於高密度聚類的)演算法

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

DBSCAN演算法的思想其實很簡單,粗俗點說就是一圈套一圈套一圈套一圈………………然而,要搞清楚它,首先要弄清楚幾個基本概念。

基本概念
1、物件o是一個核心物件。物件o的ε-領域是與o為中心,以ε為半徑的空間。
2、MinPts指定稠密區域的密度閥值。如果一個物件的ε-區域至少包含MinPts個物件,則該物件是核心物件。
3、直接密度可達:如果物件p在核心物件q的ε

-領域內,則p是從q直接密度可達的。
4、密度可達:如果存在一個物件鏈p1,p2,……,pn,使得p1=q,pn=p,並且對於pi屬於D,pi+1是從pi關於ε和MinPts直接密度可達的。
5、密度相連:如果存在物件qεD,使得p1和p2都是從q關於MinPts密度可達的,則稱p1和p2是關於ε和MinPts密度相連的。

來個圖說明一下:
這裡寫圖片描述

由上圖可看出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都是密度相連的。

演算法執行流程


這裡寫圖片描述

如果,仔細研究這個演算法,相信你會對我之前說的是一圈套一圈套一圈套一圈(實際上是密度可達的含義),會有所體會,哈哈^_^

OK,看一下虛擬碼吧。


這裡寫圖片描述

這裡寫圖片描述

到這裡,Jiawei書上關於DBSCAN的部分就講解完了,然而看過西瓜書的同學可能會發現,這裡的做法與西瓜書上,會有些許不同


這裡寫圖片描述
這裡寫圖片描述

實際上,對比Jiawei和周志華老師的演算法,你會發現差別並不大。只是在起始的時候會有一些區別,而演算法推進策略是完全一樣的。

OK,至此,DBSCAN演算法結束了。
下面給幾點需要注意的。
1、大家在看到上面的那個圖的時候,容易過分具象化簇了。為什麼這麼說呢?因為一般的講義都是把簇畫成圓形,並且給出了核心點和半徑。這樣便於大家理解演算法的思想。但實際上,大家要注意。DBSCAN是可以發現任意形狀的簇的,因為它是基於密度的呀

。因此這個簇基本上都不是圓形了,而且這個半徑實際上是一個閥值。判斷一個點是否在它的半徑內,實際上還是通過計算距離來判斷的。

2、DBSCAN演算法需要選擇一種距離度量,對於待聚類的資料集中,任意兩個點之間的距離,反映了點之間的密度,說明了點與點是否能夠聚到同一類中。由於DBSCAN演算法對高維資料定義密度很困難,所以對於二維空間中的點,可以使用歐幾里德距離來進行度量。
3、DBSCAN演算法需要使用者輸入半徑和閥值。前面也提到過,要求使用者輸入引數基本上都是不靠譜的,這裡DBSCAN演算法經過反覆的實驗,給出了一般的標準化引數,即半徑=4,閥值=4。
具體,引數值是如何確定的,DBSCAN也是採用了一般的處理方法。而具體是什麼,因為該處理方法是比較通用的,所以以後再說吧。

參考文章
DBSCAN聚類原理
資料探勘(概念與技術)-第三版-Jiawei Han-P307

相關推薦

DBSCAN(基於密度的)演算法

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

DBSCAN詳解(密度演算法開篇)

DBSCAN詳解 第二十二次寫部落格,本人數學基礎不是太好,如果有幸能得到讀者指正,感激不盡,希望能借此機會向大家學習。這一篇作為密度聚類演算法族的開篇,主要是介紹其中最流行的一種演算法——DBSCAN,其他演算法在後續會陸續更新,連結附在該篇文章的結尾處。

DBSCAN密度演算法

    DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪聲的基於密度的聚類方法)是一種很典型的密度聚類演算法,和K-Means,BIRCH這些一般只適用於凸樣本集的聚類相比,DBSCAN既可以適用於凸樣本集,也可以適用

基於圖的演算法綜述(基於圖的演算法開篇)

基於圖的聚類演算法綜述 第三十二次寫部落格,本人數學基礎不是太好,如果有幸能得到讀者指正,感激不盡,希望能借此機會向大家學習。這一篇文章作為基於圖的聚類(Figure-based Clustering)演算法的開篇,簡要介紹了該類演算法的相關內容,併為之後的演算法詳解做鋪墊。

為什麼說K-Means是基於距離的演算法

K-means演算法是很典型的基於距離的聚類演算法,採用距離作為相似性的評價指標,兩個物件的距離越近,其相似度就越大。K-means演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標。k-means聚類,需要使用者設定一個聚類個數k作為輸入資料。k個初

【無監督學習】3:Density Peaks演算法實現(區域性密度演算法

前言:密度峰聚類演算法和DBSCAN聚類演算法有相似的地方,兩者都是基於密度的聚類方式。自己是在學習無監督學習過程中,無意間見到介紹這種聚類演算法的文章,感覺密度峰聚類演算法方法很新奇,操作也很簡答,於是自己也動手寫一下了。 –—-—-—-—-—-—-—-—-

DBSCAN基於密度演算法

**DBSCAN演算法和實現 ——DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一個比較有代表性的基於密度的聚類演算法,它是一種適應性極強的聚類演算法,不同於K-mean

演算法(三)——基於密度演算法(以 DBSCAN 為例)

      上一篇部落格提到 K-kmeans 演算法存在好幾個缺陷,其中之一就是該演算法無法聚類哪些非凸的資料集,也就是說,K-means 聚類的形狀一般只能是球狀的,不能推廣到任意的形狀。本文介紹一種基於密度的聚類方法,可以聚類任意的形狀。       基於密度的聚類是

基於密度演算法(DBSCAN)的java實現

         k-means和EM演算法適合發現凸型的聚類(大概就是圓形,橢圓形比較規則的類),而對於非凸型的聚類,這兩種方法就很難找到準確的聚類了。比如如下圖:         可能來自不同類的點反而比來自相同類的點還要靠的更近。   太多的原理和演算法介紹,大家可

演算法DBSCAN(具有噪聲的基於密度方法)

# !/usr/bin/python # -*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt import sklearn.datasets as ds import matpl

簡單易學的機器學習演算法——基於密度演算法DBSCAN

%% DBSCAN clear all; clc; %% 匯入資料集 % data = load('testData.txt'); data = load('testData_2.txt'); % 定義引數Eps和MinPts MinPts = 5; Eps = epsilon(data, MinPts)

基於密度DBSCAN

/* DBSCAN Algorithm 15S103182 Ethan */ #include <iostream> #include <sstream> #include <fstream> #include <vector>

基於R的分析(DBSCAN基於密度分析)

DBSCAN聚類分析(基於R語言) 在上一講中,主要是給大家介紹了,K-means聚類,層次聚類這兩種聚類方法是最為典型的兩種聚類方法。K-means聚類基本原理是這樣的,在n個樣本點中,首先提前設定要聚類幾類,比如說要聚成三類,那麼在n個樣本點中先隨機選擇三

基於密度演算法(Clustering by fast search and find of density peaksd)

一、概述 “Clustering by fast search and find of density peaks”(下面簡稱CFDP)是在《Science》期刊上發表的的一篇論文,論文中提出了一種非常巧妙的聚類演算法-基於密度的聚類演算法。雖然文章出來後遭到

演算法(四)、基於斯混合分佈 GMM 的方法(補充閱讀)

      基於高斯混合分佈的聚類,我看了很多資料,,寫的千篇一律,一律到讓人看不明白。直到認真看了幾遍周志華寫的,每看一遍,都對 GMM 聚類有一個進一步的認識。所以,如果你想了解這一塊,別看亂七八糟的部落格了,直接去看周志華的《機器學習》 P206頁。 下面是我額外看的

機器學習sklearn19.0演算法——層次(AGNES/DIANA)、密度(DBSCAN/MDCA)、譜

一、層次聚類 BIRCH演算法詳細介紹以及sklearn中的應用如下面部落格連結: http://www.cnblogs.com/pinard/p/6179132.html http://www.cnblogs.com/pinard/p/62

:層次基於劃分的(k-means)、基於密度基於模型的

oca 基本思想 初始化 methods 根據 範圍 下使用 對象 適用於 一、層次聚類 1、層次聚類的原理及分類 1)層次法(Hierarchicalmethods)先計算樣本之間的距離。每次將距離最近的點合並到同一個類。然後,再計算類與類之間的距離,將距離最近的類合

演算法DBSCAN演算法之二:高維資料剪枝應用NQ-DBSCAN

一、經典DBSCAN的不足 1.由於“維度災難”問題,應用高維資料效果不佳 2.執行時間在尋找每個點的最近鄰和密度計算,複雜度是O(n2)。當d>=3時,由於BCP等數學問題出現,時間複雜度會急劇上升到Ω(n的四分之三次方)。 二、DBSCAN在高維資料的改進 目前的研究有

演算法DBSCAN演算法之一:經典DBSCAN

DBSCAN是基於密度空間的聚類演算法,與KMeans演算法不同,它不需要確定聚類的數量,而是基於資料推測聚類的數目,它能夠針對任意形狀產生聚類。 1.epsilon-neighborhood epsoiln-neighborhood(簡稱e-nbhd)可理解為密度空間,表示半徑為e

DBSCAN演算法難嗎?我們來看看吧~

往期經典回顧 從零開始學Python【29】--K均值聚類(實戰部分) 從零開始學Python【28】--K均值聚類(理論部分) 從零開始學Python【27】--Logistic迴歸(實戰部分) 從零開始學Python【26】--Logistic迴歸(理論部分) 從零開始學Py