J'ai une matrice de corrélation , que j'ai obtenue en utilisant le coefficient de corrélation linéaire de Pearson via corrcoef () de Matlab . La matrice de corrélation de dimension 100x100, c'est-à-dire que j'ai calculé la matrice de corrélation sur 100 variables aléatoires.
Parmi ces 100 variables aléatoires, je voudrais trouver les 10 variables aléatoires dont la matrice de corrélation contient aussi "peu de corrélation" que possible (voir Quantifier la quantité de "plus de corrélation" qu'une matrice de corrélation A contient par rapport à une matrice de corrélation B concernant les métriques à mesurer la corrélation globale dans une matrice de corrélation). Je me soucie seulement de la corrélation par paires.
Existe-t-il de bonnes méthodes pour trouver ces 10 variables aléatoires dans un délai raisonnable (par exemple, je ne veux pas essayer les combinaisons )? Les algorithmes d'approximation sont OK.
la source
metrics to measure the overall correlation
. Vous pensez spécifiquement au déterminant?Réponses:
Considérons la somme des corrélations absolues par paire comme mesure de notre choix. On cherche donc un vecteur avec qui minimisera où.l 1 ( v ) = n v ′ Q v Q i j = | A i j |v∈{0,1}N l1(v)=n v′Qv Qij=|Aij|
Supposons que Q est également défini comme étant positif, le problème est réduit à résoudre le problème d'optimisation quadratique contraint:
Cela suggère la relaxation suivante:
qui peut être facilement résolu en utilisant des solveurs standard; alors le résultat est donné par les plus grandes composantes dans .v ∗n v∗
Exemple de code matlab:
la source
Cela peut être pire que l'idée de clustering hiérarchique de @ ttnphns. Mais: je viens de tomber sur un article qui utilise comme une fonction objectif sous-modulaire croissante:logdet(I+A)
Si vous pensez que c'est une mesure raisonnable de "moins corrélée", vous pouvez obtenir dans un facteur de l'ensemble optimal en choisissant simplement de manière itérative le point qui maximise cela. Cela peut être fait efficacement avec la décomposition de bloc LU , où est le vecteur de corrélations aux entrées déjà dans la matrice:1−1/e vv
et bien sûr, vous devez calculer , où est la factorisation de Cholesky de et en utilisant un solveur triangulaire qui est . Donc, tout ce processus devrait prendre temps pour choisir parmi éléments, en supposant que la matrice de corrélation est déjà calculée .vT(I+A)−1v=∥L−1v∥2 L I+A O(n2) O(∑nk=1Nk2+k3)=O(Nn3) n N
la source
Je ne suis pas sûr de bien comprendre ce que vous entendez par «je ne me soucie que de la corrélation par paires» , mais voici quelque chose qui peut vous aider: utilisez l'inverseur de votre matrice de corrélation. Le terme est égal à , où est la x construite à partir de où la ème colonne et la ligne ont été supprimées.A−1ii det(A0i)/det(A) A0i (n−1) (n−1) A i
L'obtention de l'indice du coefficient diagonal minimum dans vous indique donc quel point a la plus faible corrélation avec le reste de l'ensemble.A−1
Selon ce que vous voulez réellement faire, vous pouvez soit prendre les 10 valeurs les plus basses sur la diagonale de l'inverseur, soit obtenir la première, puis calculer l'inverseur avec le point supprimé, et ainsi de suite.
Si ce n'est pas ce dont vous avez besoin, je pense que cette astuce pourrait toujours être utile, mais je ne sais pas comment, cependant.
la source
Trouvez de éléments avec la corrélation la moins paire: étant donné qu'une corrélation de explique de la relation entre deux séries, il est plus logique de minimiser la somme des carrés de corrélations pour vos éléments cibles . Voici ma solution simple.k n 0.6 0.36 k
Réécrivez votre matrice de corrélations en une matrice de carrés de corrélations. Additionnez les carrés de chaque colonne. Éliminez la colonne et la ligne correspondante avec la plus grande somme. Vous avez maintenant une matrice . Répétez jusqu'à ce que vous ayez une matrice . Vous pouvez également conserver les colonnes et les lignes correspondantes avec les plus petites sommes. En comparant les méthodes, j'ai trouvé dans une matrice avec et que seuls deux éléments avec des sommes proches ont été conservés et éliminés différemment.( n - 1 ) × ( n - 1 ) k × k k n = 43 k = 20n×n (n−1)×(n−1) k×k k n=43 k=20
la source