我有一组用户及其相关字词。这就是我对它们进行分组的方式:
我已将每个单词与一个数字相关联,如果用户没有任何关联的单词,我会给出一个值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
特别是这部分:
答案 0 :(得分: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来处理数据,因为群集质心的概念对于二进制数据是有问题的。有关详细信息,请参阅this link的前几段。
但是,您仍然可以使用适当的方法(例如Jaccard index)计算任意两个用户之间的相似性,因为每个用户的单词关联可以写为二进制字符串(例如,user1具有1010
)。然后,您可以在所有用户对之间构建similarity matrix,并使用hierarchical clustering等方法对其进行聚类。
或者,您可以使用类似Proximus in R的内容。