Java 在地图上实施DBSCAN时需要帮助

Java 在地图上实施DBSCAN时需要帮助,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我试图在MR上实现DBSCAN,并使用我粘贴在下面的链接中的直觉 http://codingwiththomas.blogspot.com/2012/05/distributed-dbscan-intuition.html 我的问题是如何计算初始距离矩阵。我不想仅仅为了计算距离矩阵而运行hadoop作业并将其存储在内存中,因为我不是一个好的设计。任何建议 感谢您阅读我的博客 是的,要计算的距离矩阵非常困难 我已经应用了minhash集群(mahout也有一个实现)来查找非常相似的向量。所以你

我试图在MR上实现DBSCAN,并使用我粘贴在下面的链接中的直觉

http://codingwiththomas.blogspot.com/2012/05/distributed-dbscan-intuition.html


我的问题是如何计算初始距离矩阵。我不想仅仅为了计算距离矩阵而运行hadoop作业并将其存储在内存中,因为我不是一个好的设计。任何建议

感谢您阅读我的博客

是的,要计算的距离矩阵非常困难

我已经应用了minhash集群(mahout也有一个实现)来查找非常相似的向量。所以你不必计算整个距离矩阵,而是计算相似向量的距离矩阵

所以我给你们的建议是使用mahout的minhashing来找到类似向量的簇。然后为它们计算一个较小的距离矩阵,然后应用我在帖子中写的其余要点:

  • 从“迷你”簇中提取相邻点
  • 从生成的图中运行一个连接组件算法(有MapReduce、Giraph和Hama的实现)

基本上就是这样。不幸的是,这整个阶段都无法开源,所以这就是整个过程所需要的。

感谢您阅读我的博客

是的,要计算的距离矩阵非常困难

我已经应用了minhash集群(mahout也有一个实现)来查找非常相似的向量。所以你不必计算整个距离矩阵,而是计算相似向量的距离矩阵

所以我给你们的建议是使用mahout的minhashing来找到类似向量的簇。然后为它们计算一个较小的距离矩阵,然后应用我在帖子中写的其余要点:

  • 从“迷你”簇中提取相邻点
  • 从生成的图中运行一个连接组件算法(有MapReduce、Giraph和Hama的实现)

基本上就是这样。不幸的是,无法打开整个阶段的源代码,所以这就是整个过程所需要的。

太好了,您的解决方案是有意义的。非常感谢。因此,接下来的下一步是使用map的setup函数,初始化迷你集群,并使用自定义分区器将记录发送到正确的map任务。嘿,Thomas,我还有另一个建议,不是使用min hash,更简单的方法是使用run函数(定义在这里-)。在设置中创建距离矩阵,因为我们将拥有分配给地图任务的所有记录。你对此有什么看法?@anonymous123我认为这不可行,因为这只会给你的输入块中的最近邻居,而不是全局。嗯,是的,我会给特定块中的最近邻居,而不是全局,你是对的。很好,你的解决方案是有意义的。非常感谢。因此,接下来的下一步是使用map的setup函数,初始化迷你集群,并使用自定义分区器将记录发送到正确的map任务。嘿,Thomas,我还有另一个建议,不是使用min hash,更简单的方法是使用run函数(定义在这里-)。在设置中创建距离矩阵,因为我们将拥有分配给地图任务的所有记录。你对此有何看法?@anonymous123我认为这是不可行的,因为这只会给你的输入块中的最近邻居,而不是全局。嗯,是的,我会给特定块中的最近邻居,而不是全局,你是对的。