具有度量条件的平面聚类

时间:2016-07-18 09:34:31

标签: machine-learning

对于我的集合中的对象的给定度量,我需要形成具有两个条件的集群:

  • 群集中任何对象与其最远邻居之间的距离必须小于t1。
  • 群集中的任何对象与最近邻居之间的距离必须小于t2。

目前,我使用带有覆盖度量函数的凝聚聚类(远距离对象为0),但它感觉不太合适。

enter image description here

1 个答案:

答案 0 :(得分:2)

方法1:SAT解决

对于n个对象,所有可能的聚类都可以用对称二进制矩阵{0,1} ^ {n \ times n}来描述。位置(i,j)处的元素描述对象i是否与对象j在同一聚类中。这意味着你有

(n^2 + n)/2 - n = n^2 - n

二进制变量。在你的情况下,它将是224 985 000变量。那是很多。但是,正如您可以将其减少为SAT解决问题,它可能仍然可行。我想这取决于有多少聚类满足约束但仍然很糟糕。

现在你可以将它设为布尔可满足性问题:

  

群集中任何对象与最远邻居之间的距离必须小于t1。

通过此约束将矩阵的某些元素设置为0,因为它们相距太远。

  

群集中的任何对象与最近邻居之间的距离必须小于t2。

我猜你的意思是群集中最近的邻居。这意味着o不在集群中(例如,如果o具有索引i,则所有j的(i,j)= 0)或者预先计算的j集合之一必须为1.因此对于具有索引的每个对象我在这里得到限制,如

((i, 0) = 0 and (i, 1) = 0 and ... and (i,i)=1 and ... and (i,n)=0)
or
((i, k1)=1 or (i, k2)=1 or (i, k3)=1)

其中dist(i,k_j)< T2。

现在,您可以尝试简单地迭代许多解决方案并找到最佳解决方案(例如silhouette coefficient),或者您可以尝试更精细的方法。有关更多信息,请参阅constrained optimization

方法2:DBSCAN

您可以使用epsilon = t2的DBSCAN(或此系列的算法之一)。然后 - 如果必要的话 - 如果它们不满足第一个条件则拆分簇。