确定性聚类方法

机器算法验证 聚类
2022-04-06 04:06:40

我需要一种确定性 [在某种意义上 - 对初始输入/初始种子的方式具有鲁棒性] 聚类方法来对可能是随机、正态或对数正态分布的值进行分组。谷歌主要出现k-means,这不是确定性的。固定随机输入(例如 R's set.seed)不如总是为特定集合返回相同结果的方法可取,因此我可以开始理解和预测它们的行为。这样的聚类方法是否存在?

4个回答

分层凝聚聚类是确定性的,除了使用单链接时的绑定距离。

DBSCAN 是确定性的,除了在极少数情况下对数据集进行排列。

k-means 是确定性的,除了初始化。您可以使用前 k 个对象进行初始化,然后它也是确定性的。

PAM 类似于 k-means。

...但可能还有 100 多种聚类算法!

我可以为您指出一个算法和一系列算法:

  • 该算法称为IGMM(增量高斯混合模型)。它对命令很健壮(但不是不敏感)。但是当数据以相同的顺序到达时,它总是给出相同的结果。
  • 满足您条件的一系列聚类算法是Spectral Clustering它们是批处理算法,即使顺序不同,也会为相同的数据集提供相同的结果。

编辑:此外,还有一些 K-Means 集群的确定性初始化方法,例如这个

根据定义,所有算法在给定输入的情况下都是确定性的。给定种子,任何使用伪随机数的算法都是确定性的。

您用作示例的 K-means 从随机选择的集群质心开始,以便找到最佳质心。除了初始化之外,该算法是完全确定的,因为您可以确保查看它的伪代码

在此处输入图像描述

没有什么能阻止您从非随机质心开始。我们使用随机质心,以确保选择不当的起点不会导致我们的结果不佳。其他“随机”算法也是如此:您可以以“确定性”方式使用它们,但在大多数情况下,这不是明智的做法。

在 k-means 的情况下,该算法确定性地最小化集群内的平方和,以找到最佳的集群解决方案。不幸的是,它对算法的初始化方式很敏感。在大多数情况下,聚类问题没有明确的解决方案,因此我们经常希望使用随机程序来加强它们。

想象一下,您使用了一些确定性的层次聚类算法。想象一下,它从第一次观察开始按顺序遍历您的数据。如果第一个案例是异常值会发生什么?另一方面,如果您在随机点对其进行多次初始化,则该过程不太容易出现数据问题。

此外,如果您多次运行非“确定性”算法,然后使用多数投票为每个案例选择结果中最常出现的类,那么最终输出也将具有高度确定性。

如果我要重新解释您对“确定性”的描述,这对我来说更像是一种纵向的“确认性”聚类分析——重要的例外是您没有将时间序列考虑明确地整合到您的模型中。一旦感觉到它们所要描述的“空间”已经被充分理解以消除对探索性方法的需要,就会部署确认性聚类方法。基于物种的分类学就是一个例子。

纵向集群解决方案终于在文献中得到了应有的关注。据我所知,最早的工作可以追溯到 80 年代 Pieter Kroonenberg 的三模算法。但是最近有很多有趣的研究涉及隐藏的马尔可夫链,例如,Steve Scott 的论文或 Oded Netzer 的论文文章都使用 HMM、分层、非基于矩的信息理论方法,例如 Andreas Brandmaier 的置换分布聚类以及章节在 Aggarwal 和 Reddy 的著作Data Clustering中致力于纵向聚类算法

所有这些方法要记住的关键是从 Kroonenborg 的多模式矩阵概念化中借用,因为你不能让所有模式同时移动。这意味着您要做的最后一件事是使用每个新数据集重新初始化算法。相反,您想要“修复”,例如,三种模式中的两种,允许第三种模式在一种实验性“设计”中发生变化。通过这种方式,您可以更仔细地研究动态变化如何影响数据中的特定细分市场。

无论采用何种算法,都建议使用此方法。

* 编辑 * 实际上,我对 Kroonenberg 的工作是最早的 3 模式分析是错误的。Ledyard Tucker 可能在 1966 年写了原始文章,关于三模因子分析的一些数学笔记