次元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 Similarityマトリックスを作成し、階層クラスターを適合させてから、上位の「ノード」を使用します。
Kメディアン
K-medoid
アグネス
これまでのところ、階層的クラスタリングを使用することである程度の成功を収めてきましたが、それが最善の方法であるかどうかは確かではありません。
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)