分层聚类启发式

时间:2011-07-10 23:30:13

标签: algorithm graph cluster-analysis data-mining hierarchical-clustering

我想探索大数组中数据项之间的关系。每个数据项由多维向量表示。首先,我决定使用集群化。我有兴趣找到集群(数据向量组)之间的层次关系。我能够计算出矢量之间的距离。所以在第一步我找到最小生成树。之后,我需要根据生成树中的链接对数据向量进行分组。但是在这一步我感到不安 - 如何将不同的矢量组合成层次聚类?我正在使用启发式: 如果两个矢量相关联,它们之间的距离非常小 - 这意味着它们位于同一个群集 如果两个wector链接但它们之间的距离大于阈值 - 这意味着它们位于具有公共根群集的不同群集中 即可。

但也许有更好的解决方案?

由于

P.S。 谢谢大家!

事实上我曾尝试使用k-means和CLOPE的一些变体,但没有得到好的结果。

所以,现在我知道我的数据集群实际上具有复杂的结构(比n球更复杂)。

这就是为什么我想使用分层聚类。同样我猜测群集看起来像n维连接(如3d或2d链)。所以我使用单链接策略。 但是我很不安 - 如何将不同的集群相互组合( 在哪种情况下我要建立共同的根集群,在哪种情况下我要将所有子集合组合在一个集群中? )。 我正在使用这么简单的策略:

  
      
  • 如果群集(或向量)彼此距离太近 - 我将其内容合并为一个群集(由阈值调节)
  •   
  • 如果群集(或向量)彼此相距太远 - 我正在创建根群集并将其放入其中
  •   

但是使用这个策略我有非常大的集群树。我想找到满意的门槛。但也许可能有更好的策略来生成集群树?

这是一张简单的图片,描述了我的问题:

enter image description here

2 个答案:

答案 0 :(得分:4)

在这方面已经完成了很多的工作。通常的建议是从K-means聚类开始,除非你有充分的理由不这样做 - 但K-means 进行层次聚类(通常无论如何),所以你可能有充分的理由否则(虽然完全有可能通过第一次创建聚类来进行分层K-means,然后再做一次传递,使用每个聚类的质心作为一个点,并继续直到你拥有尽可能少的高级别根据需要聚类。

虽然有很多其他的聚类模型,并且有相当多的论文涉及相对的优势和劣势,例如:

  1. Pairwise Clustering and Graphical Models
  2. Beyond pairwise clustering
  3. Parallel pairwise clustering
  4. A fast greedy pairwise distance clustering. algorithm and its use in discovering thematic. structures in large data sets.
  5. Pairwise Clustering Algorithm
  6. Hierarchical Agglomerative Clustering
  7. 一点点谷歌搜索将会出现更多。从我从事集群工作的时候回顾一下我的研究目录,我有几十篇论文,而且我的回忆是,我看了很多很多,但没有留下来,很多更多的是,我甚至没有机会真正看过。

答案 1 :(得分:2)

整个动物园都有聚类算法。其中,最小生成树a.k.a.单链接聚类具有一些很好的理论性质,如在http://www.cs.uwaterloo.ca/~mackerma/Taxonomy.pdf。特别是,如果您采用最小生成树并删除长度超过某个阈值长度的所有链接,那么对于任何该大小的分组,所得到的点到群集的分组应具有最小的剩余链接总长度,原因与Kruskal的算法相同生成最小生成树。

但是,无法保证最小生成树最适合您的特定用途,因此我认为您应该从群集算法中记下实际需要的内容,然后选择基于此的方法,或尝试对您的数据进行各种不同的聚类算法,看看哪种算法最佳。