从最小生成树java集群

时间:2018-05-04 01:08:52

标签: cluster-analysis minimum-spanning-tree

我必须根据它们的余弦相似性来比较单词并从中产生k个簇,并且在意义上具有相似性。基本上我有这样的话:

[directors, producers, film, movie, black, white, man, woman, person, man, young, woman, science, fiction, thrilling, realistic, lovely, stunning, criminals, zombies, father, son, girlfriend, boyfriend, nurse, soldier, professor, college]

我在一个完整的加权图中计算了它们的余弦相似度,其中余弦相似度是边缘权重,并且发现该图的MST如下:

son criminals 7.622005318852533E-5
directors film 0.00269683524940825
college thrilling 0.004318332211016577
lovely girlfriend 0.011496356899859533
producers science 0.011946913151506599
nurse person 0.01222182619788835
fiction criminals 0.019032592497457333
film producers 0.021182908439749612
college fiction 0.02777607695416014
woman criminals 0.028081533433767823
realistic producers 0.028614429314768274
fiction film 0.031228743740582716
woman stunning 0.034664134514120794
college zombies 0.04113726420938837
criminals black 0.0442203277881683
professor science 0.04546819590424154
zombies soldier 0.04787773897201146
boyfriend stunning 0.04931897200102598
white producers 0.04969833492364299
nurse girlfriend 0.0498423837867863
thrilling nurse 0.05126380652206475
movie science 0.05220609189928112
nurse man 0.05229834114709604
movie young 0.07777548636454826
father nurse 0.13334569901132612

我需要得到与此类似的结果(假设有两个群集):

boyfriend,college,father,girlfriend,man,nurse,person,professor,son,woman,young

criminals,directors,fiction,film,lovely,movie,producers,science,stunning,thrilling,zombies

在我的分配中它说,"一旦你有加权图,你就可以找到 最小生成树和切割k-1边,在图上具有最小权重以获得 k簇。" 问题是,我有点困惑,并坚持现在该做什么?我应该如何获得最终的2个集群,例如每个集群中包含相似的单词?任何想法或提示都表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:1)

使用余弦,请确保不要混淆迹象。

如果使用余弦相似度,则需要最大生成树(最高相似度)。使用余弦距离,最小值很好。你现在可能有这个错误。

最小生成树中提取分区的一种方法是删除最长边(最大距离,删除最大生成树上的最小相似度)。 / p>

但是在群集中还有很多其他内容。这种方法基本上是单链路层次聚类。 MST可以被视为树状图,并且可能有十几种方法将这种树状图“切割”成簇。