2

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

4

2 回答 2

1

解决方案1:

扩展您的数据集以匹配您所需的 epsilon。

在您的情况下,将 z 缩放 50。

解决方案2:

使用加权距离函数。

例如ELKI 中的WeightedEuclideanDistanceFunction,并相应地选择您的权重,例如-distance.weights 1,1,50将 50 倍的权重放在第三轴上。

这可能是最方便的选择,因为您已经在使用 ELKI。

于 2015-06-26T20:31:27.033 回答
0

在计算DBSCAN核心点时,只需定义自定义距离度量即可。标准 DBSCAN 使用欧几里得距离来计算一个 epsilon 内的点。所以所有维度都被同等对待。

但是,您可以使用Mahalanobis 距离对每个维度进行不同的加权。您可以对平面集群使用对角协方差矩阵。您可以将完全对称的协方差矩阵用于平坦倾斜的集群等。

在您的情况下,您将使用协方差矩阵,例如:

100  0    0   
  0  100  0   
  0    0  0.04

在DBSCAN的 Wikipedia 条目提供的伪代码中,只需使用上面在regionQuery函数中建议的距离度量之一。

更新

注意:缩放数据相当于使用适当的指标。

于 2015-06-26T19:47:42.617 回答