У меня есть полумаленькая матрица двоичных объектов размером 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
Создание матрицы сходства Жакара , подгонка иерархического кластера, а затем использование верхних «узлов».
K-медиана
K-medoids
Агнесса
До сих пор у меня был некоторый успех с использованием иерархической кластеризации, но я действительно не уверен, что это лучший способ пойти ..
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)