У мене є напівмаленька матриця двійкових ознак розміром 250k x 100. Кожен рядок - це користувач, а стовпці - це двійкові "теги" деякої поведінки користувача, наприклад "like_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
Створення матриці подібності Жакарду , встановлення ієрархічного кластера та використання верхнього "вузла".
К-медіани
К-медоїди
Агнес
Поки що я мав певний успіх у використанні ієрархічної кластеризації, але я дійсно не впевнений, що це найкращий шлях.
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)