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

有帮助吗?

解决方案

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

自下而上称为层次凝聚聚类。这是一个简单且有详细记录的算法: http://nlp.stanford.edu/IR-book/html/htmledition/hierarchical-agglomerative-clustering-1.html.

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

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

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

此外,每个分割可以并行执行。k 均值的两个示例:

其他提示

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

C。F。奥尔森。“用于层次聚类的并行算法。” 并行计算, 21:1313-1325, 1995, 号码:10.1016/0167-8191(95)00017-I.

帕鲁纳克等人。描述一种受蚂蚁对巢穴排序方式启发的算法:

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

看看这篇文章,虽然有点过时,但可读性很强 奥尔森评论 (1995). 。从那时起,大多数论文都需要付费才能访问。:-)

如果您使用 R,我建议尝试 聚氯乙烯 它使用实现并行性 , ,另一个 R 模块。

您还可以看到 寻找并评估网络中的社区结构 由 Newman 和 Girvan 提出,他们提出了一种评估网络中社区的方法(以及基于此方法的一组算法)以及衡量网络划分为社区质量的方法(图模块化)。

您可以查看使用自组织映射(Kohonen 神经网络方法)所做的一些工作......那些人在 维也纳科技大学 在其不断增长的分层地图算法的分布式计算方面做了一些工作。

这有点接近你的聚类问题,所以它可能没有帮助,但我想不出更接近的东西;)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top