使用哪种最佳聚类算法来聚类超过100维(有时甚至是1000)的数据。如果您了解C,C ++或C#中的任何实现,我将不胜感激。
答案 0 :(得分:3)
这在很大程度上取决于您的数据。有关常见问题,请参阅维度诅咒。最近的研究(Houle等人)表明你不能真正按照数字去做。可能存在数千个维度和数据集群,当然甚至只有一维数据也不会聚类。这主要是信噪比问题。 这就是为什么例如TF-IDF向量的聚类效果相当好,特别是余弦距离。
但关键是你首先需要了解数据的性质。然后,您可以选择适当的距离函数,权重,参数和...算法。
特别是,您还需要了解 构成群集的方式。有许多定义,特别是对于高维数据。它们可能在子空间中,它们可能会或可能不会被任意轮换,它们可能重叠或不重叠(例如,k-表示不允许重叠或子空间)。
答案 1 :(得分:0)
我知道一种叫做矢量量化的东西,它是一个很好的算法来聚类多维度的螺柱。
答案 2 :(得分:0)
我在100维的数据上使用了k-means,这是非常常见的,所以我确信这是任何语言的实现,最糟糕的情况 - 你自己很容易实现。
答案 3 :(得分:0)
在尝试聚类之前,尝试一些降维技术(如主成分分析或自动关联神经网络)也是值得的。它可以将一个巨大的问题变成一个小得多的问题。
之后,去k-means或高斯混合。
答案 4 :(得分:0)
LMW-tree项目中的EM-tree和K-tree算法可以聚类这样的高维问题。它以C ++实现,支持许多不同的表示。
我们有新的算法聚类由LSH /随机投影创建的二进制向量,或者发出二进制向量的任何其他向量,可以通过汉明距离进行相似性比较。