我的网页数据与下面的示例类似。
它只是具有用户和二进制值,用于该用户是否在网站中的特定链接上进行了访问。
我想对这些数据进行一些聚类。我的主要目标是根据他们的在线行为找到类似的用户。
什么是一个很好的聚类算法呢?
我尝试过k-means,它对二进制数据不起作用。
我也尝试了球形k-means skmeans()
。我想做一个平方误差碎片图的总和,但我无法弄清楚如何从skmeans获得SSE。
User link1 link2 link3 link4
abc1 0 1 1 1
abc2 1 0 1 0
abc3 0 1 1 1
abc4 1 0 1 0
答案 0 :(得分:4)
你可以尝试使用像jaccard这样的二进制距离测量的层次聚类,如果"点击一个链接"是不对称的:
dat <- read.table(header = TRUE, row.names = 1, text = "User link1 link2 link3 link4
abc1 0 1 1 1
abc2 1 0 1 0
abc3 0 1 1 1
abc4 1 0 1 0")
d <- dist(dat, method = "binary")
hc <- hclust(d)
plot(hc)
(clusters <- cutree(hc, k = 2))
# abc1 abc2 abc3 abc4
# 1 2 1 2