MapReduce中的层次聚类,以实现代表性链接社区的树形图

时间:2014-12-20 17:34:58

标签: java mapreduce cluster-analysis hierarchical-data dendrogram

我想使用层次聚类,在构建链接之间具有相似性 树形图,其中每个叶子是来自原始网络的链接,而分支代表链接 社区在MapReduce中使用层次聚类。任何参考方法算法都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

分层聚类不适用于MapReduce 永远

首先,MapReduce 设计一次处理一条记录,而距离计算一次至少需要两条记录。由于这个原因,将基于距离的算法隐藏到MapReduce中通常是一个坏主意;这就是为什么MapReduce现在几乎是昨天的新闻。没有人专注于MapReduce,除了预处理和过滤之外,它几乎没有任何限制。

此外,它没有多大帮助。层次聚类本身就很糟糕的原因是它在通常的实现中需要O(n^2)内存和O(n^3)运行时。 因此,分布式实现获得的任何增益只允许您处理稍大的数据集:如果添加8倍的计算机,则只能处理2倍大的数据集。这对于可扩展性来说显然是不令人满意的。此外,您还需要更多的磁盘空间。你真的希望有O(n^2)磁盘空间吗?

最后但并非最不重要的一点是,如果您确实拥有大数据,无论如何都无法查看树形图

如果您有大数据,请使用其他算法。或者抽样。

如果您的数据不是那么大,只需使用像ELKI这样的单主机实施,这相当快。最有可能的是,它将胜过基于群集的实现,因为它可以避免使用mapreduce获得的所有额外磁盘IO。