聚类层次聚类的自动编号

number automatically of cluster hierchical clustering

我有一个与层次聚类相关的问题。

我的数据集包含 10.000 个对象。当我继续进行基于分层聚类的聚类时,我获得了最后 30 个聚类。 我使用平均值 link 来这样做。 问题是我不明白算法是如何自动确定最终的簇数的?

谢谢

不知道你用的什么软件聚类,什么数据集。无论如何,在层次聚类中,要么决定你想要多少个聚类;或者,或者,接受错误度量或距离度量的什么值,这会为您提供聚类(当然还有聚类的数量)。

在 R 中,您可以使用内置的 cutree() 函数来执行此操作。它需要三个参数:

     cutree(tree, k = NULL, h = NULL)

Arguments:

    tree: a tree as produced by ‘hclust’. ‘cutree()’ only expects a
          list with components ‘merge’, ‘height’, and ‘labels’, of
          appropriate content each.

       k: an integer scalar or vector with the desired number of groups

       h: numeric scalar or vector with heights where the tree should
          be cut.

换句话说, tree 是您的聚类数据,k 是您想要的聚类数,h 是最大误差度量(转换为人类可读的比例)。通过查看绘图,您可以通过反复试验获得 h。 您指定 k 或 h。

这并不一定意味着算法总是提出对您有用的聚类。

层次聚类不决定聚类数。

无论您使用什么工具,都可以实现默认值如何将 HAC 树状图切割成分区。但这是非常具体的实现。

如何切割树状图有不同的逻辑。例如,如果您不执行最后 29 次合并,那么您将获得 30 个集群。或者你在距离阈值 x 处停止蛋白酥皮(但当然该值在很大程度上取决于数据)。或 HDBSCAN* 方法,或 ...

其实我在matlab代码中找到了答案。 在开始的评论中,他们定义了它:

DENDROGRAM(Z,P) 生成不超过 P 个叶节点的树状图, 通过折叠树的较低分支。要显示完整的树,请设置 P = 0。P 的默认值为 30。

谢谢