高维数据聚类

本文关键字:聚类 数据 高维 | 更新日期: 2023-09-27 18:15:15

为了对超过100维(有时甚至是1000维)的数据进行聚类,最好的聚类算法是什么?

高维数据聚类

如果你知道任何C, c++,尤其是c#的实现,我将不胜感激。

这在很大程度上取决于你的数据。有关常见问题,请参见维度的诅咒。最近的研究(Houle et al.)表明,你不能只看数字。可能有数千个维度,数据很好地聚集在一起,当然,甚至有一维的数据不会聚集在一起。这主要是一个信噪比问题。这就是为什么例如TF-IDF向量的聚类工作得相当好,特别是与余弦距离。

但关键的一点是,首先需要理解数据的性质。然后,您可以选择适当的距离函数,权重,参数和…算法。特别是,您还需要知道是什么构成了您的集群。有许多定义,特别是对于高维数据。它们可能在子空间中,它们可能会或可能不会被任意旋转,它们可能会重叠或不重叠(例如,k-means不允许重叠或子空间)。

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

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

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

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

lw -tree项目中的EM-tree和K-tree算法可以聚类这样的高维问题。它是用c++实现的,并支持许多不同的表示。

我们有新的算法聚类由LSH/Random projection创建的二进制向量,或者其他任何可以通过Hamming距离进行相似性比较的二进制向量。