聚类巨大的矢量空间

时间:2009-10-08 18:51:10

标签: algorithm cluster-analysis

我正在做一些测试,聚集大量非常大的稀疏向量,表示各种超文本文档的术语 - 频率 - 逆文档 - 频率。考虑到数据集的比例,您建议使用什么算法来聚类这些数据?矢量的维数将> 3·10 5 并且载体的数量可以是大约10 9 。我看了一下dbscan和光学算法。群集的数量不为小修道院。具有如此高维度的空间索引似乎很复杂。

5 个答案:

答案 0 :(得分:3)

我几乎用其他任何东西的简单K-means聚类得到了几乎同样好的结果,而且它肯定比大多数替代方案更快。我已经通过成对结合获得了良好的结果,但它的速度相当慢。对于K-means,您必须从一些估计数量的聚类开始,但您可以随着算法调整它。如果您发现两个群集的距离太近,则会减少群集的数量。如果您发现具有过大变异范围的群集,则尝试更多群集。我发现sqrt(N)是一个合理的起点 - 但我通常更喜欢10 ^ 7个文件,而不是10 ^ 9。对于10 ^ 9,在某种程度上减少它可能是有意义的。

然而,如果由我决定,我会非常认真地开始使用Landmark MDS,然后进行聚类来降低维度。

答案 1 :(得分:2)

我听说semantic hashing取得了很好的成绩。然而,深刻的信念网很难实施。您可能想尝试min hashing(这是一种概率方法)或locality sensistive hashing for euclidean spaces

通常,由于尺寸的诅咒以及大多数物品彼此具有相似距离的事实,在这种高维空间中聚类是困难的。如果您事先通过SOM或PCA减少维数,那么像K-Means这样的标准方法可能会有效。

答案 2 :(得分:2)

当聚类数据时,我总是按此顺序尝试至少这两种算法:

  1. K-Means:尝试尽可能地调整结果。如果你能让K-Means为你工作并提供不错的结果,那么在任何其他算法时你几乎肯定不会做得更好。

  2. 期望最大化:K-means算法实际上被开发为EM算法的廉价且良好的替代方案。 EM算法理解起来更复杂,计算成本更高,但EM的结果非常好。您可以了解有关EM http://en.wikipedia.org/wiki/Expectation-maximization_algorithm的更多信息。有一个EM的OpenCv实现:http://opencv.willowgarage.com/documentation/expectation-maximization.html

  3. 如果这两者的结果都不令人满意,我会开始寻找其他地方,但,直到你尝试过两者。

答案 3 :(得分:1)

决策树在高维空间中有效工作很受欢迎。请查看Clustering Via Decision Tree Construction

另外,Randomized Forests是非常有效的学习者,如果你想玩它,可以OpenCV implementation exists

答案 4 :(得分:0)

K均值或期望最大化算法在具有高维的大型数据集上的计算非常昂贵。本文介绍了通过树冠群集进行有效的预群集:

Efficient clustering of high-dimensional data sets with application to reference matching

通常,标准K均值或EM的二次时间复杂度对于大数据而言效率不高,并且对于增长的数据集而言也具有很好的可扩展性。代替我会发现时间复杂度为O(n)或O(n * log(n))的算法。

此外,K均值不能保证全局收敛,但可以收敛到局部最小值。 EM总是收敛到全局最小值。 EM可以从数学上从K-means推导而来,作为其概率变异。