基于度量/密度的聚类/分组
Posted
技术标签:
【中文标题】基于度量/密度的聚类/分组【英文标题】:Metric/density based clustering/grouping 【发布时间】:2013-01-31 19:50:33 【问题描述】:我有有限数量的点(云),并在其上定义了一个度量。我想在这个云中找到最大数量的集群,这样:
1) 一个簇中任意两点之间的最大距离小于给定的 epsilon (const)
2) 每个簇中恰好有 k (const) 个点
我查看了各种不同的聚类方法,限制内部最大距离的聚类不是问题(基于密度)。 2)约束和要求找到“最大数量的簇 s.t.”不过似乎有问题。对有效解决方案有何建议?
谢谢你, 啊~
【问题讨论】:
K-means algorithm variation with equal cluster size 的可能重复项 不是重复的。这个问题实际上是完全不同的。 【参考方案1】:鉴于您的限制,可能没有解决方案。实际上,这种情况可能经常发生……
最明显的情况是当您没有多个 k
点时。
但如果epsilon
设置得太低,可能会有一些点无法再放入集群中。
我认为您需要重新考虑您的要求和问题,而不是寻找一种算法来解决可能无法满足的不合理的硬要求。
还要考虑您是否真的需要找到保证的最大值,或者只是一个好的解决方案。
有一些相当明显的方法至少可以快速找到一个好的近似值。
【讨论】:
你能具体说明一下明显的方法吗?对我来说,它们(不幸的是)并不明显。此外,如果不满足约束(无解),则 epsilon 值将增加并重新运行查询(如果超过 k 点)。【参考方案2】:其实我和@Anony-Mousse 的印象是一样的:你还没有理解你的问题和需求。
如果您希望集群大小为k
,那么您将获得多少集群是毫无疑问的:显然是n /k
。所以你可以尝试使用一个 k-means 变体来产生与例如相同大小的集群。在本教程中描述:Tutorial on same-size k-means 并将所需的集群数设置为 n/k
。
请注意,这不是一个特别明智或好的聚类算法。它做一些事情来满足约束,但集群从集群分析的角度来看并没有真正意义。这是约束满足,而不是聚类分析。
为了也满足您的 epsilon 约束,您可以从这个初始解决方案开始(这可能是 @Anony-Mousse 所说的“显而易见的方法”)并尝试执行相同类型的优化 -交换元素以满足 epsilon 条件。
您可能需要多次重启,因为可能没有解决办法。
另见:
Group n points in k clusters of equal size
K-means algorithm variation with equal cluster size
对于本质上多余的问题。
【讨论】:
感谢您的回复。大多数点不属于任何集群,因此集群到 k 个相同大小的集群对我没有帮助(我实际上发现了你之前链接的那些问题)。我也许可以将 DBScan 与我的 epsilon 值一起使用,然后拆分 >= 2*k 的集群。听起来它可以工作! 我得到的印象是您不是在寻找聚类分析,而是在寻找Maximum set cover problem 的变体。请参阅:聚类试图找到结构,而您有一个预定义的结构,并使用此结构寻找可能的最大覆盖。 谢谢!最后的回复确实帮助我更好地理解了我的问题。以上是关于基于度量/密度的聚类/分组的主要内容,如果未能解决你的问题,请参考以下文章
基于密度的聚类方法 Density-based clustering