2009-10-08 59 views
8

我正在做一些测试,聚集大量的表示各种超文本文档的词频 - 逆文档频率的非常大的稀疏向量。考虑到数据集的比例,你建议用什么算法对数据进行聚类?矢量的维度将是> 3,并且矢量的数量可以是大约10 。我看了一下dbscan和光学算法。集群的数目并不是先验的。一个具有如此高维度的空间索引似乎很复杂。聚类巨大的向量空间

回答

3

我几乎和其他任何东西一样,使用简单的K均值聚类方法得到了几乎同样好的结果,而且它绝对比大多数替代方法快。我在成对集聚方面也取得了不错的成绩,但速度相对较慢。对于K均值,您不得不从一些估计数量的簇开始,但您可以随着算法对其进行调整。如果发现两个集群的距离太近,则可以减少集群的数量。如果您发现变化范围过大的群集,则尝试更多群集。我发现sqrt(N)是一个合理的起点 - 但我通常以10^7以上的文档而非10^9开头。对于10^9,可能会有所减少。

但是,如果这取决于我,那么我会非常努力地开始降低像Landmark MDS,然后这样的维度进行聚类。

+3

K-Means应该**总是**尝试群集*任何*时尝试的第一种分割技术。简单,高效并且大部分时间都能提供出色的结果。唯一的缺点是必须选择一个合适的K值。您可以随时尝试增加一系列K的计算集群间方差作为聚类质量的标准。然而,这在实践中并不适用。 – ldog 2009-10-08 22:06:31

2

我听说semantic hashing取得了优异的成绩。然而,深层次的信念网络很难实现。你可能想尝试min哈希(虽然这是一种概率方法)或locality sensistive hashing for euclidean spaces

一般来说,由于维度的诅咒和大多数项目彼此具有类似距离的事实,在这样的高维空间中聚类很困难。如果您事先通过SOM或PCA降低维度,则可以使用像K-Means这样的标准方法。

+0

感谢您的有趣链接。 – piotr 2009-10-11 12:22:34

2

如果分组数据我总是尝试至少这两种算法顺序如下:

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

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

如果既没有这两者的结果是令人满意的,我会跳槽,但,直到两者都已尝试过。

+0

是不是K表示EM的一个实例? – bayer 2009-10-09 14:24:55

+0

@bayer:不,他们肯定不是相同的算法,如果这就是你的意思。 K-Means是非参数的,但是EM是(这意味着EM声称,如果考虑中心极限定理,那么对于数据来说存在潜在的多变量高斯分布,这不是一个非常严格的假设)。据我所知,EM算法有时会被分组为一个元算法,而其他算法则属于这种算法。它实际上可以独立于我所见过的实现。 – ldog 2009-10-09 16:59:13