基于密度的DBSCAN聚类及其优化的OPTICS聚类(二)

1.OPTICS聚类算法

应用背景:如今整个数据集越来越复杂,都采用到了至少一个全局密度表征参数。如果对同一数据集中同时也存在这两种不同的全局密度表征参数的一个聚类簇或者是两个的嵌套簇,则所使用到的DBSCAN算法显然并没有做到高效地处理,因为DBSCAN聚类算法采用的是全局密度表征参数。为了能够进一步研究解决了这个实际应用问题,学者们甚至也已经提出和研究到了OPTICS算法。

算法原理:OPTICS聚类算法,其基本编程思想大致是和DBSCAN算法非常之类似,但OPTICS算法不是像DBSCAN算法一样显而易见地直接生成聚类结果,它是一种优化算法帮助选取初始距离阈值的算法。

两个新概念:定义了两个下面即将介绍的新概念,一个是核心距离,一个是最小的可达距离

此算法将大量数据放到一个有序列表中按照其他点离某一个核心点距离进行排序,寻找离该核心点距离最小距离的点,并将其放入结果队列中,按照此选取方法不断选取直至有序队列中的点全部都进入结果队列中,算法结束。最终生成的结果有序列表中的数据点都是聚类中相邻且集中的,我们可以通过该有序列表包含的信息主观选取密度阈值 ,结果队列中有序的对象列表也可以用其生成的横坐标为样本处理顺序,纵坐标为可达距离的决策图选取适当的MinPts 。我们可以根据固定的 \varepsilon,选取适当的MinPts ,再运用本文重点所述的DBSCAN密度聚类算法进行聚类。

核心距离:假设某一样本点P\epsilon D,如果给定了\varepsilonMinPts,那么使得P成为核心点的某邻域的最短长度称为P的核心距离。其中{N_{i}}^{\varepsilon }(P)表示的是N_{_{\varepsilon }}(P)中距离某一样本点Pi长的样本点。

cd(P)=\begin{cases} undefined& \text{ if } N_{\varepsilon }(P)\leq MinPts\\ d(P,N_{\varepsilon }^{MinPts}(P))& \text{ if } N_{\varepsilon }(P))> MinPts \end{cases}

最小可达距离:P,Q\epsilon D,对于给定的\varepsilonMinPts,Q关于P的可达距离定义为:

rd(Q,P)=\begin{cases} undefined& \text{ if } N_{\varepsilon }(P)\leq MinPts\\ max(cd(P),d(P,Q))& \text{ if } N_{\varepsilon }(P))> MinPts \end{cases}

流程图:

 

 2.DBSCAN和OPTICS聚类算法对比

前面介绍OPTICS算法定义时说过,因为DBSCAN聚类算法基于全局密度参数,使得该算法不能识别不同密度的簇。对于高密度簇的核心点,在较小的领域内就可以至少有个点;对于低密度簇的核心点,在较大的领域内才可以有个点。所以对初始参数更加敏感。OPTICS算法的提出就是为了克服DBSCAN聚类算法采用全局表征密度参数带来的聚类质量差问题。但OPTICS聚类算法对于距离阈值比较不敏感,所以我们将其设为无穷大。下面我们来看下给定3个聚类中心、随机生成的250个数据点,对于相同、不同密度的簇,DBSCAN算法的聚类效果,将密度相同的标准差设定为0.35,将密度不相同的标准差设定为0.35,0.1,0.6。生成以下两幅图:

图1 DBSCAN聚类算法处理密度相同数据效果图

 图2DBSCAN聚类算法处理密度不同数据效果图

 通过图1、图2的对比我们可以看出DBSCAN算法在处理不同密度簇聚类的时候出现了很多噪声点,即聚类质量不好。于是我们用OPTICS算法对于相同的数据点进行聚类处理得到图3,图4。

 图3 OPTICS聚类算法处理密度相同数据效果图

图4 OPTICS聚类算法处理密度不同数据效果图 

簇在坐标中表述为波谷(凹陷),并且波谷(凹陷)越深,簇越紧密。从图2-8的第二幅图可以看出,可达距离呈现三个波谷,也即表现为3个簇。我们可以直观看出图3的选取大概0.2~0.4时,样本被聚类成三类。图4的选取大概0.5~1时,样本被聚类成三类。

当你需要提取聚集的时候,参考Y轴和图像,自己设定一个合适的就可以聚类,也可以继续用DBSCAN聚类算法进行聚类。

3、DBSCAN和OPTICS算法的结合

OPTICS聚类算法不是直接得表现出数据属于某一类,而是直接为每一个聚类分析数据生成一个增广的簇排序,通过解析该簇有序的列表数据可以直接得到一个决策图。通过决策图可以得到一个广泛的距离阈值来克服全局参数所带来的缺陷。OPTICS算法可以运用在DBSCAN聚类算法之前用来距离阈值的选取,这样的做法可以大大提高DBSCAN算法的准确性。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DBSCAN算法的优化可以从多个方面进行考虑。首先,可以考虑使用更高效的数据结构来加速算法的执行。引用\[2\]中提到的dbscan包提供了一个使用k-d树的快速C++实现,可以在欧氏距离下进行高效的聚类。此外,还可以考虑使用其他基于索引的数据结构,如R树或球树,以支持更复杂的距离度量。 其次,可以考虑对算法的核心步骤进行优化。例如,在计算核心对象时,可以使用更高效的邻近搜索算法,如最近邻搜索或R树搜索,以减少计算复杂度。此外,可以使用并行计算技术来加速算法的执行,例如使用多线程或分布式计算。 另外,还可以考虑对算法的参数进行调优。DBSCAN算法的两个重要参数是邻域半径(ε)和最小邻居数(minPts)。通过合理选择这两个参数,可以获得更好的聚类结果。可以使用交叉验证或基于目标函数的优化方法来选择最佳的参数组合。 最后,还可以考虑使用其他改进的聚类算法,如HDBSCANOPTICS等。这些算法在DBSCAN的基础上进行了改进,可以处理更复杂的数据分布和噪声情况。 总之,DBSCAN算法的优化可以从数据结构、核心步骤、参数选择和算法改进等多个方面进行考虑,以提高算法的效率和准确性。 #### 引用[.reference_title] - *1* *3* [【DBSCAN——KD树优化】](https://blog.csdn.net/u011511601/article/details/81631893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [DBSCAN 优化算法](https://blog.csdn.net/chengyq116/article/details/89217575)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值