Cluster analysis 群集合并阈值

Cluster analysis 群集合并阈值,cluster-analysis,threshold,kernel-density,Cluster Analysis,Threshold,Kernel Density,我使用的是Mean shift,这个过程计算数据集中的每个点的收敛点。我还可以计算两个不同点会聚的坐标之间的欧氏距离,但我必须给出一个阈值,也就是说,如果(距离

我使用的是Mean shift,这个过程计算数据集中的每个点的收敛点。我还可以计算两个不同点会聚的坐标之间的欧氏距离,但我必须给出一个阈值,也就是说,如果(距离<阈值),那么这些点属于同一个簇,我可以合并它们

如何找到用作阈值的正确值??

(我可以使用每一个值,这取决于结果,但我需要最佳值)

我已经实现了多次均值漂移聚类,并且遇到了同样的问题。根据您愿意为每个点移动多少次迭代,或者您的终止标准是什么,通常有一些后处理步骤,您必须将移动的点分组到集群中。理论上切换到相同模式的点不必在实际上直接位于彼此的顶部

我认为最好也是最通用的方法是使用基于内核带宽的阈值,正如评论中所建议的那样。在过去,我的代码通常是这样做的:

threshold = 0.5 * kernel_bandwidth
clusters = []
for p in shifted_points:
    cluster = findExistingClusterWithinThresholdOfPoint(p, clusters, threshold)
    if cluster == null:
        // create new cluster with p as its first point
        newCluster = [p]
        clusters.add(newCluster)
    else:
        // add p to cluster
        cluster.add(p)
对于
findExistingClusterWithinThresholdOfPoint
函数,我通常使用
p
到当前定义的每个簇的最小距离


这似乎很有效。希望这能有所帮助。

请以后仔细选择标记:放置错误的标记很可能会导致知道如何回答的人看不到您的问题。您是否想过使用pill-box内核:它具有更好的收敛特性。pill-box内核?我不知道它是什么…但我的问题不涉及收敛属性,我只需设置适当的阈值将点合并到集群中,只是我不知道如何选择最佳值!(是k-均值中k的一种选择)在均值漂移聚类中,每个聚类在诱导密度中表示为一个独特的“吸引盆地”。若邻近的数据点收敛到密度函数的不同模式,那个么你们的内核不够平滑:你们有太多的局部模式。您需要一个更本地化、更平滑的内核。一个这样的内核是有限支持统一内核(也称为pillbox内核)。我有3d点,因此,如果一个点,例如,收敛到(11.345,23.896,87.52),另一个点收敛到(11.789,23.24,87.25),它们不属于同一个集群,问题是我的内核不够平滑?(那么这个点必须完全相同,对吗?)很高兴知道…我在哪里可以找到一些关于pillbox内核的例子?