I'm considering adding the PH-tree to ELKI. I couldn't find any tutorials for examples for that, and the internal architecture is not fully obvious to me at the moment.
Some context: The PH-tree is a spatial index that was published at SIGMOD'14: paper, Java source code is available here. It is a bit similar to a quadtree, but much more space efficient, doesn't require rebalancing and scales quite well with dimensionality. What makes the PH-tree different from the R*-Tree implementations is that there is no concept of leaf/inner nodes, and nodes don't will not directly map to pages. It also works quite well with random insert/delete (no bulk-loading required).
答案 0 :(得分:1)
当然,在ELKI中使用PH树是很好的,允许其他人试验它。我们希望ELKI成为一个综合工具;它有R树,M树,k-d树,覆盖树,LSH,iDistance,倒排列表,空间填充曲线,PINN,......;有工作但没有清理的X-tree,rank-cover-trees,bond等实现。
我们希望研究人员能够轻松地研究哪种指数最适合他们的数据,当然,拥有PH-tree也会很好。我们还试图突破这些指数的极限,例如:当支持其他距离测量而不是欧几里德距离时。
努力取决于您对编码的经验; ELKI使用了一些优化良好的数据结构,但这意味着由于性能原因,我们没有在许多地方使用标准Java API。例如,添加封面树花了我大约一天的工作(并且它表现非常好)。我假设一个更灵活(但也更内存密集)的k-d树将是类似的工作量。我没有详细研究过PH树,但是我认为它比这更加努力。 我的胆量也说它不会像宣传的那样快。它似乎是一个前缀压缩的四叉树。在我的实验中,诸如希尔伯特曲线所需的比特交织方法可能非常昂贵。它也可能仅适用于Minkowski指标。但是欢迎你证明我错了。 ; - )
欢迎您在邮件列表或此处获得帮助。
我首先会做一个内存变量,以完全理解索引。然后对其进行基准测试以确定优化潜力,并进行调试。在此之前,您可能还没有找到所有极端情况,例如重复点处理,退化数据集等。
始终制作磁盘可选。如果您的数据适合内存,则仅内存实现将比任何磁盘版本快得多。
在为ELKI做出贡献时,请:
如果您正在寻找数据挖掘项目创意,以下是我们希望看到的对ELKI做出贡献的文章/算法列表(我们将此列表保持为学生实施项目的最新版本) :