【问题标题】:ELKI for OPTICS Xi - Can I make it go faster?ELKI for OPTICS Xi - 我可以让它更快吗?
【发布时间】:2015-09-24 19:03:34
【问题描述】:

我是 ELKI 新手,我已经成功调整了我想运行的算法。 我在 3K 坐标上使用它并且速度非常快 - 所以现在我正试图扩大到大约 1 MM 记录。现在我正在运行 30K,但已经有几个小时了,它仍在运行。

有什么方法可以提高性能吗?我注意到 java.exe *32 仅使用 ~13% CPU 和 150KB 内存(机器是 2.8 GHz i7 和 32 GB RAM)

根据其他人之前关于仅使用 2 维(经度/纬度)的建议,我使用了 1024 页面大小

直接从 Windows 命令行运行:

java -jar <path> cli 
-algorithm clustering.optics.OPTICSXi
-opticsxi.xi 0.006
-optics.minpts 5
-dbc.in <path> 
-db.index tree.spatial.rstarvariants.rstar.RStarTreeFactory 
-pagefile.pagesize 1024 
-spatial.bulkstrategy SortTileRecursiveBulkSplit 
-algorithm.distancefunction geo.LngLatDistanceFunction 
-geo.model WGS84SpheroidEarthModel 
-opticsxi.algorithm OPTICSHeap 
-resulthandler ResultWriter 
-out <path>

【问题讨论】:

  • 如果不设置 epsilon,索引将无济于事。
  • 啊,我明白了。默认我认为是无穷大,这意味着除非我设置上限,否则索引基本上没有帮助。

标签: java elki


【解决方案1】:

OPTICS 的运行时间与查询的选择性有关。

半径无穷大,性能为 O(n^2)。

尽量选择您的应用程序允许的-optics.epsilon。越小,OPTICS 越快(带有索引)。但是,如果您使用的值太小(例如 1 米),那么您可能会丢失数据的大规模结构。使用地理数据,您确实有 20,000,000 米的距离。但在许多应用中,其他大陆上的点无关紧要,10,000 m 或 100,000 m 的半径会产生显着的加速。

如果您的数据嘈杂,您可能需要将 minPts 增加到例如最大数据集为 10 或 20。

【讨论】:

    【解决方案2】:

    您也可以使用近似算法,这会快得多。例如,ELKI 包含“FastOPTICS”

    https://elki-project.github.io/releases/current/doc/de/lmu/ifi/dbs/elki/algorithm/clustering/optics/FastOPTICS.html

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 2017-11-06
      • 2019-04-28
      • 2013-04-16
      • 1970-01-01
      相关资源
      最近更新 更多