【问题标题】:finding very close points on plane - approximate clustering algorithm needed在平面上找到非常接近的点 - 需要近似聚类算法
【发布时间】:2013-07-08 07:55:28
【问题描述】:

我在一个平面(一个城市)上有很多点(纬度和经度),我想找到两个集群。簇 1 是杂乱无章的点,簇 2 是其他所有点。

我知道问题的定义并不准确。唯一定义的是我需要正好 2 个集群。在 N 个点中,有多少最终在集群 1 或集群 2 中没有定义。

主要目的是识别彼此非常接近的点并将它们与其他点分开(分布更均匀)

我能想到的最好的是以下算法:

1. For each point, Calculate the sum of the square distances to all other points.
2. Run the k-means with k=2 on these square distances

距离的平方(甚至更高阶)应该有助于提高维度。然而,该算法将偏向城市中心附近的点。它很难在城市边缘找到集群。

关于如何避免这个问题的任何建议?以及任何其他改进此算法的建议

【问题讨论】:

  • 也许这个对你有帮助:stackoverflow.com/questions/17112719/…
  • 集群1需要是连通空间吗?在街道的意义上(没有集群 2 的点),或者类似的点对齐(没有集群 2 的点)?
  • @fordprefect 哇,我希望它比答案中提供的描述更简单。由于我不是数学家,所以我需要一些时间才能理解所讲的内容。
  • @MrK - 我不确定我是否理解,这些只是点,这些点之间没有边的概念。但是,如果您愿意,您可以将整个图视为完全连通的。

标签: algorithm k-means approximation


【解决方案1】:

我会建议以下几点:

关键概念

计算距离小于给定值的相邻点的数量。

半正式描述

  1. 对于每个点P,距离小于给定值d_cutoff 的相邻点的计数nc(P)。
  2. 将nc(P_i) 大于阈值thres_count 的所有点P_i 聚类到聚类#1。
  3. 对于集群 #1 中的每个 P_i,添加其近邻,即将 Q 和 d(Q, P_i) < d_cutoff 指向同一个集群 #1。
  4. 将簇 #2 设置为簇 #1 的补集。

算法角度

  1. 构建一个无向图G=(V, E),其中您的点是顶点集V,每对点之间的边之间的距离小于d_cutoff。
  2. 从图中deg(v) < thres_count 和deg(w) < thres_count 处删除所有边e=(v,w)。
  3. G 的孤立顶点形成簇 #2,补集是簇 #1。

启发式选择d_cutoff

构建点集的最小生成树 (mst)。边缘长度的频率分布应暗示合适的截止值。短的成对距离将首先合并到 mst 中。因此,对于具有自然聚类的点集,在边长的有序序列中应该至少存在一个明显的间隙。因此将一组 mst 边长划分为少量相邻的区间,以自然的方式对这些区间进行排序。计算每个间隔中有多少实际距离值。考虑区间序数与其距离值计数之间的映射。连续参数的函数值之间的较大增量建议将下区间距离的上限设为d_cutoff。

【讨论】:

  • 感谢您的回答。该算法肯定会摆脱我的算法偏向中心点的问题。该算法看起来是一个很好的近似值。只是麻烦在于选择 d_cutoff 和 thres_count。具体选择 d_cutoff 会很困难。太低,我们可能无法在集群中获得足够的分数。太高了,我们可能会在第 3 步(您的半正式描述)中链接太多点
  • @arahant:我在答案中添加了一个部分来解决这个问题。
【解决方案2】:

由于集群 1 中的点彼此靠近,我认为基于密度的聚类算法可能会有所帮助。您可以尝试OPTICS algorithm,它类似于 DBSCAN,但它知道不同的密度,并且可以由用户指定集群的数量。

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2010-10-24
    • 2015-04-28
    相关资源
    最近更新 更多