数千万维高维数据的聚类

3

我有一组5000万个文本片段,希望能够对它们进行聚类。维度可能在6万到10万之间。平均文本片段长度为16个单词。正如你所想象的那样,频率矩阵会非常稀疏。我正在寻找一个软件包/库/SDK,可以让我找到这些聚类。我以前尝试过CLUTO,但这似乎对CLUTO来说是一个非常重的任务。从我的在线研究中,我发现BIRCH是一种可以处理这些问题的算法,但遗憾的是,我无法在网上找到任何BIRCH实现软件(我只找到了一些特定项目的临时实现,缺乏任何形式的文档)。有什么建议吗?


我不确定,因为我想在空闲时间检查一下,但是MapReduce/Hadoop能帮助你吗? - HRgiger
我需要将聚类算法并行化才能使其工作,但我希望有现成的解决方案可用。 - Alexandros
看看R、Python、Java中的文本挖掘...这并不特别大,无论是N(#行)还是P(#维度),任何一个体面的文本挖掘/聚类包都应该能让你入门。 - Iterator
我可以问一下你想用这些聚类做什么吗?这会引出另一个问题,你需要使用哪种聚类方法。 - Tae-Sung Shin
4个回答

3
你可能会对使用TopSig表示的流式EM树算法感兴趣。这两个都来自我的博士论文,主题是大规模文档聚类。
我们最近在一台16核机器上对733百万个文档进行了聚类(http://ktree.sf.net)。索引这些文档大约需要2.5天时间,聚类需要15小时。
流式EM-tree算法可以在https://github.com/cmdevries/LMW-tree找到。它使用TopSig生成的二进制文档向量进行操作,可以在http://topsig.googlecode.com找到。
我之前写过一篇关于类似方法的博客文章,链接为http://chris.de-vries.id.au/2013/07/large-scale-document-clustering.html。然而,EM-tree更适合并行执行,并且产生更高质量的簇。
如果您有任何问题,请随时通过chris@de-vries.id.au与我联系。

1

我的教授用Java实现了BIRCH算法(实现)。它易于阅读,带有一些内联注释。


0

我想你更倾向于寻找类似全对搜索的东西。

这将为您提供相似记录的成对结果,直到达到所需阈值。之后,您可以使用图论的一些部分来提取聚类 - 将每个对视为边缘。然后提取连接组件将给您类似于单链接聚类的东西,团将给您完整链接聚类。

我刚刚发现了C ++中的BIRCH实现


0

尝试使用图分区算法。它可能会帮助您实现对高维数据的聚类。


你还必须尝试检查微阵列分析算法。在那里,它也可以处理高维数据。 - Phill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接