具有余弦相似性的聚类

时间:2012-06-22 05:14:38

标签: machine-learning cluster-analysis distance cosine-similarity

我有一个大型数据集,我想集群。我的试运行集大小是2,500个对象;当我在'真正的交易'上运行时,我将需要处理至少20k的对象。

这些对象之间具有余弦相似性。该余弦相似性不满足作为数学距离度量的要求;它不满足三角不等式。

我想以一种“自然”的方式将它们聚类在一起,将类似的对象放在一起,而不需要事先指定我期望的聚类数。

有谁知道会这样做的算法?真的,我只是在寻找任何不需要a)距离度量和b)预先指定数量的聚类的算法。

非常感谢!

此问题在此之前已被提出: Clustering from the cosine similarity values (但此解决方案仅提供K-means聚类),此处: Effective clustering of a similarity matrix (但这个解决方案相当模糊)

3 个答案:

答案 0 :(得分:3)

Apache mahout有许多聚类算法,包括一些不需要你指定N的算法​​,它们允许你指定距离度量。

平均移位聚类类似于k均值但没有预先指定数量的聚类https://cwiki.apache.org/confluence/display/MAHOUT/Mean+Shift+Clustering

然后更一般地说,如果你想尝试各种算法,R有一个绝对丰富的复杂软件包(包括一些已经证明可以选择最佳数量的EM的变分贝叶斯实现)对我过去的一些研究非常有用:http://cran.r-project.org/web/views/Cluster.html

答案 1 :(得分:2)

实际上,大多数需要“距离函数”的算法都不要求它是度量标准。

DBSCAN可以推广到一个甚至从距离抽象的版本(见维基百科),它只需要有某种“密集”的概念。 (DBSCAN也不需要事先知道集群的数量)

但即使对于k-means--对距离有相当严格的要求,甚至超出了测量范围 - 也有一种叫做球形k-means的变体。

无论如何,在数据库环境中,“度量”的全部要求都是utopic。在任何现实世界的数据中,可能有两个具有相同坐标的记录,因此最多只有一个伪度量。三角不等式主要起到优化的作用(例如,通过使用具有严格三角不等式要求的M树索引)或利用该属性的加速k均值。

答案 2 :(得分:2)

你也可以尝试Affinity Propagation(http://www.psi.toronto.edu/index.php?q=affinity%20propagation)。该算法将相似度矩阵作为输入,我相信也可以自动调整聚类质心的数量。