Agrupando uma matriz binária


22

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)

insira a descrição da imagem aqui


1
Para dados grandes (muitos nós) e de alta dimensão, também pode valer a pena tentar um algoritmo de agrupamento de gráficos (usando, por exemplo, similaridade tanimoto e métodos como o agrupamento de Louvain, RNSC, mcl). Tenho algumas dúvidas se o seu tipo de dados irá gerar clusters significativos (é claro que pode muito bem), mas essas dúvidas estão relacionadas ao cluster em geral, não especificamente a um tipo específico de cluster. PCA é definitivamente algo para tentar.
micans

6
Para ser sincero, estou surpreso que essa pergunta tenha atraído tanta atenção. Por que é tão? Para mim, isso soa como uma pergunta extremamente interessante.
Dror Atariah

Respostas:


9

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.

P(UMAEu,Bj,Ck)

Se estes fossem independentes um do outro, esperaríamos ver:

P(UMAEu,Bj,Ck)=P(UMAEu)P(Bj)P(Ck)

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:

P(UMAEu,Bj,Ck)=P(Xn)P(UMAEu|Xn)P(Bj|Xn)P(Ck|Xn)

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 nXnn

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).5n10

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 ).


Ótimo, interessante. O que você diria que é o benefício de usar essa técnica sobre qualquer uma das outras?
Wije

Uma vantagem é que o agrupamento é confuso, permitindo que você leve em consideração a incerteza em qualquer tarefa subsequente da classe. Outra é porque é um método baseado em modelo. você obtém índices de ajuste com base na probabilidade que podem ajudar a orientar a seleção do modelo. É claro que isso tem o custo de ter que fazer suposições distributivas ... Tenho certeza de que outros métodos válidos terão suas próprias vantagens e desvantagens.
DL Dahly

5

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.


Faz sentido usar itens frequentes, mesmo que eu deseje agrupar os usuários em vez das tags (colunas)?
wije 14/02

1
IMHO sim. Mas, por razões óbvias, as regras de associação não são um particionamento estrito do conjunto de dados. Um usuário pode ser membro de mais de um "conjunto de itens frequentes". Ou seja, um usuário pode ser um fã de gatos e um fã de cães; esses dois grupos não são obrigados a se separar.
Anony-Mousse - Re: Monica Monica

Qual IMHO é realmente bom. Assumir que todo usuário é membro de exatamente um cluster me parece excessivamente ingênuo.
Anony-Mousse -Reinstar Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.