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?
clustering
Björn Pollex
fonte
fonte
Respostas:
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.
fonte
É 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.
fonte
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)
fonte