基于密度的聚类算法:DBSCAN

这是一种基于密度的,可在噪声环境下聚类的无监督机器学习算法。

算法描述如下:

考虑一组在一个空间中待聚类的点,设参数 $\epsilon$ 为一个点的领域半径;

算法 DBSCAN 将这些点分成三类:核心点($Core\ Point$),可达点($Reachable\ Points$),外部点($Outiers$

1. 若一个点 $p$ 的领域 $\epsilon$ 内,至少有 $minPts$ 个点,则点 $p$ 为核心点;

2. 若一个点 $q$ 在核心点 $p$ 的领域 $\epsilon$ 内,则点 $q$ 为直接可达点(注意到直接可达点仅是相对于核心点而言);

3. 若存在一条路径 $p_1,\ ...,\ p_n$,其中 $p_1=p,\ \ p_n=q$,且每个 $p_{i+1}$ 都是 $p_i$ 的直接可达点,则点 $q$ 是点 $p$ 的可达点(注意到,这意味着 $p_1,\ ...\ p_{n-1}$ 都必须是核心点,$p_n$ 可能不是);

4. 其他对于任意核心点都不是可达点的点,则被成为外部点或噪声点。

现在,若点 $p$ 是核心点,则这个点集就会被分类为两部分:可达点和边缘点;

而根据定义,点的可达性($Reachability$)不是对称的概念,只有核心点可以到达非核心点,反之不可达,因此还需要一个概念:连通性($Connectness$),若对于点 $p$ 和点 $q$,存在点 $o$,使得 $p,\ q$ 都是点 $o$ 的可达点,则 $p,\ q$ 是密度连通的($Density-Connected$)。

算法 DBSCAN 基本流程:

1. 找到所有点的领域的点,并标记出哪些点是核心点;

2. 在邻域图中,找到核心点的连通组成,忽略所有非核心点;

3. 对于每个非核心点,若可归类于某个核心点的连通域,则直接归类,否则视为噪点。

算法复杂度:由于 DBSCAN 需要计算每两个点之间的距离,因此其复杂度为 $O(n^2)$

算法参数:在上面的描述中,可以发现 DBSCAN 需要两个参数,分别是邻域半径 $\epsilon$ 和密度参数 $minPts$

参考:

https://en.wikipedia.org/wiki/DBSCAN#Extensions

https://towardsdatascience.com/explaining-dbscan-clustering-18eaf5c83b31

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值