如何根据相似性度量对文档进行聚类?

时间:2015-02-15 04:56:28

标签: machine-learning data-mining

我阅读了有关如何根据文档的相似性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 
...
...

我是否可以仅根据相似性度量对这些文档进行聚类? 如果我指定了簇的数量,该怎么做? 如果我没有指定集群的数量,算法能否自动集群那些文档,怎么做呢? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

聚类是机器学习的最大领域之一(按比例你可以比较,比如数学中的“整合”,或编程中的“排序”),并且有数百种不同的算法,专注于不同的问题设置和要求。其中一些需要指定簇的数量,有些则不需要。有些可以只使用成对相似性,有些需要对被聚类的项目进行一些明确的表示,等等。

我建议你从两个经典的聚类算法开始:

答案 1 :(得分:0)

各种聚类算法对成对的distnces进行操作;许多人也可以适应成对的相似性。

分层凝聚聚类(HAC)就是这样的原型。它适用于距离或相似度矩阵,并合并从单个文档开始的最相似的聚类。其他算法包括DBSCAn,OPTICS,......

k-means恰恰相反。它计算平均值和距平均值的距离。由于使用了 mean ,因此与欧几里德的平方相比,它没有相似或其他距离的作用。平均值最小化最小二乘,而不是距离。但是,有时你会有出路。如果您的数据标准化为非负单位球,那么平方欧几里德d2(a,b)= 2 - 2 * cos(a,b)。因此,球形k-means也有效。依赖于坐标和平均值的其他算法包括Mean-Shift和BIRCH。