0

聚类的默认设置似乎工作正常 - 特别是 EuclideanDistanceFunction。但是,我想使用 lng/lat 形式的空间数据运行聚类,当我更改距离函数时,elki 崩溃了:

Running: -dbc.in /tmp/test_data_lnglat-test.dat -db.index tree.spatial.rstarvariants.deliclu.DeLiCluTreeFactory -algorithm clustering.DeLiClu -algorithm.distancefunction geo.LngLatDistanceFunction -deliclu.minpts 4
Task failed
java.lang.UnsupportedOperationException: MBR to MBR mindist is not yet implemented.
at de.lmu.ifi.dbs.elki.distance.distancefunction.geo.LngLatDistanceFunction.doubleMinDist(Unknown Source)
at de.lmu.ifi.dbs.elki.algorithm.KNNJoin.processDataPagesDouble(Unknown Source)
at de.lmu.ifi.dbs.elki.algorithm.KNNJoin.processDataPagesOptimize(Unknown Source)
at de.lmu.ifi.dbs.elki.algorithm.KNNJoin.initHeaps(Unknown Source)
at de.lmu.ifi.dbs.elki.algorithm.KNNJoin.run(Unknown Source)
at de.lmu.ifi.dbs.elki.algorithm.clustering.DeLiClu.run(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at de.lmu.ifi.dbs.elki.algorithm.AbstractAlgorithm.run(Unknown Source)
at de.lmu.ifi.dbs.elki.workflow.AlgorithmStep.runAlgorithms(Unknown Source)
at […]

它不清楚(对我来说)这个错误意味着什么。聚类功能是否可能不适用于地理空间数据?

有一个简单的解决方法吗?实现所需的功能(心态)会不会很困难?

4

1 回答 1

1

正如错误非常清楚地指出的那样:

MBR to MBR mindist 尚未实施。

但是,您尝试使用的算法DeLiClu需要计算两个矩形之间的最小距离。在大地坐标中,而不是在二维平面中。

欢迎您提供足够的公式。球面几何并非微不足道,因此请注意,计算矩形到矩形的最小距离并非易事。只看四个角是不够的。到目前为止,我们只解决了点到矩形的情况。这是可行的——因为矩形是轴对齐的——但到目前为止没有人费心坐下来做数学题,然后再坐下来优化公式以尽可能少地使用三角函数。

最简单的解决方法可能是使用OPTICS常规 R 树(使用带有 STR 的批量加载!)而不是DeLiClu,因为该算法将产生几乎相同的结果,但不需要矩形到矩形的最小距离。理论上,DeLiClu更快;实际上,这不一定成立,因为 R-Tree 上的 KNN 连接代码要复杂得多(因此更难优化)。

于 2013-05-21T16:56:10.180 回答