-
2018-06-28 23:02:17
引言
其实对于所有的聚类问题,都有一个核心点,那就是以什么样的规则来划分两个点是不是同一类。密度聚类,本质上就是基于一种密度的概念来进行聚类。而密度的定义本质上也是来自于两点的距离,所以其实对于聚类的算法来看,大家本质上都差不多,谁也别笑话谁。下面我们来总结介绍一种叫做DBSCAN的密度算法。
DBSCAN
DBSCAN 的全称是 Density-Based Spatial Clustering of Applications with Noise
单词里面有个noise,这就说明我们的算法是能抗噪声的,并且我们的算法是可以在空间中聚类为任意形状的聚类的,这点是一些其他的聚类算法不具备的性质,如下所示:
具有这样的性能,就是因为我们的算法引入了“邻域”(其参数为 (ε,MinPts) ( ε , M i n P t s ) )的概念来刻画样本的紧密程度的算法。下面我们来介绍一下这个算法,在具体算法之前,我们先看几个定义,非常简单,但是可能比较绕,懂了这几个定义,下面的算法就是小菜一碟了。
基于密度的几个概念
ε− ε − 邻域:
对 xj∈D x j ∈ D ,其 ε− ε − 邻域是指样本集 D D 中与 xj x j 距离不大于 ε ε 的样本,即 Nε(xj)={xj∈D|dist(xi,xj)≤ε} N ε ( x j ) = { x j ∈ D | d i s t ( x i , x j ) ≤ ε }
核心对象:
对象 xj x j 的 ε− ε − 邻域中至少包含 MinPts M i n P t s 个样本,即 Nε(xj)≥MinPts N ε ( x j ) ≥ M i n P t s ,则称 xj x j 为核心对象。
密度直达:
若 xj x j 位于 xi x i 的 ε− ε − 邻域中,且 xi x i 是核心对象,则称 xj x j 由 xi x i 密度直达。
密度可达:
对 xj x j 与 xi x i ,存在样本序列 p1,p2,...,pn p 1 , p 2 , . . . , p n 且 p1=xj,pn=xi p 1 = x j , p n = x i 且 pi+1 p i + 1 由 pi p i 密度直达,则称 xj x j 由 xi x i 密度可达。
其实这个概念本质上要求 p2,...,pn p 2 , . . . , p n 都是核心对象
密度相连:
对 xj x j 与 xi x i ,若存在 xk x k 使得 xj x j 与 xi x i 均由 xk x k 密度可达,则称 xj x j 由 xi x i 密度相连。
下图直观的表示了这几个概念
基于上面的概念,可以定义DBSCAN算法里面的簇的定义
簇: 由密度可达关系导出的最大的密度相连的样本集合。
因此实际上簇 C⊆D C ⊆ D 满足下面的两个条件:
连接性: xi∈C,xj∈C⇒ x i ∈ C , x j ∈ C ⇒ xi x i 与 xj x j 密度相连
最大性: xi∈C x i ∈ C 且 xj x j 由 xi x i 密度可达 ⇒xj∈C ⇒ x j ∈ C
实际上就是核心对象以及与其密度可达的所有的点的集合
本质上相当于一些核心对象以及边界点组成了簇,簇中核心的点就是核心对象。
具体算法描述
实际上就是核心对象以及与其密度可达的所有的点的集合
输入
- 样本集 D={x1,...,xN} D = { x 1 , . . . , x N }
- 邻域参数 (ε,MinPts) ( ε , M i n P t s )
算法流程
- 找出所有的核心对象,放入集合中 Ω Ω
- 初始化未访问的样本集合: Γ=D Γ = D
-
while(Ω≠∅)
w
h
i
l
e
(
Ω
≠
∅
)
-
Γold=D
Γ
o
l
d
=
D
- 随机选取一个核心对象
o∈Ω
o
∈
Ω
,初始化
Q=<o>
Q
=<
o
>
-
Γ=Γ∖{o}
Γ
=
Γ
∖
{
o
}
-
while(Q≠∅)
w
h
i
l
e
(
Q
≠
∅
)
- 从
Q
Q
中取出样本
q
q
-
if(q
i
f
(
q
是核心对象
)
)
- 另
Δ=Nε(q)∩Γ
Δ
=
N
ε
(
q
)
∩
Γ
, 即获取核心对象
q
q
邻域内的点
- 将内的点加入到
Q
Q
中
-
Γ=Γ∖Δ
Γ
=
Γ
∖
Δ
-
endif
e
n
d
i
f
-
endwhile
e
n
d
w
h
i
l
e
-
k=k+1
k
=
k
+
1
,并且生成聚类簇
Ck=Γold∖Γ
C
k
=
Γ
o
l
d
∖
Γ
- Ω=Ω∖Ck Ω = Ω ∖ C k
- endwhile e n d w h i l e
输出
簇划分 C={C1,...,CK} C = { C 1 , . . . , C K }
算法的优缺点
优点:
- 算法不需要指定聚类的数目,但是算法实际上需要另外两个参数 (ε,MinPts) ( ε , M i n P t s ) ,所以这个优点也是勉强。
- 可以聚成任意形状的类,就像开始的图所示
- 能够识别出噪声点
缺点:
- 对高维数据效果不算好
- 如果样本的密度不均, 效果会不理想
更多相关内容 -
密度聚类数据集
2018-12-11 22:40:29常用的密度聚类数据集,可以用来测试简单的算法。 -
密度聚类(DBSCAN)算法(Python)
2019-05-31 14:02:02DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-Means,BIRCH这些一般只适用于凸样本集的聚类相比,DBSCAN既可以适用于凸... -
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2020-09-19 19:11:16主要介绍了Python基于聚类算法实现密度聚类(DBSCAN)计算,结合实例形式分析了聚类算法的相关概念、原理及使用聚类算法进行密度聚类计算的相关操作技巧,需要的朋友可以参考下 -
密度聚类dbscan算法——matlab编程
2018-06-07 10:45:08本密度聚类算法dbscan是基于周志华老师《机器学习》介绍编程的,经检验效率较高 -
基于时空约束密度聚类的停留点识别方法.pdf
2021-08-19 00:05:53基于时空约束密度聚类的停留点识别方法.pdf -
python实现密度聚类(模板代码+sklearn代码)
2020-12-20 19:03:20本人在此就不搬运书上关于密度聚类的理论知识了,仅仅实现密度聚类的模板代码和调用skelarn的密度聚类算法。 有人好奇,为什么有sklearn库了还要自己去实现呢?其实,库的代码是比自己写的高效且容易,但自己实现... -
基于在线密度聚类的潜艇悬停自适应模糊建模 (2010年)
2021-05-12 08:16:24通过密度聚类在线提取样本数据输入输出变量间的内在规则,确定被控对象合理的模糊模型结构;用前馈模糊神经网络结构表示模糊系统规则后件,并采用一阶梯度算法对实常数后件参数进行在线辨识。对潜艇悬停控制过程进行... -
基于密度聚类算法的照片分类技术.pdf
2021-08-19 11:39:01基于密度聚类算法的照片分类技术.pdf -
多维密度聚类的精细化道路交通运行状况检测.pdf
2021-08-19 11:37:22多维密度聚类的精细化道路交通运行状况检测.pdf -
MATLAB密度聚类程序
2013-07-02 20:59:46基于MATLAB的密度聚类程序,DBSCAN.m,运行正确。 -
密度聚类python
2020-12-01 10:11:13本人在此就不搬运书上关于密度聚类的理论知识了,仅仅实现密度聚类的模板代码和调用skelarn的密度聚类算法。 有人好奇,为什么有sklearn库了还要自己去实现呢? 其实,库的代码是比自己写的高效且容易,但自己实现...广告关闭
腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!
本人在此就不搬运书上关于密度聚类的理论知识了,仅仅实现密度聚类的模板代码和调用skelarn的密度聚类算法。 有人好奇,为什么有sklearn库了还要自己去实现呢? 其实,库的代码是比自己写的高效且容易,但自己实现代码会对自己对算法的理解更上一层楼。 #调用科学计算包与绘图包import numpy as npimport random...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https:blog.csdn.nethaluoluo211articledetails78524599 本文主要内容:聚类算法的特点聚类算法样本间的属性(包括,有序属性、无序属性)度量标准聚类的常见算法,原型聚类(主要论述k均值聚类),层次聚类、密度聚类k均值聚类算法的python实现,以及聚类算法与em...
dbscan算法是一种很典型的密度聚类法,它与k-means等只能对凸样本集进行聚类的算法不同,它也可以处理非凸集。 关于dbscan算法的原理,笔者觉得下面这篇写的甚是清楚练达,推荐大家阅读:https:www.cnblogs.compinardp6208966.htmldbscan的主要优点有:1) 可以对任意形状的稠密数据集进行聚类,相对的,k-means之类...
任务需求:现有140w个某地区的ip和经纬度的对应表,根据每个ip的24块进行初步划分,再在每个区域越100-200个点进行细致聚类划分由于k值未知,采用密度的mean shift聚类方式。 0#目录:原理部分框架资源实践操作效果展示1#原理部分关于kmeans纯代码实现可以移步之前的一篇机器学习-聚类算法-k-均值聚类-python详解在...
问题是,许多聚类算法,如k-means和hierarchical agglomerative clustering,要求我们提前指定簇的数量。 在这个例子中,我们知道只有五个足球运动员,但在实际应用中,你可能并不知道数据集中有多少个人。 因此,我们需要使用基于密度或基于图的聚类算法,这样的算法不仅可以聚类数据点,还可以根据数据密度确定聚类...
作者:vihar kurama机器之心编译参与:geek ai、路本文简要介绍了多种无监督学习算法的 python 实现,包括 k 均值聚类、层次聚类、t-sne 聚类、dbscan 聚类。 无监督学习是一类用于在数据中寻找模式的机器学习技术。 无监督学习算法使用的输入数据都是没有标注过的,这意味着数据只给出了输入变量(自变量 x)而没有...
一.前述密度聚类是一种能降噪的算法。 很多时候用在聚类形状不规则的情况下。 二.相关概念先看些抽象的概念(官方定义):1.? 对象o的是与o为中心,? 为半径的空间,参数? 是用户指定每个对象的领域半径值。 2.minpts(领域密度阀值):对象的? 的对象数量。 3.核心对象:如果对象o? 的对象数量至少包含minpts个对象...
密度聚类概念:? image?image算法流程: 1. 如果一个点的领域包括了多于m个点的对象,那么就把他作为一个核心对象。 2.寻找直接密度可达的对象 3. 没有更新时结束 包含过少对象的会被认为是噪声。 python实现:还是使用iris数据集:import numpy as np import matplotlib.pyplot as plt import pandas as pd import...
dbscan (density-based spatial clustering of applications with noise)是一种基于密度的聚类算法,基于密度的聚类寻找被低密度区域分离的高密度区域...容易产生“维数灾难”(聚类算法基于欧式距离的通病) dbscan 聚类 python 实现#coding=utf-8created on 20191012 11:42 @author:ewdager import numpy as...
dbscan能够在带有噪点的样本空间中发现任意形状的聚类并排除噪点。 dbscan算法不需要预先指定聚类数量,但对用户设定的参数非常敏感。 当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差。 dbscan算法基本概念:核心对象:如果给定对象的半径eps邻域内样本数量超过阈值min_samples,则称为核心对象...
然后把我们找到的rho和sigma都很大的点作为簇中心,再利用k-means或者dbscan算法进行聚类就能得到相对比较好的结果。 参考来源 聚类分析(五)基于密度的聚类算法 — dbscan聚类算法第三篇-密度聚类算法dbscan 聚类算法初探(五)dbscan,作者:peghoty 聚类算法第一篇-概览 sklearn.cluster.dbscan 【挖掘模型】...
和密度聚类的具体步骤。 在本次文章中,我们将通过一个小的数据案例,讲解如何基于python实现密度聚类的实战。 函数说明----在python的sklearn模块中,cluster子模块集成了常用的聚类算法,如k均值聚类、密度聚类和层次聚类等。 对于密度聚类而言,读者可以直接调用cluster子模块中的dbscan“类”,有关该“类”的...
接下来我可以继续分享python相关的知识点,主题包含数据可视化、数据分析和数据挖掘。 前言在第29期,我们分享了有关k均值聚类的项目实战,本期将介绍另一种聚类算法,那就是基于密度聚类的算法。 该算法的最大优点是可以将非球形簇实现恰到好处的聚类,如下图所示,即为一个非球形的典型图形:? 如上图所示,右上角...
物以类聚,人以群分,平常我们把人和物进行分类,今天来讲一讲如何通过dbscan用数据把样本进行聚类。 1. dbscan 定义dbscan (density-based spatial clustering of applications withnoise)是一种基于密度的聚类算法。 与k均值聚类和层次聚类不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域...
本文简要介绍了多种无监督学习算法的 python 实现,包括 k 均值聚类、层次聚类、t-sne 聚类、dbscan 聚类。 无监督学习是一类用于在数据中寻找模式的机器学习技术。 无监督学习算法使用的输入数据都是没有标注过的,这意味着数据只给出了输入变量(自变量 x)而没有给出相应的输出变量(因变量)。 在无监督学习中...
python中的t-sne聚类实现,数据集是iris数据集:这里iris数据集具有四个特征(4d),它被变换并以二维图形表示。 类似地,t-sne模型可以应用于具有n个特征的数据集。 dbscan聚类 dbscan(density-based spatial clustering of applications withnoise,具有噪声的基于密度的聚类方法)是一种流行的聚类算法...
简要的说明: dbscan为一个密度聚类算法,无需指定聚类个数。 python的简单实例: 1 # coding:utf-8 2 from sklearn.cluster import dbscan 3 import numpy as np 4 importmatplotlib.pyplot as plt 5 from sklearn import metrics 6 from sklearn.datasetsimport make_blobs 7 from sklearn.preprocessing import ...
之前一直用r,现在开始学python之后就来尝试用python来实现kmeans。 之前用r来实现kmeans的博客:笔记︱多种常见聚类模型以及分群质量评估(聚类注意事项、使用技巧)聚类分析在客户细分中极为重要。 有三类比较常见的聚类模型,k-mean聚类、层次(系统)聚类、最大期望em算法。 在聚类模型建立过程中,一个比较关键...
在给定样本的情况下,聚类分析通过特征相似性或者距离的度量方法,将其自动划分到若干个类别中。 常用的聚类分析方法包括层次聚类法(hierarchical clustering)、k均值聚类(k-meansclustering)、模糊聚类(fuzzy clustering)以及密度聚类(density clustering)等。 本节我们仅对最常用的kmeans算法进行讲解。?...
重复2,直到高维球内的密度随着继续的球心滑动变化低于设定的阈值,算法结束具体的原理可以参考下面的地址,笔者读完觉得说的比较明了易懂:http:blog.csdn.netgoogle19890102articledetails51030884而在python中,机器学习包sklearn中封装有该算法,下面用一个简单的示例来演示如何在python中使用mean-shift聚类...
-
traclus-master_密度聚类_轨迹预测_轨迹聚类_traclus
2021-09-11 09:37:07基于密度的轨迹聚类,可以将轨迹进行分类,代码齐全,可供参考 -
基于密度聚类的雷达抗干扰.pdf
2021-08-18 23:52:26基于密度聚类的雷达抗干扰.pdf -
基于密度聚类的医学图像分割DCMIS.pdf
2021-08-21 11:11:01基于密度聚类的医学图像分割DCMIS.pdf -
基于维度距离的混合属性密度聚类算法研究.pdf
2021-08-21 10:59:58基于维度距离的混合属性密度聚类算法研究.pdf -
一种基于密度聚类的小生境差分进化算法.pdf
2021-08-21 10:53:34一种基于密度聚类的小生境差分进化算法.pdf -
基于弹性分布数据集的海量空间数据密度聚类.pdf
2021-08-19 23:55:57基于弹性分布数据集的海量空间数据密度聚类.pdf -
文本聚类中基于密度聚类算法的研究与改进
2020-10-23 07:36:13结合基于划分的聚类算法和基于密度的聚类算法的优点,提出了基于密度的聚类算法DBCKNN。算法利用了k近邻和离群度等概念,能够迅速确定数据集中每类的中心及其类半径,在保证聚类效果的基础上提高了聚类效率。 -
基于Spark的密度聚类算法并行化研究.pdf
2021-08-19 12:32:56基于Spark的密度聚类算法并行化研究.pdf -
基于边密度聚类的重叠社区发现算法.pdf
2021-08-19 12:22:41基于边密度聚类的重叠社区发现算法.pdf -
基于密度聚类的HMM协作频谱预测算法.pdf
2021-08-19 12:18:26基于密度聚类的HMM协作频谱预测算法.pdf -
基于密度聚类的增量动态社区发现算法.pdf
2021-08-19 12:14:09基于密度聚类的增量动态社区发现算法.pdf -
基于密度聚类的多目标粒子群优化算法.pdf
2021-08-19 11:45:21基于密度聚类的多目标粒子群优化算法.pdf -
聚类二之密度聚类
2021-10-18 20:41:141. 密度聚类算法概述 2. DBSCAN 算法 2.1 DBSCAN 若干概念 2.2 DBSCAN算法的流程 3. 密度最大值算法 3.1 密度最大值算法的原理 3.2 DensityPeak 与决策图Decision Graph 3.3 边界和噪声的重认识 3.4 不同...目录
3.2 DensityPeak 与决策图Decision Graph
1. 密度聚类算法概述
密度聚类方法的指导思想: 只要样本点的密度大于某阈值,则将该样本添加到最近的簇中。
优点:
(1) 能克服基于距离的算法只能发现“类圆形”(凸)的聚类的缺点,可发现任意形状的聚类。
比如:GMM——K-Means只能得到类圆形区域
(2) 对噪声数据不敏感
(3) 对数据的分布没有要求。(K-Means要求数据服从混合高斯分布)
缺点:
(1) 计算密度单元的计算复杂度大,需要建立空间索引来降低计算量。
密度聚类算法:
DBSCAN
密度最大值算法
2. DBSCAN 算法
DBSCAN(Density based spatial clustering of applications with noise ), 将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有“噪声”的数据中发现任意形状的聚类。
2.1 DBSCAN 若干概念
对象的
-邻域:给定对象在半径
内的区域。
核心对象:对于给定的数目m,如果一个对象的
-邻域至少包含m个对象,则称该对象为核心对象。
直接密度可达:给定一个对象集合D,如果p是在q的
-邻域内,而q是一个核心对象,我们说对象p从对象q出发是直接密度可达的。同时定义,没有任何点是由非核心点直接可达的。
eg:如下图所示:
= 1cm,m=5,q是一个核心对象,从对象q出发到对象p是直接密度可达的。
密度可达:如果存在一个对象链p1, p2, p3,……pn(pi∈ D,1≤i≤n), p1=q(核心对象), pn =p,pi+1是从pi关于E和m直接密度可达的(pi,1≤i≤n-1,为核心对象),则对象p是从对象q关于
和m密度可达的。
密度相连:如果对象集合D中存在一个对象o,使得对象p和q是从o关于E和m密度可达的,那么对象p和q是关于
和m密度相连的。
定义了密度相连之后,每个聚类都符合两个性质:
(1)一个聚类里的两个点都是互相连接的。
(2)如果一个点p是由一个在聚类里的点q可达的,那么p也在q所属的聚类里。
簇:一个基于密度的簇是最大的密度相连对象的集合。
噪声:不包含在任何簇中的对象称为噪声。
2.2 DBSCAN算法的流程
(1)如果一个点p的E-邻域包含多于m个对象,则创建一个p作为核心对象的新簇;
(2)寻找并合并核心对象直接密度可达的对象;(用到并查集,不关心路径,只关心两个点是否连接)
(3)没有新点可以更新簇时,算法结束;
DBSCAN 需要两个参数:ε (eps) 和形成高密度区域所需要的最少点数 (minPts)
伪代码:
DBSCAN(D, eps, MinPts) { C = 0 for each point P in dataset D { if P is visited continue next point mark P as visited NeighborPts = regionQuery(P, eps) if sizeof(NeighborPts) < MinPts mark P as NOISE else { C = next cluster expandCluster(P, NeighborPts, C, eps, MinPts) } } } expandCluster(P, NeighborPts, C, eps, MinPts) { add P to cluster C for each point P' in NeighborPts { if P' is not visited { mark P' as visited NeighborPts' = regionQuery(P', eps) if sizeof(NeighborPts') >= MinPts NeighborPts = NeighborPts joined with NeighborPts' } if P' is not yet member of any cluster add P' to cluster C } } regionQuery(P, eps) return all points within P's eps-neighborhood (including P)
由上述算法可知:
- 每个簇至少包含一个核心对象;
- 非核心对象可以是簇的一部分,构成了簇的边缘(edge);
- 包含过少对象(少于m个)的簇被认为是噪声。
3. 密度最大值算法
密度最大值聚类可识别各种形状的类簇,且参数很容易确定。
3.1 密度最大值算法的原理
局部密度ρi
dc 是一个截断距离,ρi 即到对象i的距离小于dc的对象的个数。由于该算法只对ρi的相对值敏感,所以对dc的选择是稳健的,一种推荐的做法是选择dc,使得平均每个点的邻居数为所有点的1%—2%。(why?)
高局部密度点距离δi
在密度高于对象i的所有对象中,到对象i最近的距离,即高局部密度点距离。
对于密度最大的对象,设置
,即该问题中的无穷大。只有那些密度是局部或者全局最大的点才会有远大于正常值的高局部密度点距离。
簇的中心:比较大的局部密度ρi和大的高局部密度点距离δi
异常点:高局部密度点距离δi较大但是局部密度ρi较小
确定簇中心之后,其它点按照距离已知簇的中心最近进行分类(也可按照密度可达的方法进行分类)
3.2 DensityPeak 与决策图Decision Graph
3.3 边界和噪声的重认识
在聚类分析中,通常需要确定每个点划分给某个簇的可靠性。
3.4 不同数据下密度最大值聚类的效果
4. Affinity Propagation
4.1 Affinity Propagation 算法原理
r(i,k):i对k的依赖
a(i,k):k对i的适合度
将距离的相反数(倒数)作为两点的相似度。
4.2 Affinity Propagation 算法调参
5. 参考文献
-
基于区域划分的DBSCAN多密度聚类算法.pdf
2021-08-19 12:32:45基于区域划分的DBSCAN多密度聚类算法.pdf -
一种时间序列数据的动态密度聚类算法.pdf
2021-08-19 11:38:27一种时间序列数据的动态密度聚类算法.pdf -
聚类算法之密度聚类方法
2022-05-22 23:14:50密度聚类方法 密度聚类方法的核心思想是,只要样本点的密度大 于某阈值,则将该样本添加到最近的簇中。这类算法能克服基于距离的算法只能发现“类圆形”(凸)的聚类的缺点,可发现任意形状的聚类, 且对噪声数据不...目录
密度聚类方法
密度聚类方法的核心思想是,只要样本点的密度大于某阈值,则将该样本添加到最近的簇中。这类算法可发现任意形状的聚类, 且对噪声数据不敏感。但密度单元的计算复杂度大,需要建立空间索引来降低计算量。
DBSCAN
DBSCAN(Density-Based Spatial Clustering of Applications with Noise),基于密度的带噪声的空间聚类的应用,一个比较有代表性的基于密度的聚类算法。 它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有噪声的数据中发现任意形状的聚类。
DBSCAN算法的若干概念
- 对象的ε-邻域:给定对象在半径ε内的区域。
- 核心对象:对于给定的数目m,如果一个对象的ε-邻域至少包含m个对象,则称该对象为核心对象。
- 直接密度可达:如果对象p是在对象q的ε-邻域内,而q是一个核心对象,我们就说对象p从对象q出发是直接密度可达的。
- 密度可达:如果存在一个对象链
,
,对于任意
,
是从
关于ε和m直接密度可达的,则对象p是从对象q关于ε和m密度可达的。
- 密度相连:如果对象集合中存在一个对象o,使得对象p和q是从o关于ε和m密度可达的,那么对象p和q是关于ε和m密度相连的。
- 簇:一个基于密度的簇是最大的密度相连对象的集合。
- 噪声:不包含在任何簇中的对象称为噪声。
DBSCAN具体实现步骤
- 从任意一个数据点开始,用距离阈值ε将这个点的邻域提取出来。
- 如果在邻域内至少有m个点,那么该点是核心对象,被纳入第一个簇。否则该点将被标记为噪声(之后这个噪声点可能还是会变成簇中的一部分)。
- 对于簇中的核心对象,在它邻域内的点也被纳入簇中。对于簇中所有点,再去提取它们的邻域,确定邻域内的点是否也属于当前的簇。
- 第 2~3 步的过程会一直重复,直到簇内所有点都被确定,即所有在邻域内的点都被标记属于一个簇或者是噪声。
- 一旦我们在当前簇做完这些,就会从新的数据点开始,接着发现下一个簇或噪声。这个过程反复进行直到所有的点都已被访问,最后每个点都被标记属于某一个簇或者是噪声。
DBSCAN的优缺点
优点:
- 不需要预先确定聚类的数量。
- 可以很好地发现任意尺寸和任意形状的聚类。
- 对噪声数据不敏感,将离群值认定为噪声,不像mean-shift算法仅仅将将它们扔到一个簇里,即使簇中数据差异很大。
缺点:
- 当集群的密度变化时,它表现得不像其他算法那样好。这是因为当密度变化时,距离阈值 ε 和用于确定邻居点的m也将会随之改变。
- 这个缺点也会发生在高维数据中,因为距离阈值 ε 变得难以被估计。
-
DBSCAN 密度聚类下的六边形空间索引算法 H3 的精度选择.pdf
2021-08-18 22:12:35DBSCAN 密度聚类下的六边形空间索引算法 H3 的精度选择.pdf