假设一组数据点,例如此处绘制的一个数据点(此图并不针对我的问题,而只是用作合适的示例):

从视觉上检查散点图,很明显数据点形成了两个“组”,其中一些随机点显然不属于这一点。

我正在寻找一种算法,这将使我能够:

  • 从两个或多个维度的数据集开始。
  • 从数据集中检测此类组,而没有任何关于可能存在多少(或任何)的知识
  • 一旦检测到小组,请“询问”组模型,如果新样本点似乎适合任何组
有帮助吗?

解决方案

有很多选择,但是如果您对新数据点属于特定混合物的概率感兴趣,我将使用一种概率方法,例如由最大似然或贝叶斯估计的高斯混合物建模。

最大似然估计 MATLAB中实现了混合模型.

您要求组件数量未知的要求使您的模型更加复杂。主要的概率方法是将事先提前放在混合物分布上,并通过某些贝叶斯方法进行估计。例如,请参阅 本文关于无限高斯混合模型. 。 DP混合模型将为您推断组件数量和每个元素所属的组件,这正是您想要的。另外,您可以对组件数量进行模型选择,但这通常不那么优雅。

DP混合模型模型有许多实现,但可能并不那么方便。例如,这是一个 MATLAB实施.

您的图表表明您是R用户。在这种情况下,如果您正在寻找预包装的解决方案,那么您的问题的答案就在于 群集分析的任务视图.

其他提示

我认为您正在寻找沿着 K-均值聚类算法.

您应该能够在大多数通用语言中找到足够的实现。

您需要一种聚类算法。所有这些都可以分为2组:

  1. 您指定组数(群集)-2个群集在示例中
  2. 算法尝试猜测正确数量的簇数

如果您想要第一个类型的算法,那么K-均值是您真正需要的。

如果需要第二类算法,则可能需要一种层次聚类算法之一。我从未实施过任何一个。但是,我看到了一种简单的方法来改善K均值的方式,因此不需要指定簇数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top