我正在寻找一种聚类算法,例如s DBSCAN处理3d数据,其中可以根据轴设置不同的epsilons。例如,x-y平面上的ε为10m,z轴上的ε为0.2m。
基本上,我正在寻找大而扁平的群集。
注意:我是一名考古学家,该算法将用于寻找散布在大型表面中的物体之间的潜在相关性,但是在狭窄的垂直层中
答案 0 :(得分:1)
缩放您的数据集以匹配您想要的epsilon。
在您的情况下,将z缩放50。
使用加权距离函数。
E.g。 ELKI中的WeightedEuclideanDistanceFunction,并相应地选择您的权重,例如-distance.weights 1,1,50
将在第三轴上放置50倍的重量。
这可能是最方便的选择,因为您已经在使用ELKI。
答案 1 :(得分:0)
在计算DBSCAN核心点时,只需定义自定义距离指标即可。标准DBSCAN使用Euclidean distance来计算epsilon中的点。因此所有尺寸都被视为相同。
但是,您可以使用Mahalanobis distance以不同方式衡量每个维度。您可以将对角协方差矩阵用于平面簇。您可以将完全对称协方差矩阵用于平坦倾斜星团等。
在您的情况下,您将使用协方差矩阵,如:
100 0 0
0 100 0
0 0 0.04
在DBSCAN的维基百科条目中提供的伪代码中,只需使用上面 regionQuery 函数中建议的距离指标之一。
<强>更新强>
注意:缩放数据等同于使用适当的指标。