Closed edouardfouche closed 6 years ago
It runs out of unique object ids. In total, you supposedly ran it on more than 2^31 objects. The current class will assign every object ID only once. This serves as a safety guard to prevent mixing up IDs from different data sets.
If you use the ArrayAdapterDatabaseConnection
constructor with a startid=0
, then this will not happen.
ELKI will be even faster if you add an index, for example a cover tree (on large enough data). An example (using the newer ELKIBuilder
API, and a R*-tree index) can be found here: https://github.com/elki-project/elki/blob/master/addons/tutorial/src/main/java/tutorial/javaapi/GeoIndexing.java
There is EuclideanDistanceFunction.STATIC
, as this distance does not have parameters.
From a LOF logic, infinite LOF is an outlier. This occurs when you have minpts duplicates (at distance 0, and thus 'density' infinity), and a nearby point.
Closing, because it is behaving as intended, and there is a constructor of ArrayAdapterDatabaseConnection
to solve your problem.
Grüße aus Heidelberg.
Thank you very much !
Hello, I am using the LOF implementation from Elki for some experiments. Since I work in scala, I have written a wrapper to call it from the jar (version 0.7.2). The wrapper is the following:
It works well, and the implementation is really fast I must say. However, if I run it multiple times in parallel (and I mean with a lot of different data sets and repetition) at some point I run into the following error:
I don't know how to correct this error. When I run in sequential, it occurs at some point as well. It seems that the underlying TrivialDBIDFactory does not deallocate the DBIDs that are not in use anymore. I found here the piece of code that launch the error http://www.massapi.com/class/de/lmu/ifi/dbs/elki/utilities/exceptions/AbortException-5.html
Any idea how to avoid that?
Thank you, Edouard