【问题标题】:High Dimensional Data Clustering高维数据聚类
【发布时间】:2012-01-02 00:12:51
【问题描述】:

为了对超过 100 个维度(有时甚至 1000 个维度)的数据进行聚类,最好使用哪些聚类算法。如果您知道 C、C++ 或特别是 C# 中的任何实现,我将不胜感激。

【问题讨论】:

  • 你有多少个数据点,多少个集群?有些点有已知的类标签吗?如何使用集群?对于如此广泛的可能性,没有“最佳算法”。或许看过Cluster analysis的上半部分,然后再问。

标签: c# algorithm cluster-analysis data-mining


【解决方案1】:

我知道一种叫做矢量量化的东西,它是一种很好的算法,可以对具有许多维度的 stuf 进行聚类。

【讨论】:

    【解决方案2】:

    我在 100 维的数据上使用了 k-means,这很常见,所以我确信在任何语言中都有实现,最坏的情况 - 很容易自己实现。

    【讨论】:

      【解决方案3】:

      在尝试聚类之前,可能还值得尝试一些降维技术,例如主成分分析或自动关联神经网络。它可以把一个大问题变成一个小得多的问题。

      之后,使用 k-means 或混合高斯。

      【讨论】:

      • 你能给我一些关于神经网络方法的信息吗?但我想它必须经过训练?
      • 这可能已经过时了,但我刚刚看到了。是的,就像任何网络一样,你需要训练它。这个想法是你使用 N 个节点的内部层,N
      【解决方案4】:

      这在很大程度上取决于您的数据。有关常见问题,请参阅维度诅咒。最近的研究(Houle 等人)表明,你不能真正按照数字来计算。可能有上千个维度,数据聚类很好,当然也有一维数据不聚类。这主要是信噪比的问题。 这就是为什么例如 TF-IDF 向量的聚类效果很好,尤其是在余弦距离上。

      但关键是您首先需要了解数据的性质。然后,您可以选择适当的距离函数、权重、参数和...算法。

      特别是,您还需要知道什么 为您构成了一个集群。有很多定义,特别是对于高维数据。它们可能在子空间中,它们可能会或可能不会被任意旋转,它们可能重叠或不重叠(例如,k-means,不允许重叠或子空间)。

      【讨论】:

        【解决方案5】:

        LMW-tree 项目中的 EM-tree 和 K-tree 算法可以对这样的高维问题进行聚类。它是用 C++ 实现的,支持多种不同的表示形式。

        我们有新的算法来聚类由 LSH/随机投影创建的二进制向量,或者任何其他可以通过汉明距离比较相似度的二进制向量。

        【讨论】:

          猜你喜欢
          • 2011-11-17
          • 2012-01-22
          • 2013-05-17
          • 2013-04-15
          • 2021-08-24
          • 2013-09-20
          • 2012-12-05
          • 2018-07-15
          • 2017-01-26
          相关资源
          最近更新 更多