algorithm - 分布式层次聚类

标签 algorithm cluster-analysis hierarchical-clustering

是否有任何算法可以帮助进行层次聚类? 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 .

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

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

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

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

关于algorithm - 分布式层次聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/84820/

相关文章:

algorithm - 条形图轴的正确通用计算

algorithm - 压缩文件文件夹的最有效算法

python - 制定一个算法,将电力单位分配给一周中的几天,并找出哪个是最少的

python - 如何找到 tensorflow 数组中的第二低值

python - 基于距离矩阵的词聚类

python - 为什么我的基于 minimax 算法的 tic-tac-toe 播放器并不完美?

估计聚合字符串相似度的 Java 库方法或算法?

python - 如何在 python 中执行具有权重/密度的集群?有权重的 kmeans 之类的东西?

python - 如何使用FLANN进行标记和聚类?

matlab - 二维矢量数据中的角点检测