R - 二进制博客数据的聚类分析

jmi*_*738 3 r cluster-analysis k-means

我有一个与下面的示例类似的网络数据。它仅具有用户和二进制值,用于表明该用户是否点击了网站内的特定链接。我想对这些数据进行一些聚类。我的主要目标是根据用户的在线行为找到相似的用户。对此有什么好的聚类算法?我尝试过 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
Run Code Online (Sandbox Code Playgroud)

luk*_*keA 6

如果“单击链接”是不对称的,您可以尝试使用像 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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

(clusters <- cutree(hc, k = 2))
# abc1 abc2 abc3 abc4 
#    1    2    1    2
Run Code Online (Sandbox Code Playgroud)