Search code examples
cluster-analysisdata-miningdbscanelki

Clustering algorithm with different epsilons on different axes


I am looking for a clustering algorithm such a s DBSCAN do deal with 3d data, in which is possible to set different epsilons depending on the axis. So for instance an epsilon of 10m on the x-y plan, and an epsilon 0.2m on the z axis.

Essentially, I am looking for large but flat clusters.

Note: I am an archaeologist, the algorithm will be used to look for potential correlations between objects scattered in large surfaces, but in narrow vertical layers


Solution

  • Solution 1:

    Scale your data set to match your desired epsilon.

    In your case, scale z by 50.

    Solution 2:

    Use a weighted distance function.

    E.g. WeightedEuclideanDistanceFunction in ELKI, and choose your weights accordingly, e.g. -distance.weights 1,1,50 will put 50x as much weight on the third axis.

    This may be the most convenient option, since you are already using ELKI.