我想使用层次聚类,在构建链接之间具有相似性 树形图,其中每个叶子是来自原始网络的链接,而分支代表链接 社区在MapReduce中使用层次聚类。任何参考方法算法都将受到赞赏。
答案 0 :(得分:1)
分层聚类不适用于MapReduce 永远。
首先,MapReduce 设计一次处理一条记录,而距离计算做一次至少需要两条记录。由于这个原因,将基于距离的算法隐藏到MapReduce中通常是一个坏主意;这就是为什么MapReduce现在几乎是昨天的新闻。没有人专注于MapReduce,除了预处理和过滤之外,它几乎没有任何限制。
此外,它没有多大帮助。层次聚类本身就很糟糕的原因是它在通常的实现中需要O(n^2)
内存和O(n^3)
运行时。
因此,分布式实现获得的任何增益只允许您处理稍大的数据集:如果添加8倍的计算机,则只能处理2倍大的数据集。这对于可扩展性来说显然是不令人满意的。此外,您还需要更多的磁盘空间。你真的希望有O(n^2)
磁盘空间吗?
最后但并非最不重要的一点是,如果您确实拥有大数据,无论如何都无法查看树形图。
如果您有大数据,请使用其他算法。或者抽样。
如果您的数据不是那么大,只需使用像ELKI这样的单主机实施,这相当快。最有可能的是,它将胜过基于群集的实现,因为它可以避免使用mapreduce获得的所有额外磁盘IO。