Quais critérios de parada para clustering hierárquico aglomerativo são usados ​​na prática?


32

Eu encontrei extensa literatura propondo todos os tipos de critérios (por exemplo, Glenn et al. 1985 (pdf) e Jung et al. 2002 (pdf)). No entanto, a maioria delas não é tão fácil de implementar (pelo menos da minha perspectiva). Estou usando o scipy.cluster.hierarchy para obter uma hierarquia de cluster e agora estou tentando decidir como formar clusters simples a partir disso. Meu objetivo é descobrir padrões comuns em minhas observações, portanto, não tenho referência para comparar o agrupamento obtido. Alguém pode sugerir uma solução pragmática?


Na minha página da web, há uma coleção de zip de "Critérios de cluster" com a descrição (e funções do SPSS) de vários critérios populares de cluster interno (regras de parada). Para sua informação.
Ttnphns

Respostas:


18

A seguinte entrada da Wikipedia realmente explica muito bem os métodos mais populares e relativamente simples:

A heurística do Método do Cotovelo descrita é provavelmente a mais popular devido à sua explicação simples (quantidade de variação explicada pelo número de clusters) juntamente com a verificação visual. O método teórico da informação também não é difícil de implementar e a página possui algum pseudocódigo que você pode usar para iniciar. O último é análogo a uma probabilidade penalizada com base na complexidade do modelo, como nos critérios de informação conhecidos, como AIC, BIC, etc.


Obrigado! O artigo da Wikipedia sobre cluster hierárquico não está vinculado a esse.
Björn Pollex

2
Oh, certo. Corrigido agora nos links "consulte também", obrigado por apontar isso!
Ars

No método Elbow, e se os objetos a serem agrupados forem bastante "complexos"? Quero dizer, eles não são pontos simples, são coleções complexas de dados. Eu descobri que eles distanciam pares (distância auto-definida). Como eu calcularia a chamada "variação" aqui para aplicar o método Elbow?
Sibbs Gambling

17

É bastante difícil fornecer uma solução clara sobre como escolher o número "melhor" de clusters em seus dados, qualquer que seja o método de cluster usado, porque o Cluster Analysis procura isolar grupos de unidades estatísticas (sejam indivíduos ou variáveis ) para fins exploratórios ou descritivos, essencialmente. Portanto, você também deve interpretar a saída do seu esquema de cluster e várias soluções de cluster podem ser igualmente interessantes.

Agora, com relação aos critérios estatísticos usuais usados ​​para decidir quando parar para agregar dados, como apontado por @ars, a maioria é um critério visual , incluindo a análise do dendograma ou a inspeção dos perfis dos clusters, também chamados de gráficos de silhueta (Rousseeuw, 1987). . Vários critérios numéricos , também conhecidos como índices de validade, também foram propostos, por exemplo, índice de validade de Dunn, índice de validade de Davies-Bouldin, índice C, gama de Hubert, entre outros. O armazenamento em cluster hierárquico geralmente é executado em conjunto com o k-means (de fato, várias instâncias do k-means, por ser um algoritmo estocástico), para que ele adicione suporte às soluções de cluster encontradas. Não sei se todas essas coisas estão prontamente disponíveis no Python, mas uma enorme quantidade de métodos está disponível no R (consulte oVisualização de tarefa de cluster , já citada pelo @mbq para uma pergunta relacionada: Quais ferramentas podem ser usadas para aplicar algoritmos de cluster no MovieLens? ) Outras abordagens incluem cluster nebuloso e cluster baseado em modelo (também chamado de análise de características latentes , na comunidade psicométrica) se você procurar uma maneira mais robusta de escolher o número de clusters em seus dados.

BTW, acabei de encontrar esta página da Web, scipy-cluster , que é uma extensão do Scipy para gerar, visualizar e analisar clusters hierárquicos . Talvez inclua outras funcionalidades? Também ouvi falar do PyChem, que oferece coisas muito boas para análises multivariadas.

A seguinte referência também pode ser útil:

Steinley, D. & Brusco, MJ (2008). Seleção de variáveis ​​na análise de cluster: Uma comparação empírica de oito procedimentos. Psychometrika , 73 , 125-144.


Obrigado por esta excelente resposta! De fato, o módulo hierárquico de cluster que você mostrou já faz parte do scipy. Além disso, o scipy fornece uma implementação de k-means, para que eu possa usá-lo facilmente.
Björn Pollex

Ok, eu não olhei em detalhes para isso. Para k-means, você precisa prestar atenção ao fato de que geralmente precisamos de dois loops externos para validar a solução de cluster (um onde você varia o número de clusters e outro para variar a semente - o objetivo é minimizar o RSS); então você pode usar a estatística Gap para escolher o número ideal de clusters.
chl

5

Recentemente, me tornei o fundo do método de visualização de clustergram (implementado em R).

Eu o uso como um método extra para avaliar um número "bom" de clusters. Estendê-lo para outros métodos de cluster não é tão difícil (na verdade, eu fiz isso, mas não consegui publicar o código)

texto alternativo

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.