Ich habe eine Korrelationsmatrix , die ich unter Verwendung des linearen Korrelationskoeffizienten nach Pearson durch Matlab's corrcoef () erhalten habe . Die Korrelationsmatrix der Dimension 100x100, dh ich habe die Korrelationsmatrix für 100 Zufallsvariablen berechnet.
Unter diesen 100 Zufallsvariablen möchte ich die 10 Zufallsvariablen finden, deren Korrelationsmatrix so wenig Korrelation wie möglich enthält (siehe Quantifizieren, wie viel "mehr Korrelation" eine Korrelationsmatrix A im Vergleich zu einer Korrelationsmatrix B in Bezug auf zu messende Metriken enthält die Gesamtkorrelation in einer Korrelationsmatrix). Ich kümmere mich nur um paarweise Korrelation.
Gibt es gute Methoden, um diese 10 Zufallsvariablen in angemessener Zeit zu finden (z. B. möchte ich keine -Kombinationen ausprobieren )? Approximationsalgorithmen sind in Ordnung.
quelle
metrics to measure the overall correlation
. Sie denken speziell über die Determinante nach?Antworten:
Betrachten wir die Summe der absoluten paarweisen Korrelationen als unser Maß für die Wahl. Damit haben wir einen Vektor suchen mit denen minimieren wo.l 1 ( v ) = n v ' Q v Q i j = | A i j |v∈{0,1}N l1(v)=n v′Qv Qij=|Aij|
Angenommen, Q ist auch als A eindeutig positiv, dann wird das Problem auf die Lösung des eingeschränkten quadratischen Optimierungsproblems reduziert:
Dies deutet auf folgende Entspannung hin:
die mit handelsüblichen Lösern leicht gelöst werden kann; dann ist das Ergebnis durch die größten Komponenten in .v ∗n v∗
Beispiel für einen Matlab-Code:
quelle
Dies ist möglicherweise schlimmer als die hierarchische Clustering-Idee von @ ttnphns. Aber: Ich bin gerade auf ein Papier gestoßen , das als zunehmende submodulare Zielfunktion verwendet:logdet(I+A)
Wenn Sie der Meinung sind, dass dies ein vernünftiges Maß für "am wenigsten korreliert" ist, können Sie einen Faktor der optimalen Menge erreichen, indem Sie einfach iterativ den Punkt auswählen, der dies maximiert. Dies kann effizient mit der Block-LU-Zerlegung durchgeführt werden , wobei der Korrelationsvektor zu Einträgen ist, die sich bereits in der Matrix befinden:1−1/e vv
und natürlich sollten Sie berechnen , wobei die Cholesky-Faktorisierung von und einen Dreieckslöser verwendet das ist . Dieser gesamte Prozess sollte also Zeit benötigen, um aus Elementen auszuwählen , vorausgesetzt, die Korrelationsmatrix ist bereits berechnet .vT(I+A)−1v=∥L−1v∥2 L I+A O(n2) O(∑nk=1Nk2+k3)=O(Nn3) n N
quelle
Ich bin mir nicht sicher, ob Sie vollständig verstehen, was Sie unter "Ich kümmere mich nur um die paarweise Korrelation" verstehen , aber hier ist etwas, das helfen kann: Verwenden Sie die Invertierung Ihrer Korrelationsmatrix. Die Term ist gleich , wo ist die x Matrix von eingebauten wo die te Spalte und Zeile entfernt wurden.A−1ii det(A0i)/det(A) A0i (n−1) (n−1) A i
Wenn Sie den Index des minimalen Diagonalkoeffizienten in erfahren Sie, welcher Punkt die niedrigste Korrelation zum Rest der Menge aufweist.A−1
Je nachdem, was Sie tatsächlich tun möchten, können Sie entweder die 10 niedrigsten Werte auf der Diagonale der Invertierung verwenden oder den ersten erhalten und dann die Invertierung mit dem gelöschten Punkt berechnen und so weiter.
Wenn dies nicht das ist, was Sie brauchen, könnte dieser Trick immer noch hilfreich sein, aber ich bin mir nicht sicher, wie.
quelle
Finden von Elementen mit der geringsten paarweise Korrelation: Da eine Korrelation von etwa erklärt der Beziehung zwischen zwei Serien es mehr Sinn macht , die Summe der Quadrate der Korrelationen für Ihr Ziel zu minimieren Elemente. Hier ist meine einfache Lösung.k n 0.6 0.36 k
Schreiben Sie Ihre Korrelationsmatrix in eine Matrix von Korrelationsquadraten um. Summiere die Quadrate jeder Spalte. Beseitigen Sie die Spalte und die entsprechende Zeile mit der größten Summe. Sie haben jetzt eine Matrix. Wiederholen Sie diesen Vorgang, bis Sie eine Matrix haben. Sie können auch einfach die Spalten und entsprechenden Zeilen mit den kleinsten Summen behalten . Beim Vergleich der Methoden stellte ich in einer Matrix mit und dass nur zwei Elemente mit engen Summen unterschiedlich aufbewahrt und eliminiert wurden.( n - 1 ) × ( n - 1 )n×n (n−1)×(n−1) k n = 43 k = 20k×k k n=43 k=20
quelle