有效的聚类算法

时间:2017-11-16 20:05:57

标签: algorithm grouping cluster-analysis

我需要帮助(最好是一个完整的算法,但任何提示或引用都会受到赞赏),并带有以下算法问题:

我们有一组N个元素。我可以定义任何两个元素之间的距离,它满足official documentation。我需要根据以下规则将这些元素分组为不相交的子集(每个元素属于一个子集):

  1. 每个子集中任意两个元素之间的最大距离不超过指定的阈值。

  2. 子集的数量尽可能少。

  3. 如果有多个可能的分组满足条件(1)和(2),则每个子集中任意两个元素之间的最大距离应尽可能小。

  4. 示例:

    假设我们在数字轴上有以下几点: 1,11,12,13,23 。距离很简单,点之间的差异。我们的距离阈值为10.满足条件(1)和(2)的两种可能的分组是:(1,11),(12),(13,23)(1) ,(11,12,13),(23)。但是,条件(3)表明后一种分组是正确的。

1 个答案:

答案 0 :(得分:1)

在1维数据中,对数据进行排序,然后分成所需的数量,然后移动bin边界进行优化。

在更高的维度上变得更有趣。在那里,问题将是NP难。因此找到最佳状态将是昂贵的。您确实可以在此处使用群集:使用完全链接群集。对于O(n²)和O(n)存储器方法,请尝试CLINK。但根据我的经验,您需要在洗牌数据上多次运行此算法,以获得良好的解决方案。