31(1).密度聚类---DBSCAN算法

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

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

一、DBSCAN算法

1.介绍

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

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

给定数据集D={X1,X2,...,XN},定义:

  1. ϵ-邻域:Nϵ(xi)={xjD|distance(xi,xj)ϵ}
  2. 核心对象core object:|Nϵ(Xi)|MinPts,则称Xi是一个核心对象。即:若Xiϵ-邻域中至少包含MinPts个样本,则Xi是一个核心对象。
  3. 密度直达directly density-reachable:Xi是一个核心对象,且XjNϵ(Xi),则称XjXi密度直达,记作XiXj
  4. 密度可达density-reachable:对于XiXj,若存在样本序列(P0,P1,...,Pm,Pm+1),其中P0=Xi,Pm+1=Xj,PsD,如果Ps+1Ps密度直达,则称XjXi密度可达,记作XiXj
  5. 密度相连density-connected:对于XiXj,若存在Xk,使得XiXj均由Xk密度可达,则称XiXj密度相连,记作:XiXj

3.

给定邻域参数(ϵ,MinPts),一个簇CD是满足下列性质的非空样本子集:

  1. 连接性connectivity:XiC,XjC,则XiXj
  2. 最大性maximality:XiC,且XiXj,则XjC

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

4.算法的思想

X为核心对象,则X密度可达的所有样本组成的集合记作X={xD|xx}。可以证明:X就是满足连接性与最大性的簇。

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

5.DBSCAN算法

输入:数据集D=X1,X2,...,XN,邻域参数(ϵ,MinPts)

输出:簇划分C={C1,C2,...,CK}

算法步骤:

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

6.注意

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

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

7.优点

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

8.缺点

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

 

 

 

posted @   nxf_rabbit75  阅读(648)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2018-11-23 参加Kaggle的经验总结(收藏)
2018-11-23 itertools模块(收藏)
2018-11-23 collections模块(收藏)
2018-11-23 1. 数据结构---链表
2018-11-23 查询set、dict、dict.keys()的速度对比
一、DBSCAN算法1.介绍2.密度直达/可达/相连3.簇4.算法的思想5.DBSCAN算法6.注意7.优点8.缺点
点击右上角即可分享
微信分享提示