J'ai une matrice de corrélation qui indique comment chaque élément est corrélé à l'autre élément. Donc pour un N items, j'ai déjà une matrice de corrélation N * N. En utilisant cette matrice de corrélation, comment puis-je regrouper les N éléments dans M bacs afin que je puisse dire que les Nk éléments dans le kième bac se comportent de la même manière. Veuillez m'aider. Toutes les valeurs des éléments sont catégoriques.
Merci. Faites-moi savoir si vous avez besoin de plus d'informations. J'ai besoin d'une solution en Python mais toute aide pour me pousser vers les exigences sera d'une grande aide.
clustering
python
k-means
Abhishek093
la source
la source
Réponses:
Ressemble à un travail de modélisation de blocs. Google pour la "modélisation de blocs" et les premiers hits sont utiles.
Disons que nous avons une matrice de covariance où N = 100 et il y a en fait 5 grappes:
Ce que la modélisation de blocs essaie de faire est de trouver un ordre des lignes, de sorte que les clusters deviennent apparents comme des «blocs»:
Voici un exemple de code qui effectue une recherche gourmande de base pour y parvenir. C'est probablement trop lent pour vos variables 250-300, mais c'est un début. Voyez si vous pouvez suivre les commentaires:
la source
Avez-vous envisagé le clustering hiérarchique? Il peut fonctionner avec des similitudes, pas seulement des distances. Vous pouvez couper le dendrogramme à une hauteur où il se divise en k grappes, mais il est généralement préférable d'inspecter visuellement le dendrogramme et de décider d'une hauteur à couper.
Le clustering hiérarchique est également souvent utilisé pour produire un réordonnancement intelligent pour une visualisation de matrice de similitude, comme indiqué dans l'autre réponse: il place plus d'entrées similaires les unes à côté des autres. Cela peut également servir d'outil de validation pour l'utilisateur!
la source
Avez-vous étudié le clustering de corrélation ? Cet algorithme de clustering utilise les informations de corrélation positive / négative par paire pour proposer automatiquement le nombre optimal de clusters avec une fonctionnalité bien définie et une interprétation probabiliste générative rigoureuse .
la source
Correlation clustering provides a method for clustering a set of objects into the optimum number of clusters without specifying that number in advance
. Est-ce une définition de la méthode? Si oui c'est étrange car il existe d'autres méthodes pour suggérer automatiquement le nombre de clusters, et aussi, pourquoi alors cela s'appelle-t-il "corrélation".Je filtrerais à un seuil significatif (signification statistique), puis utiliserais la décomposition dulmage-mendelsohn pour obtenir les composants connectés. Peut-être avant de pouvoir essayer de supprimer certains problèmes comme les corrélations transitives (A fortement corrélé à B, B à C, C à D, il existe donc un composant les contenant tous, mais en fait D à A est faible). vous pouvez utiliser un algorithme basé sur l'interdépendance. Ce n'est pas un problème de biclustering comme quelqu'un l'a suggéré, car la matrice de corrélation est symétrique et donc il n'y a pas de bi-quelque chose.
la source