Eu tenho uma matriz de correlação que indica como cada item é correlacionado com o outro item. Portanto, para um N itens, eu já tenho uma matriz de correlação N * N. Usando essa matriz de correlação, como agrupo os N itens nos compartimentos M para que eu possa dizer que os itens Nk no k-ésimo compartimento se comportam da mesma maneira. Por favor, me ajude. Todos os valores do item são categóricos.
Obrigado. Entre em contato se precisar de mais informações. Eu preciso de uma solução em Python, mas qualquer ajuda para me empurrar para os requisitos será uma grande ajuda.
clustering
python
k-means
Abhishek093
fonte
fonte
Respostas:
Parece um trabalho para modelagem de blocos. O Google para "modelagem de blocos" e os primeiros hits são úteis.
Digamos que tenhamos uma matriz de covariância em que N = 100 e na verdade existem 5 grupos:
O que a modelagem de blocos está tentando fazer é encontrar uma ordem das linhas, para que os clusters se tornem aparentes como 'blocks':
Abaixo está um exemplo de código que executa uma pesquisa gananciosa básica para fazer isso. Provavelmente é muito lento para suas 250-300 variáveis, mas é um começo. Veja se você pode acompanhar os comentários:
fonte
Você analisou o cluster hierárquico? Pode trabalhar com semelhanças, não apenas distâncias. Você pode cortar o dendrograma a uma altura em que ele se divide em k clusters, mas geralmente é melhor inspecionar visualmente o dendrograma e decidir a altura a cortar.
O agrupamento hierárquico também é frequentemente usado para produzir um reordenamento inteligente para uma vidualização de matrizes de similaridade, como visto na outra resposta: coloca entradas mais semelhantes próximas uma da outra. Isso também pode servir como uma ferramenta de validação para o usuário!
fonte
Você já olhou para agrupamentos de correlação ? Esse algoritmo de agrupamento usa as informações de correlação positiva / negativa em pares para propor automaticamente o número ideal de clusters com uma interpretação probabilística funcional bem definida e uma generativa rigorosa .
fonte
Correlation clustering provides a method for clustering a set of objects into the optimum number of clusters without specifying that number in advance
. Essa é uma definição do método? Se sim, é estranho, porque existem outros métodos para sugerir automaticamente o número de clusters e, também, porque é chamado "correlação".Eu filtraria em algum limiar significativo (significância estatística) e depois usaria a decomposição dulmage-mendelsohn para obter os componentes conectados. Talvez antes você possa tentar remover algum problema, como correlações transitivas (A altamente correlacionada com B, B para C, C para D, para que exista um componente que contenha todos eles, mas, de fato, D para A seja baixo). você pode usar algum algoritmo baseado em intermediação. Não é um problema complexo, como alguém sugeriu, pois a matriz de correlação é simétrica e, portanto, não há algo bi.
fonte