我有一个尺寸为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年