ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – dbscan – 最大集群跨度的设置限制

2019-10-04 11:55:55  阅读:415  来源: 互联网

标签:python algorithm data-mining cluster-analysis dbscan


根据我对DBSCAN的理解,您可以指定一个100米的ε,并且 – 因为DBSCAN在查找群集时会考虑密度可达性而不是直接的密度可达性 – 最终得到一个最大距离的群集在任何两点之间是> 100米在更极端的可能性中,似乎可以设置100米的epsilon并最终得到1公里的簇:
see [2][6] in this array of images from scikit learn作为可能发生的时间的示例. (我非常愿意被告知我是一个完全白痴,并且误解了DBSCAN,如果这就是这里发生的事情.)

是否存在基于密度的算法,如DBSCAN,但是考虑到群集中任意两点之间的最大距离的某种阈值?

解决方法:

DBSCAN确实没有对集群施加总大小限制.

epsilon值最好解释为分隔两个簇(最多可包含minpts-1个对象)的间隙的大小.

我相信,你实际上甚至都没有寻找聚类:聚类是发现数据结构的任务.结构可以更简单(例如k均值)或复杂(例如通过分层聚类和k均值发现的任意形状的聚类).

您可能正在寻找vector quantization – 将数据集减少到较小的代表集 – 或者set cover – 找到给定集合的最佳覆盖 – 而不是.

但是,我的印象是你不确定你需要什么以及为什么.

DBSCAN的一个优势在于它具有密度连接组件形式的结构的数学定义.这是一个强大的(除了一些罕见的边界情况)明确定义的数学概念,DBSCAN算法是发现这种结构的最佳效率算法.

然而,直接密度可达性不定义有用的(分区)结构.它只是不将数据分区为不相交的分区.

如果您不需要这种强大的结构(即您不像“结构发现”那样进行聚类,而只是想像在矢量量化中那样压缩数据),那么您可以尝试“冠层预聚类”.它可以看作是为聚类设计的预处理步骤.本质上,它就像DBSCAN,除了它使用两个epsilon值,并且不保证结构在任何方面都是最优的,但在很大程度上取决于数据的排序.如果你然后适当地预处理它,它仍然是有用的.除非您处于分布式设置中,否则冠层预聚类至少与完整的DBSCAN运行一样昂贵.由于松散的要求(特别是“簇”可能重叠,并且预期对象属于多个“簇”),因此更容易并行化.

哦,您可能也只是在寻找完整的链接层次聚类.如果将树形图切割到所需高度,则生成的簇应在所有两个对象之间具有所需的最大距离.唯一的问题是层次聚类通常是O(n ^ 3),即它不能扩展到大数据集. DBSCAN在O(n log n)中以良好的实现方式运行(具有索引支持).

标签:python,algorithm,data-mining,cluster-analysis,dbscan
来源: https://codeday.me/bug/20191004/1852808.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有