我想探索大数组中数据项之间的关系。每个数据项由多维向量表示。首先,我决定使用集群化。我有兴趣找到集群(数据向量组)之间的层次关系。我能够计算我的向量之间的距离。所以第一步我找到了最小的生成树。之后,我需要根据生成树中的链接对数据向量进行分组。但是在这一步我很不安——如何将不同的向量组合成层次聚类?我正在使用启发式方法:如果两个向量相连,并且它们之间的距离非常小 - 这意味着它们在同一个簇中,如果两个 wectors 链接但它们之间的距离大于阈值 - 这意味着它们在具有共同根簇的不同簇中。
但也许有更好的解决方案?
谢谢
PS 谢谢大家!
事实上,我尝试使用 k-means 和 CLOPE 的一些变体,但没有得到好的结果。
所以,现在我知道我的数据集的集群实际上具有复杂的结构(比 n 球体复杂得多)。
这就是为什么我想使用层次聚类。另外我猜集群看起来像 n 维连接(如 3d 或 2d 链)。所以我使用单链接策略。但是我很困扰 - 如何将不同的集群相互组合(在什么情况下我必须制作共同的根集群,在什么情况下我必须将所有子集群组合在一个集群中?)。我正在使用这样简单的策略:
- 如果集群(或向量)彼此太接近 - 我将它们的内容组合成一个集群(由阈值调节)
- 如果集群(或向量)彼此相距太远 - 我正在创建根集群并将它们放入其中
但是使用这种策略,我得到了非常大的簇树。我试图找到令人满意的阈值。但也许有更好的策略来生成集群树?
这是一张简单的图片,描述了我的问题: