R - 二进制博客数据的聚类分析
R - cluster analysis on binary weblog data
我有一个类似于以下示例的网络数据。
它仅具有用户和二进制值,用于表示该用户是否点击了网站内的特定 link。
我想对这些数据进行一些聚类。我的主要目标是根据在线行为找到相似的用户。
对此有什么好的聚类算法?
我尝试过 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
如果 "clicked a link" 是不对称的,您可以尝试使用像 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
我有一个类似于以下示例的网络数据。
它仅具有用户和二进制值,用于表示该用户是否点击了网站内的特定 link。
我想对这些数据进行一些聚类。我的主要目标是根据在线行为找到相似的用户。
对此有什么好的聚类算法?
我尝试过 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
如果 "clicked a link" 是不对称的,您可以尝试使用像 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