是否有任何算法可以帮助进行分层聚类? 谷歌的map-reduce只有一个k-clustering的例子。在分层聚类的情况下,我不确定如何在节点之间划分工作。 我找到的其他资源是:http://issues.apache.org/jira/browse/MAHOUT-19 但是,使用哪种算法并不明显。
答案 0 :(得分:17)
首先,您必须决定是自下而上还是自上而下构建层次结构。
自下而上称为分层凝聚聚类。这是一个简单,记录良好的算法:http://nlp.stanford.edu/IR-book/html/htmledition/hierarchical-agglomerative-clustering-1.html。
分配自下而上的算法很棘手,因为每个分布式流程都需要整个数据集来选择适当的群集。它还需要一个当前级别的集群列表,因此它不会将数据点添加到同一级别的多个集群。
自上而下的层次结构构造称为Divisive clustering。 K-means是决定如何拆分层次结构节点的一种选择。本文着眼于节点分裂的K均值和主方向分裂分区(PDDP):http://scgroup.hpclab.ceid.upatras.gr/faculty/stratis/Papers/tm07book.pdf。最后,您只需将每个父节点拆分为相对平衡的子节点。
自上而下的方法更容易分发。在第一个节点拆分后,创建的每个节点都可以运送到分布式进程再次拆分等等......每个分布式进程只需要知道它正在拆分的数据集的子集。只有父进程知道完整数据集。
此外,每个拆分可以并行执行。 k-means的两个例子:
答案 1 :(得分:2)
Clark Olson回顾了几种用于分层聚类的分布式算法:
℃。 F.奥尔森“并行算法 分层聚类。“并行 计算,21:1313-1325,1995,doi:10.1016/0167-8191(95)00017-I。
Parunak等人。描述一个灵感来自蚂蚁如何对巢穴进行排序的算法:
小时。 Van Dyke Parunak,Richard Rohwer, Theodore C. Belding和Sven 布鲁克纳:“动态下放 任意时间层次聚类。“在 PROC。第四届工程自组织系统国际研讨会 (ESOA),2006,doi:10.1007/978-3-540-69868-5
答案 2 :(得分:2)
如果有点review by Olson (1995),请查看这个可读性。从那以后,大多数论文都要求收费。 : - )
答案 3 :(得分:1)
您还可以看到Newman和Girvan的Finding and evaluating community structure in networks,他们提出了评估网络社区(以及基于此方法的算法集)和网络划分为社区质量(图形模块化)的方法。
答案 4 :(得分:0)
你可以看看自组织地图(Kohonen的神经网络方法)正在进行的一些工作...... Vienna University of Technology的人们已经做了一些关于他们不断增长的分层地图算法的分布式计算的工作。 / p>
这有点在你的聚类问题的边缘,所以它可能没有用,但我想不出更接近的东西;)