1

我有一组用户及其相关的词。这就是我对它们进行分组的方式:

我已将每个单词与一个数字相关联,如果用户没有关联这些单词中的任何一个,我给出一个值 0 :

谷歌:1 stackoverflow:2数学:3编程:4 noword:0

为了运行 k-means 算法,我将这些词关联起来,如下所示:

username  google stackoverflow math programming
user1        1        0          3      0
user2        1        2          0      4
user3        0        2          3      0
user4        1        1          0      4

这是如何对每个用户进行聚类并根据他们配置的单词检查他们彼此之间的距离的正确实现吗?

我将此实现基于:http ://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/K-Means

特别是本节: 在此处输入图像描述

4

1 回答 1

4

请注意,您的数据可以构造为二进制。例如,用户 1 要么与stackoverflow有关联,要么没有(即二进制值)。因此,您应该将数据转换为这种格式:

username  google stackoverflow math programming
user1        1        0          1      0
user2        1        1          0      1
user3        0        1          1      0
user4        1        1          0      1

我建议不要对您的数据使用 K-means,因为集群质心的概念对于二进制数据来说是有问题的。有关更多详细信息,请参阅此链接的前几段。

但是,您仍然可以使用适当的方法(例如Jaccard 索引)计算任意两个用户之间的相似度,因为每个用户的单词关联都可以写成二进制字符串(例如 user1 has 1010)。然后,您可以在所有用户对之间构建一个相似度矩阵,并使用分层聚类等方法对它们进行聚类

或者,您可以在 R 中使用类似 Proximus 的东西。

于 2013-06-01T22:17:46.970 回答