如何聚类大型数据集

How to cluster large datasets

我有一个非常大的文档数据集(5 亿),我想根据文档的内容对所有文档进行聚类。

解决这个问题的最佳方法是什么? 我尝试使用 k-means,但它似乎不合适,因为它需要一次所有文档才能进行计算。

是否有适用于较大数据集的聚类算法?

供参考:我正在使用 Elasticsearch 来存储我的数据。

据目前在 Coursera 教授 Cluster Analysis in Data Mining class 的 J. Han 教授介绍,最常见的文本数据聚类方法是:

  • k 均值和凝聚聚类的组合(自下而上)
  • 主题建模
  • 联合聚类。

但我不知道如何将这些应用于您的数据集。很大 - 祝你好运。

对于 k 均值聚类,我建议阅读 Ingo Feinerer (2008) 的 dissertation。这个人是 tm 包(在 R 中使用)的开发者,用于通过 Document-Term-matrices 进行文本挖掘。

论文包含有关应用 k-Means 的案例研究(第 8.1.4 章和第 9 章),然后是支持向量机分类器在某些文档(邮件列表和法律文本)上的应用。案例研究以教程形式编写,但数据集不可用。

该过程包含大量人工检查的中间步骤。

有 k-means 变体逐一处理文档,

MacQueen, J. B. (1967). Some Methods for classification and Analysis of Multivariate Observations. Proceedings of 5th Berkeley Symposium on Mathematical Statistics and Probability 1.

和重复抽取随机样本的 k-means 变体。

D. Sculley (2010). Web Scale K-Means clustering. Proceedings of the 19th international conference on World Wide Web

Bahmani, B., Moseley, B., Vattani, A., Kumar, R., & Vassilvitskii, S. (2012). Scalable k-means++. Proceedings of the VLDB Endowment, 5(7), 622-633.

但到头来,还是没用的老k-means。这是一种很好的量化方法,但对噪声不是很稳健,不能处理不同大小、非凸形状、层次结构(例如运动、棒球内部)等的集群。它是一种信号处理技术,而不是数据组织技术。

所以所有这些的实际影响是 0。是的,他们可以 运行 k-means 对疯狂的数据 - 但如果你不能理解结果,你为什么要这样做?