我阅读了有关如何根据文档的相似性here对文档进行聚类的主题的帖子。但我仍然无法理解它是如何实现的。我的测试是我有10个文档的cos相似性度量。以下是一些:
D1 D2 sim(D1,D2)
d1 d10 0.6823
d1 d2 0.6377
d1 d8 0.0307
d1 d9 0.0294
d1 d7 0.0284
d1 d3 0.0234
d1 d4 0.0199
d1 d6 0.0110
d1 d5 0.0030
d10 d2 0.7232
d10 d3 0.3898
d10 d4 0.3054
d10 d9 0.0256
d10 d7 0.0227
d10 d8 0.0226
d10 d6 0.0110
d10 d5 0.0060
d2 d3 0.7850
...
...
我是否可以仅根据相似性度量对这些文档进行聚类? 如果我指定了簇的数量,该怎么做? 如果我没有指定集群的数量,算法能否自动集群那些文档,怎么做呢? 提前谢谢。
答案 0 :(得分:0)
聚类是机器学习的最大领域之一(按比例你可以比较,比如数学中的“整合”,或编程中的“排序”),并且有数百种不同的算法,专注于不同的问题设置和要求。其中一些需要指定簇的数量,有些则不需要。有些可以只使用成对相似性,有些需要对被聚类的项目进行一些明确的表示,等等。
我建议你从两个经典的聚类算法开始:
答案 1 :(得分:0)
各种聚类算法对成对的distnces进行操作;许多人也可以适应成对的相似性。
分层凝聚聚类(HAC)就是这样的原型。它适用于距离或相似度矩阵,并合并从单个文档开始的最相似的聚类。其他算法包括DBSCAn,OPTICS,......
k-means恰恰相反。它计算平均值和距平均值的距离。由于使用了 mean ,因此与欧几里德的平方相比,它没有相似或其他距离的作用。平均值最小化最小二乘,而不是距离。但是,有时你会有出路。如果您的数据标准化为非负单位球,那么平方欧几里德d2(a,b)= 2 - 2 * cos(a,b)。因此,球形k-means也有效。依赖于坐标和平均值的其他算法包括Mean-Shift和BIRCH。