数据库中的类似问题似乎比我的例子复杂得多。我想在一条线上聚集100个点。群体数量无关紧要;点的接近程度更重要。
处理此分组问题的术语,方法或算法是什么? K均值,汉明距离,等级聚集,集团或完全联系??
我将两个例子减少到最低限度以便澄清:
简单的例子:
设置A = {600,610,620,630}并且其元素之间的差异集是diff_A = {10,20,30,10,20,10}。然后,我可以分组如下:{10,10,10},{20,20}和{30}。完成。
有问题的例子:
设置B = {600,609,619,630},差异集是diff_B = {9,10,11,19,21,30}。我尝试以1的容差进行分组,即1(或更小)的差异“足够相似”以进行分组,但我得到一个悖论:{9,10}和/或{10,11},{19} ,{21}和{30}。
问题:
9和10足够接近,10和11足够接近,但9和11不是,所以我该如何处理这些重叠组?也许这个小例子是无法解决的,因为它是对称的?
答案 0 :(得分:3)
为什么要处理成对差异?考虑值1,2,101,102,201,202。成对差异为1,100,101,200,201,99,100,199,200,1,100,101,99,100,1
~200的值没有信息。有一个不同的"集群"插图中。你不应该用它们进行分析。
相反,请抓住统计资料教科书并查找Kernel Density Estimation。不必费心寻找群集 - 这些方法通常是针对多变量情况而设计的。您的数据是1维的。它可以排序(它可能已经是),这可以被利用以获得更好的结果。
对于此类数据的密度估算有完善的启发式方法,您可以将数据分配到局部最小密度(或简单地在低密度阈值)。这更简单,但更健壮,更可靠。您不需要为k-means设置k等参数。有些情况下k-means是一个不错的选择 - 它起源于信号检测,其中已知有k = 10个不同的信号频率。今天,它主要用于多维数据。
另见: