ELIKI for OPTICS Xi - 我可以让它变得更快吗?

时间:2015-09-24 19:03:35

标签: java elki

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

有什么办法可以提升表现吗?我注意到java.exe * 32只使用~13%CPU和150KB内存(机器是2.8 GHz i7,内存为32 GB)

我使用了基于其他人之前建议的pagesize 1024仅使用2维(lon / lat)

直接从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>

2 个答案:

答案 0 :(得分:1)

OPTICS的运行时与查询的 selective 有关。

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

尽量选择-optics.epsilon,只要您的申请允许。 OPTICS越小,越快(带索引)。但是,如果使用的值太小(例如,1米),则可能会丢失数据的大规模结构。根据地理数据,您的距离可达20,000,000米。但在许多应用中,其他部分上的点很少,半径为10,000米或100,000米会产生显着的加速。

如果您的数据有噪音,您可能需要将minPts增加到例如10或20表示最大的数据集。

答案 1 :(得分:0)

您还可以使用近似算法,该算法可能快得多。例如,ELKI包含“ FastOPTICS”

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