密度聚类density-based clustering假设聚类结构能够通过样本分布的紧密程度确定。

  密度聚类算法从样本的密度的角度来考察样本之间的可连接性,并基于可连接样本的不断扩张聚类簇,从而获得最终的聚类结果。

一、DBSCAN算法

1.介绍

DBSCAN是一种著名的密度聚类算法,它基于一组邻域参数$(\epsilon,MinPts)$来刻画样本分布的紧密程度。

2.密度直达/可达/相连

给定数据集$D=\{X_1,X_2,...,X_N\}$,定义:

  1. $\epsilon$-邻域:$N_{\epsilon}\left({\mathbf{x}}_{i}\right)=\left\{{\mathbf{x}}_{j} \in \mathbb{D} | \operatorname{distance}\left({\mathbf{x}}_{i}, {\mathbf{x}}_{j}\right) \leq \epsilon\right\}$
  2. 核心对象core object:若$|N_{\epsilon}(X_i)| \ge MinPts$,则称$X_i$是一个核心对象。即:若$X_i$的$\epsilon$-邻域中至少包含$MinPts$个样本,则$X_i$是一个核心对象。
  3. 密度直达directly density-reachable:若$X_i$是一个核心对象,且$X_j \in N_{\epsilon} (X_i)$,则称$X_j$由$X_i$密度直达,记作$X_i \rightarrow X_j$
  4. 密度可达density-reachable:对于$X_i$和$X_j$,若存在样本序列$(P_0,P_1,...,P_m,P_{m+1})$,其中$P_0=X_i,P_{m+1}=X_j,P_s \in D$,如果$P_{s+1}$由$P_s$密度直达,则称$X_j$由$X_i$密度可达,记作$X_i \leadsto X_j$
  5. 密度相连density-connected:对于$X_i$和$X_j$,若存在$X_k$,使得$X_i$与$X_j$均由$X_k$密度可达,则称$X_i$与$X_j$密度相连,记作:$X_i \sim X_j$

3.

给定邻域参数$(\epsilon,MinPts)$,一个簇$C \subseteq D$是满足下列性质的非空样本子集:

  1. 连接性connectivity:若$X_i \in C,X_j \in C$,则$X_i  \sim X_j$
  2. 最大性maximality:若$X_i \in C$,且$X_i \leadsto X_j$,则$X_j \in C$

即一个簇是由密度可达关系导出的最大的密度相连样本集合。

4.算法的思想

若$X$为核心对象,则$X$密度可达的所有样本组成的集合记作$\mathbb{X}=\left\{\overrightarrow{\mathrm{x}}^{\prime} \in \mathbb{D} | \overrightarrow{\mathrm{x}} \leadsto \overrightarrow{\mathrm{x}}^{\prime}\right\}$。可以证明:$\mathbb{X}$就是满足连接性与最大性的簇。

于是DBSCAN算法首先任选数据集中的一个核心对象作为种子seed,再由此出发确定相应的聚类簇。

5.DBSCAN算法

输入:数据集$D={X_1,X_2,...,X_N}$,邻域参数$(\epsilon,MinPts)$

输出:簇划分$C=\{C_1,C_2,...,C_K\}$

算法步骤:

  1. 初始化核心对象集合为空集:$\Omega=\phi$
  2. 寻找核心对象:
    1. 遍历所有的样本点$X_i,i=1,2,...,N$,计算$N_{\epsilon}(X_i)$
    2. 如果$|N_{\epsilon}(X_i)| \ge MinPts$,则$\Omega = \Omega \cup \{X_i\}$
  3. 迭代:以任一未访问过的核心对象为出发点,找出有其密度可达的样本生成的聚类簇,直到所有核心对象都被访问为止。

6.注意

若在核心对象$o_1$的寻找密度可达的样本的过程中,发现核心对象$o_2$是由$o_1$密度可达的,且$o_2$尚未被访问,则将$o_2$加入$o_1$所属的簇,并且标记$o_2$为已访问。

对于$D$中的样本点,它只可能属于某一个聚类簇,因此在核心对象$o_i$的寻找密度可达的样本的过程中,它只能在标记为未访问的样本中寻找(标记为已访问的样本已经属于某个聚类簇了)。

7.优点

  1. 簇的数量由算法自动确定,无需人工指定。
  2. 基于密度定义,能够对抗噪音。
  3. 可以处理任意形状和大小的簇。

8.缺点

  1. 若样本集的密度不均匀,聚类间距差相差很大时,聚类质量较差。因为此时参数$\epsilon$和$MinPts$的选择比较困难。
  2. 无法应用于密度不断变化的数据集中。

