不同轴上不同epsilons的聚类算法

时间:2015-06-26 12:49:57

标签: cluster-analysis data-mining dbscan elki

我正在寻找一种聚类算法,例如s DBSCAN处理3d数据,其中可以根据轴设置不同的epsilons。例如,x-y平面上的ε为10m,z轴上的ε为0.2m。

基本上,我正在寻找大而扁平的群集。

注意:我是一名考古学家,该算法将用于寻找散布在大型表面中的物体之间的潜在相关性,但是在狭窄的垂直层中

2 个答案:

答案 0 :(得分:1)

解决方案1:

缩放您的数据集以匹配您想要的epsilon。

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

解决方案2:

使用加权距离函数。

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 函数中建议的距离指标之一。

<强>更新

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