我必须使用k-means编写该集群的程序。我有TF-IDF和余弦相似性,看起来像那样
1.00 0.17 0.46 0.40 0.89
0.17 1.00 0.83 0.60 0.58
0.46 0.83 1.00 0.30 0.67
0.40 0.60 0.30 1.00 0.73
0.89 0.58 0.67 0.73 1.00
我有2-means的输出,它与第一个质心分为两组:D1和D2因为它们的相似性最低(0.17)所以组是{D1,D5}和{D2,D3,D4}但是,如果我不得不选择3种手段呢?然后我如何选择我的起始质心?
另一件事我不明白,我正在服用我的TF-IDFS,如下所示:
0.2 0.4 0.8 0.0 0.2
0.0 0.4 0.2 0.8 0.2
0.8 0.0 0.2 0.4 0.4
为我的群组制作新的质心
组1:T1- 0.2 T2- 0.1 T3-0.6 组2:T1-0.4T2-0.4(6)T3-0.2
现在我该如何再次将文档分配给新的质心?我现在必须计算我的质心和文档之间的余弦吗?那个cos值是否高于组质心我把它放在那里?
答案 0 :(得分:2)
说真的,你搞砸了。
对于k-means,您不需要成对相似性表。它永远不会比较两个对象!
还要回顾关于k-means的许多问题,特别是为什么使用k-means中的其他距离比平方欧几里德距离更危险(因为均值可能不适用于其他距离函数) 。虽然我相信可以证明在相当可用的条件下它也适用于余弦距离,但我还没有看到为什么以及何时保证收敛的证据。我所知道的证据仅对(平方)欧几里德距离有效。)
答案 1 :(得分:1)
D1和D2群集因为它们的相似性最高且距离最低。相似度不高。
您最初选择的质心与2质心情况相同。对?你在那里做什么?您使用3个随机向量,或者选择3个数据点作为初始质心。
你的第二部分没有意义。您可以通过将新文档分配给最近的群集来分配新文档。如果您愿意,可以从那里继续迭代。