用于 OPTICS Xi 的 ELKI - 我可以让它运行得更快吗?
ELKI for OPTICS Xi - Can I make it go faster?
我是 ELKI 的新手,我已经成功调整了我想要的算法 运行。
我在 3K 坐标上使用它并且速度非常快 - 所以现在我正在尝试扩大到大约 1 MM 记录。现在我正在 运行ning 上 30K,但已经几个小时了,它仍然 运行ning。
有什么方法可以提高性能吗?我注意到 java.exe *32 仅使用 ~13% CPU 和 150KB 内存(机器是 2.8 GHz i7 和 32 GB RAM)
根据其他人之前关于仅使用 2 个维度的建议,我使用了 1024 页大小 (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>
OPTICS 的运行时间与查询的选择性有关。
半径无穷大,性能为 O(n^2)。
尽量选择 -optics.epsilon
在您的应用程序允许的范围内。 OPTICS 越小,速度越快(带有索引)。但是,如果您使用的值太小(比如 1 米),那么您可能会丢失数据的大尺度结构。使用地理数据,您确实有 20,000,000 米的距离。但在许多应用中,其他大陆上的点无关紧要,10,000 米或 100,000 米的半径会产生显着的加速。
如果您的数据嘈杂,您可能需要将 minPts 增加到例如最大数据集为 10 或 20。
您也可以使用近似算法,这样会快得多。例如,ELKI 包含“FastOPTICS”
我是 ELKI 的新手,我已经成功调整了我想要的算法 运行。 我在 3K 坐标上使用它并且速度非常快 - 所以现在我正在尝试扩大到大约 1 MM 记录。现在我正在 运行ning 上 30K,但已经几个小时了,它仍然 运行ning。
有什么方法可以提高性能吗?我注意到 java.exe *32 仅使用 ~13% CPU 和 150KB 内存(机器是 2.8 GHz i7 和 32 GB RAM)
根据其他人之前关于仅使用 2 个维度的建议,我使用了 1024 页大小 (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>
OPTICS 的运行时间与查询的选择性有关。
半径无穷大,性能为 O(n^2)。
尽量选择 -optics.epsilon
在您的应用程序允许的范围内。 OPTICS 越小,速度越快(带有索引)。但是,如果您使用的值太小(比如 1 米),那么您可能会丢失数据的大尺度结构。使用地理数据,您确实有 20,000,000 米的距离。但在许多应用中,其他大陆上的点无关紧要,10,000 米或 100,000 米的半径会产生显着的加速。
如果您的数据嘈杂,您可能需要将 minPts 增加到例如最大数据集为 10 或 20。
您也可以使用近似算法,这样会快得多。例如,ELKI 包含“FastOPTICS”