基于相似度分数的聚类


17

假设我们有一组元素E和两个元素ei,ej∈E之间的相似度函数(而不是距离sim(ei,ej)

我们如何使用sim(有效地)将E的元素聚类?

ķ -means,例如,需要在给定ķ,雨棚聚类需要两个阈值。如果我们不想要这样的预定义参数怎么办?

注意,sim不一定是度量(即三角形不等式可能成立,也可能不成立)。此外,簇是否不相交(E的分区)也没关系。


2
我想知道为什么您强调您没有距离。我不是专家,但想知道是否基本上不能考虑将这样的相似度转换为距离,如果需要的话。无论如何,我怀疑是否存在完全没有参数的聚类算法,因此在所有情况下都很有可能需要进行一些调整。当您考虑k均值时,可以假设您具有实值属性(尤其是可以采用多个元素的“均值”)吗?
Marco13

4
您不需要知道k就可以执行k次均值。您可以使用变化的k进行聚类,并检查聚类方差以找到最佳值。另外,您可能会考虑采用高斯混合模型或其他餐厅流程来帮助您进行聚类。
cwharland 2014年

2
我问问题的原因是特定的:如果您可以应用k-Means,但是唯一的问题是找到初始的“ k”,那么您可以考虑使用en.wikipedia.org/wiki/Self-organizing_map作为替代方案。它具有一些不错的属性,并且基本上表现与“ k均值”相似,但不需要设置初始的“ k”。它可能不是开箱即用的解决方案,因为它具有附加的调整参数(并且训练可能在计算上很昂贵),但是仍然值得一看。
Marco13

2
k的初始选择确实会影响聚类结果,但是您可以定义一个损失函数或更可能是一个精度函数,该函数会告诉您用于聚类的k的每个值,该聚类中所有主题的相对相似性。您选择的k可使该相似度的方差最小。GMM和其他dirichlet流程很好地解决了不知道k问题。我所见过的最好的资源之一是Edwin Chen的教程
cwharland

4
只是想一想:如果您的相似性得分标准化为1,则为1-sim(ei, ej) = Distance。使用距离度量,您可以应用例如分层聚类。从根开始,您将看到在什么级别的粒度群集上可以解决您的特定问题。
Olexandr Isayev 2014年

Answers:


8
  1. 我认为许多通常使用度量标准的聚类算法实际上并不依赖于度量标准属性(除了可交换性,但我想您会在这里使用)。例如,DBSCAN在一个点周围使用epsilon邻域。那里没有什么可以特别说明三角形不等式。因此,尽管您可能必须执行某种非标准的空间索引才能进行有效的查找,但是您可能可以使用DBSCAN。您的epsilon邻域版本可能是sim> 1 / epsilon,而不是相反。k均值和相关算法的故事相同。

  2. 您可以根据相似性构建指标吗?一种可能性:所有k的dist(ei,ej)= min(sim(ei,ek)+ sim(ek,ej))...或者,可以提供一个上限,使sim(ei,ej)<sim (ei,ek)+ sim(ek,ej)+ d,对于所有k和一些正常数d?直观地,较大的sim值意味着更靠近:1 / sim度量类似吗?1 /(sim +常数)呢?那么对于所有k的min(1 / sim(ei,ek)+ 1 / sim(ek,ej))呢?(最后保证是一个指标,顺便说一句)

  3. 度量的另一种构造是进行嵌入。第一步,您可以尝试映射点ei-> xi,以使xi对于某些合适的函数f和度量最小化sum(abs(sim(ei,ej)-f(dist(xi,xj))) dist。函数f将嵌入中的距离转换为类似的值;您必须进行一些实验,但是1 / dist或exp ^ -dist是不错的起点。从那里,您可以在xi上使用常规聚类,这里的想法是,您几乎可以(在最佳拟合意义上)将嵌入中的距离转换为相似值,这样它们才能正确聚类。

  4. 在使用预定义参数时,所有算法都有一些调整。DBSCAN可以找到集群的数量,但是您仍然需要为其提供一些参数。通常,调优需要对算法的多次运行使用不同的可调参数值,以及一些评估聚类优度的函数(可以单独计算,也可以由聚类算法本身提供,也可以只是:)。您的数据不变,您可以进行一次调优,然后使用这些固定参数;如果它改变了,那么您必须为每次运行进行调整。您可以通过针对每个运行进行调整,然后将一个运行中的参数在另一个运行中的工作效果进行比较,并将其与为此专门调整的参数进行比较,以找出答案。


7

Alex提出了许多优点,尽管我可能不得不回避一下他的暗示,即DBSCAN是在此处使用的最佳群集算法。根据您的实现方式以及是否使用加速索引(许多实现方式都没有),您的时间和空间复杂度都将为O(n2),这远非理想。

就个人而言,我的首选聚类算法是用于赢家通吃的聚类的OpenOrd和用于模糊聚类的FLAME。两种方法都对所使用的度量是相似性还是距离无关(特别是在两种结构中,FLAME几乎相同)。众所周知,在Gephi中实现OpenOrd O(nlogn)比在Gephi包中存在的任何其他聚类算法更具可扩展性。

另一方面,如果您正在寻找模糊聚类方法,则FLAME很棒。虽然FLAME的复杂性由于是一个迭代过程而较难确定,但已证明它是次二次的,并且在运行速度上与knn相似。



4

DBSCAN(另请参见:通用DBSCAN)不需要距离。它所需要的只是一个二元决策。通常,人们会使用“距离<epsilon”,但没有人说您不能使用“相似度> epsilon”。不需要三角不等式。

顾名思义,亲和传播使用相似性。

除Ward链接外,分层聚类没有做任何假设。在许多实现中,当您具有相似性时,您可以仅使用负距离,并且可以很好地工作。因为只需要min,max和<。

如果您的相似性是一个好的内核功能,则内核k均值可以工作。将其视为在不同向量空间中计算k均值,其中欧几里得距离与您的相似度函数相对应。但是,那么您需要知道k。

PAM(K型)应该起作用。将每个对象分配给最相似的medoid,然后选择平均相似度最高的对象作为新的medoid ...不需要三角形不等式。

...可能还有更多。实际上有数百种聚类算法。大多数应该工作恕我直言。似乎很少真正需要度量标准属性。K均值可能具有最强的要求:它使方差(而不是距离或相似性)最小化,并且您必须能够计算均值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.