【问题标题】:Group detection in data sets数据集中的组检测
【发布时间】:2011-01-04 08:54:05
【问题描述】:

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

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

我正在寻找一种算法,它可以让我:

  • 从二维或更多维度的数据集开始。
  • 在事先不知道可能存在多少(或如果有)的情况下从数据集中检测此类组
  • 一旦检测到组,“询问”组的模型,如果新的样本点似乎适合任何组

【问题讨论】:

    标签: algorithm statistics probability feature-detection


    【解决方案1】:

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

    mixtures models is implemented in Matlab 的最大似然估计。

    您对组件数量未知的要求使您的模型更加复杂。主要的概率方法是在混合分布上先放置一个狄利克雷过程,并通过一些贝叶斯方法进行估计。例如,请参阅this paper on infinite Gaussian mixture models。 DP 混合模型将为您推断组件的数量以及每个元素所属的组件,这正是您想要的。或者,您可以对组件的数量执行模型选择,但这通常不太优雅。

    DP混合模型模型的实现有很多,但它们可能不那么方便。例如,这里是Matlab implementation

    您的图表表明您是 R 用户。在这种情况下,如果您正在寻找预先打包的解决方案,您的问题的答案就在此Task View for cluster analysis

    【讨论】:

      【解决方案2】:

      我认为您正在寻找类似于k-means clustering algorithm 的东西。

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

      【讨论】:

        【解决方案3】:

        您需要一种聚类算法。它们都可以分为 2 组:

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

        如果您想要第一种类型的算法,那么 K-Means 就是您真正需要的。

        如果您想要第二种类型的算法,那么您可能需要一种层次聚类算法。我从来没有实施过它们中的任何一个。但我看到了一种简单的方法来改进 K-means,这样就不需要指定集群的数量。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-22
          • 2021-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多