我有一个尺寸为250k x 100 的二进制特征的半小矩阵。每行是一个用户,列是某些用户行为的二进制“标签”,例如“ likes_cats”。
user 1 2 3 4 5 ...
-------------------------
A 1 0 1 0 1
B 0 1 0 1 0
C 1 0 0 1 0
我想让用户适合5-10个集群,并分析负载以查看是否可以解释用户行为组。似乎有很多方法可以在二元数据上拟合聚类-我们认为什么是此数据的最佳策略?
PCA
制作Jaccard相似度矩阵,拟合层次集群,然后使用顶部的“节点”。
K中位数
K-类固醇
前肢?
艾格尼丝
到目前为止,我在使用分层群集方面取得了一些成功,但是我真的不确定这是最好的方法。
tags = read.csv("~/tags.csv")
d = dist(tags, method = "binary")
hc = hclust(d, method="ward")
plot(hc)
cluster.means = aggregate(tags,by=list(cutree(hc, k = 6)), mean)
1
对于大型(许多节点)和高维数据,尝试图聚类算法(使用例如tanimoto相似性和诸如Louvain聚类,RNSC,mcl之类的方法)也是值得的。我怀疑您的数据类型是否会生成有意义的聚类(当然,这很可能会产生),但是这些疑问通常与聚类有关,而与特定类型的聚类无关。PCA绝对是可以尝试的东西。
—
micans 2014年
老实说,我很惊讶这个问题吸引了这么少的关注。为什么会这样呢?对我来说,这听起来像是一个非常有趣的问题。
—
Dror Atariah,2015年