Eu tenho uma matriz semi-pequena de recursos binários da dimensão 250k x 100. Cada linha é um usuário e as colunas são "tags" binárias de algum comportamento do usuário, por exemplo, "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
Gostaria de ajustar os usuários em 5 a 10 clusters e analisar os carregamentos para ver se consigo interpretar grupos de comportamento do usuário. Parece haver algumas abordagens para ajustar clusters em dados binários - qual achamos que pode ser a melhor estratégia para esses dados?
PCA
Criando uma matriz de similaridade Jaccard , ajustando um cluster hierárquico e depois usando os "nós" superiores.
K-medianas
K-medoids
Proximus ?
Agnes
Até agora, tive algum sucesso com o uso de cluster hierárquico, mas não tenho certeza se é o melhor caminho a seguir.
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)
r
clustering
binary-data
wije
fonte
fonte
Respostas:
A análise de classe latente é uma abordagem possível.
Tome a seguinte distribuição de probabilidade em que A, B e C podem assumir valores de 1 ou 0.
Se estes fossem independentes um do outro, esperaríamos ver:
Uma vez eliminada essa possibilidade, podemos supor que qualquer dependência observada se deva a valores agrupados em subgrupos não observados. Para testar essa ideia, podemos estimar o seguinte modelo:
Onde é uma variável categórica latente com níveis. Você especifica , e os parâmetros do modelo (probabilidades marginais de participação na classe e probabilidades específicas da classe para cada variável) podem ser estimados via maximização de expectativa.n nX n n
Na prática, você pode estimar vários modelos, com , e "escolher" o melhor modelo com base na teoria, nos índices de ajuste com base em probabilidade e na qualidade da classificação (que pode ser avaliada calculando-se probabilidades posteriores de associação de classe para as observações).5 ≤ n ≤ 10
No entanto, tentar identificar padrões significativos em 100 variáveis com 5 a 10 grupos provavelmente exigirá a redução dessa lista antes da estimativa do modelo, que é um tópico bastante complicado por si só ( REF ).
fonte
Na verdade, a mineração frequente de conjuntos de itens pode ser uma escolha melhor do que agrupar esses dados.
O conjunto usual de algoritmos orientados a vetores não faz muito sentido. K-significa, por exemplo, produzirá meios que não são mais binários.
fonte