22

是否有任何算法可以帮助进行层次聚类?Google 的 map-reduce 只有一个 k-clustering 的例子。在层次聚类的情况下,我不确定如何在节点之间划分工作。我发现的其他资源是:http: //issues.apache.org/jira/browse/MAHOUT-19 但是使用了哪些算法并不明显。

4

5 回答 5

17

首先,您必须决定是自下而上还是自上而下构建层次结构。

自下而上称为分层凝聚聚类。这是一个简单的、有据可查的算法: http: //nlp.stanford.edu/IR-book/html/htmledition/hierarchical-agglomerative-clustering-1.html

分发自下而上的算法很棘手,因为每个分布式进程都需要整个数据集来选择合适的集群。它还需要当前级别的集群列表,因此它不会将数据点添加到同一级别的多个集群。

自上而下的层次结构称为分裂聚类K-means是决定如何拆分层次结构节点的一种选择。本文着眼于节点分裂的 K-means 和主方向分裂分区 (PDDP):http: //scgroup.hpclab.ceid.upatras.gr/faculty/stratis/Papers/tm07book.pdf。最后,只需将每个父节点拆分成相对均衡的子节点即可。

自上而下的方法更容易分发。在您的第一个节点拆分后,创建的每个节点都可以运送到分布式进程以再次拆分,依此类推......每个分布式进程只需要知道它正在拆分的数据集的子集。只有父进程知道完整的数据集。

此外,每个拆分可以并行执行。k-means 的两个例子:

于 2008-10-10T18:45:39.210 回答
2

Clark Olson 回顾了几种用于层次聚类的分布式算法:

CF奥尔森。“分层聚类的并行算法”。并行计算, 21:1313-1325, 1995, doi:10.1016/0167-8191(95)00017-I

帕鲁纳克等人。描述一个受蚂蚁如何分类巢穴的启发的算法:

H. Van Dyke Parunak、Richard Rohwer、Theodore C. Belding 和 Sven Brueckner:“动态分散的随时分层聚类”。在 过程中。第四届工程自组织系统(ESOA)国际研讨会,2006,doi:10.1007/978-3-540-69868-5

于 2008-10-09T18:35:10.460 回答
2

如果Olson (1995) 的评论有点过时,请查看这篇非常易读的评论。从那时起,大多数论文都需要付费才能访问。:-)

如果您使用 R,我建议您尝试使用另一个 R 模块snow实现并行性的pvclust 。

于 2009-05-12T16:56:13.163 回答
0

你可以看看自组织地图(Kohonen 的神经网络方法)所做的一些工作......维也纳科技大学的人已经完成了一些关于他们不断增长的分层地图算法的分布式计算的工作。

这有点在你的聚类问题的边缘,所以它可能无济于事,但我想不出更接近的东西;)

于 2008-09-17T16:28:22.023 回答