31(1).密度聚类---DBSCAN算法的更多相关文章

  1. 密度聚类 - DBSCAN算法

    参考资料:python机器学习库sklearn——DBSCAN密度聚类,     Python实现DBScan import numpy as np from sklearn.cluster impo ...

  2. 31(2).密度聚类---Mean-Shift算法

    Mean-Shift 是基于核密度估计的爬山算法,可以用于聚类.图像分割.跟踪等领域.

  3. 聚类——密度聚类DBSCAN

    Clustering 聚类 密度聚类——DBSCAN 前面我们已经介绍了两种聚类算法:k-means和谱聚类.今天,我们来介绍一种基于密度的聚类算法——DBSCAN,它是最经典的密度聚类算法,是很多算 ...

  4. 吴裕雄 python 机器学习——密度聚类DBSCAN模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...

  5. 密度聚类 DBSCAN

    刘建平:DBSCAN密度聚类算法 https://www.cnblogs.com/pinard/p/6208966.html API 的说明: https://www.jianshu.com/p/b0 ...

  6. 基于密度聚类的DBSCAN和kmeans算法比较

    根据各行业特性,人们提出了多种聚类算法,简单分为:基于层次.划分.密度.图论.网格和模型的几大类. 其中,基于密度的聚类算法以DBSCAN最具有代表性.  场景 一 假设有如下图的一组数据, 生成数据 ...

  7. 机器学习(十)—聚类算法(KNN、Kmeans、密度聚类、层次聚类)

    聚类算法 任务:将数据集中的样本划分成若干个通常不相交的子集,对特征空间的一种划分. 性能度量:类内相似度高,类间相似度低.两大类:1.有参考标签,外部指标:2.无参照,内部指标. 距离计算:非负性, ...

  8. 机器学习(六)K-means聚类、密度聚类、层次聚类、谱聚类

    本文主要简述聚类算法族.聚类算法与前面文章的算法不同,它们属于非监督学习. 1.K-means聚类 记k个簇中心,为\(\mu_{1}\),\(\mu_{2}\),...,\(\mu_{k}\),每个 ...

  9. DBSCAN密度聚类算法

    DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-M ...

随机推荐

  1. Ceph分布式存储-总

    Ceph分布式存储-总 目录: Ceph基本组成及原理 Ceph之块存储 Ceph之文件存储 Ceph之对象存储 Ceph之实际应用 Ceph之总结 一.Ceph基本组成及原理 1.块存储.文件存储. ...

  2. usb fx2 cy68013 Cyapi使用心得

    Cyapi使用心得(1)--USB连接 用Cyapi也有一阵了,这个确实比EZusb的api好用,简单说下Cyapi的使用心得,在编程中应该注意的一些问题,毕竟,说起来,那个CYapi的说明文档讲的实 ...

  3. 【Webpack】373- 一看就懂之 webpack 高级配置与优化

    本文原载于 SegmentFault 社区专栏 前海拾贝 作者:JS_Even_JS 一.打包多页面应用 所谓打包多页面,就是同时打包出多个 html 页面,打包多页面也是使用 html-webpac ...

  4. 【CSS】340- 常用九宫格布局的几大方法汇总

    对,就是类似这样的布局~ 目录 1  margin负值实现 2  祖父和亲爹的里应外合 3  换个思路 - li生个儿子帮大忙 4 借助absolute方位值,实现自适应的网格布局 5 cloumn多 ...

  5. 【Java Web开发学习】Spring4整合thymeleaf视图解析

    [Java Web开发学习]Spring4整合thymeleaf视图解析 目录 1.简单介绍2.简单例子 转载:https://www.cnblogs.com/yangchongxing/p/9111 ...

  6. NodeJS4-8静态资源服务器实战_构建cli工具

    Cli(command-line interface),中文是 命令行界面,简单来说就是可以通过命令行快速生成自己的项目模板等功能(比较熟悉的是vue-cli脚手架这些),把上述写的包做成Cli工具. ...

  7. ajax结合sweetalert实现删除按钮动态效果

    目录 一.ajax结合sweetalert实现删除按钮动态效果 二.bulk_create批量插入数据 1. 一条一条插入 2. 批量插入 三.自定义分页器 一.ajax结合sweetalert实现删 ...

  8. 《Dotnet9》建站-本站使用的什么主题?

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  9. Django-Model 大全

      ORM 映射关系: 表名 <-------> 类名 字段 <-------> 属性 表记录 <-------> 类实例对象 创建表(建立模型) 实例:我们来假定 ...

  10. C# ling to sql 左表连接

    var begin_daily = from a in _postgreDbContext.tab1 join b in _postgreDbContext.tab2 on a.id equals b ...