密度聚类

1.DBSCAN

输入:数据集、邻域半径r、密度阈值minPts(范围内最少的点个数)
输出:聚类类别(包括噪声点和类别)

基本概念:
核心对象:若某个点领域点个数不少于密度阈值,则其为核心点。(即 邻域内点的个数不少于minPts)
ε邻域的距离阈值:设定的半径ε。
直接密度可达:若某点p在q的 邻域内,且q是核心点则p-q直接密度可达。
密度可达:若有一个带你的序列q0、q1、…、qk,对任意qi-qi-1是直接密度可达的,责成从q0到qk密度可达,这实际上是直接密度可达的“传播”。
密度相连:若从某核心点出发,点q和点k都是密度可达的,则称点q和点k是密度相连的。
边界点:属于某一个类的非核心点,不能发展下线了。
噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的。

步骤:
随机选一个点,如果这个点不是核心点,则标记为噪声点,否则,找到邻域内的所有核心点,再将邻域内的核心点不断扩展,找到对应的核心点,直到不可扩散,一个类别聚类完毕(类似于一个传销组织,不断扩散扩散,直到没人可扩散了),接下来找到没有被标记的点,继续扩散,直到找到所有的类。

优点:
不需要指定簇的个数;
可以聚类各种形状的簇;
擅长找到离群点(适用于异常值检测);
只需要两个参数;
聚类结果没有偏倚。
缺点:
两个参数对聚类结果影响很大;
高维数据中聚类困难;
sklearn中计算慢;
样本集聚类密度不均匀、聚类间距相差大、聚类质量差时不适用于DBSCAN

2.OPTICS

OPTICS算法可以看作是DBSCAN的改进方法,可以获得不同密度的聚类,并且对输入参数不敏感。

OPTICS中有两个新定义:
核心距离cd(xi):使xi成为核心点的最小邻域半径
可达距离rd(xi, xj):使xi为核心点,且xi和xj直接密度可达

选一个点,如果是核心点,计算核心距离与可达距离,将可达距离从小到大排序,选可达距离最小的点加入到簇中,不断扩散。

输入:样本集D, 邻域半径ε, 给定点在ε领域内成为核心对象的最小领域点数MinPts
输出:具有可达距离信息的样本点输出排序
参考:https://www.biaodianfu.com/optics.html
步骤:
1)创建两个队列,有序队列和结果队列。(有序队列用来存储核心对象及其该核心对象的直接可达对象,并按可达距离升序排列;结果队列用来存储样本点的输出次序。你可以把有序队列里面放的理解为待处理的数据,而结果队列里放的是已经处理完的数据)。
2)如果所有样本集D中所有点都处理完毕,则算法结束。否则,选择一个未处理(即不在结果队列中)且为核心对象的样本点,找到其所有直接密度可达样本点,如过该样本点不存在于结果队列中,则将其放入有序队列中,并按可达距离排序
3)如果有序队列为空,则跳至步骤2(重新选取处理数据)。否则,从有序队列中取出第一个样本点(即可达距离最小的样本点)进行拓展,并将取出的样本点保存至结果队列中(如果它不存在结果队列当中的话)。然后进行下面的处理。
4)判断该拓展点是否是核心对象,如果不是,回到步骤3(因为它不是核心对象,所以无法进行扩展了。那么就回到步骤3里面,取最小的。这里要注意,第二次取不是取第二小的,因为第一小的已经放到了结果队列中了,所以第二小的就变成第一小的了。)。如果该点是核心对象,则找到该拓展点所有的直接密度可达点。
5)判断该直接密度可达样本点是否已经存在结果队列,是则不处理,否则下一步。
6)如果有序队列中已经存在该直接密度可达点,如果此时新的可达距离小于旧的可达距离,则用新可达距离取代旧可达距离,有序队列重新排序(因为一个对象可能直接由多个核心对象可达,因此,可达距离近的肯定是更好的选择)。
7)如果有序队列中不存在该直接密度可达样本点,则插入该点,并对有序队列重新排序。
8)迭代2,3。
9)算法结束,输出结果队列中的有序样本点。
在这里插入图片描述

注:
D: 待聚类的集合
Q: 有序队列,元素按照可达距离排序,可达距离最小的在队首
O: 结果队列,最后输出结果的点集的有序队列

得到结果队列后,使用如下算法得到最终的聚类结果:

1)从结果队列中按顺序取出点,如果该点的可达距离不大于给定半径ε,则该点属于当前类别,否则至步骤2
2)如果该点的核心距离大于给定半径ε,则该点为噪声,可以忽略,否则该点属于新的聚类,跳至步骤1
3)结果队列遍历结束,则算法结束
在这里插入图片描述
OPTICS的核心思想:

较稠密簇中的对象在簇排序中相互靠近
一个对象的最小可达距离给出了一个对象连接到一个稠密簇的最短路径

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值