Ich habe eine Matrix paarweiser Korrelationen zwischen n Elementen. Jetzt möchte ich eine Teilmenge von k Elementen mit der geringsten Korrelation finden. Somit gibt es zwei Fragen:
- Welches ist das geeignete Maß für die Korrelation innerhalb dieser Gruppe?
- Wie finde ich die Gruppe mit der geringsten Korrelation?
Dieses Problem erscheint mir wie eine Art inverse Faktoranalyse, und ich bin mir ziemlich sicher, dass es eine einfache Lösung gibt.
Ich denke, dieses Problem entspricht tatsächlich dem Problem, (nk) Knoten aus einem vollständigen Diagramm zu entfernen, sodass die verbleibenden Knoten mit minimalen Kantengewichten verbunden sind. Was denken Sie?
Vielen Dank für Ihre Vorschläge im Voraus!
correlation
ranking
Chris
quelle
quelle
Antworten:
[Vorwarnung: Diese Antwort erschien, bevor das OP beschloss, die Frage neu zu formulieren, sodass sie möglicherweise an Relevanz verloren hat. Ursprünglich ging es um
How to rank items according to their pairwise correlations
]Da die Matrix paarweiser Korrelationen kein eindimensionales Array ist, ist nicht ganz klar, wie "Ranking" aussehen kann. Vor allem, solange Sie Ihre Idee nicht im Detail ausgearbeitet haben, wie es scheint. Aber Sie haben PCA als für Sie geeignet erwähnt, und das hat mich sofort dazu gebracht, Cholesky-Wurzel als potenziell noch geeignetere Alternative zu betrachten.
Die Cholesky-Wurzel ist wie eine Matrix von Ladungen, die von PCA hinterlassen werden, nur ist sie dreieckig. Ich werde beides anhand eines Beispiels erklären.
Die PCA-Ladematrix A ist die Korrelationsmatrix zwischen den Variablen und den Hauptkomponenten. Wir können es sagen, weil die Zeilensummen der Quadrate alle 1 sind (die Diagonale von R), während die Matrixsumme der Quadrate die Gesamtvarianz ist (Spur von R). Die Elemente von Cholesky-Wurzel von B sind ebenfalls Korrelationen, da diese Matrix auch diese beiden Eigenschaften hat. Spalten von B sind keine Hauptkomponenten von A, obwohl sie in gewissem Sinne "Komponenten" sind.
Sowohl A als auch B können R wiederherstellen und somit beide R als seine Darstellung ersetzen. B ist dreieckig, was deutlich zeigt, dass es die paarweisen Korrelationen von R nacheinander oder hierarhisch erfasst. Choleskys Komponente
I
korreliert mit allen Variablen und ist das lineare Bild der ersten von ihnenV1
. KomponenteII
nicht mehr mit,V1
sondern korreliert mit den letzten drei ... SchließlichIV
ist nur mit den letzten korreliert ,V4
. Ich dachte, eine solche Art von "Ranking" ist vielleicht das, wonach Sie suchen ?Das Problem bei der Cholesky-Zerlegung ist jedoch, dass sie - im Gegensatz zu PCA - von der Reihenfolge der Elemente in der Matrix R abhängt. Nun, Sie können die Elemente in absteigender oder aufsteigender Reihenfolge der Summe der quadratischen Elemente sortieren (oder, wenn Sie möchten , Summe der absoluten Elemente oder in der Reihenfolge des Mehrfachkorrelationskoeffizienten - siehe unten). Diese Reihenfolge gibt an, wie stark ein Artikel brutto korreliert.
Aus der letzten B-Matrix sehen wir, dass der
V2
am stärksten korrelierte Gegenstand alle seine Korrelationen in verpfändetI
. Der nächste grob korrelierte GegenstandV1
verpfändet seine gesamte Korrelation, außer der mitV2
, inII
; und so weiter.Eine andere Entscheidung könnte darin bestehen, den Mehrfachkorrelationskoeffizienten für jedes Element und jede Rangfolge basierend auf seiner Größe zu berechnen . Die Mehrfachkorrelation zwischen einem Element und allen anderen Elementen wächst, wenn das Element mehr mit allen korreliert, sie jedoch weniger miteinander korrelieren. Die quadratischen Mehrfachkorrelationskoeffizienten bilden die Diagonale der sogenannten Bildkovarianzmatrix, die , wobei die Diagonalmatrix der Kehrwerte der Diagonalen von .SR−1S−2S+R S R−1
quelle
Hier ist meine Lösung für das Problem. Ich berechne alle möglichen Kombinationen von k von n Elementen und berechne ihre gegenseitigen Abhängigkeiten, indem ich das Problem in ein graphentheoretisches transformiere: Welches ist das vollständige Diagramm, das alle k Knoten mit der kleinsten Kantensumme (Abhängigkeiten) enthält? Hier ist ein Python-Skript, das die networkx-Bibliothek und eine mögliche Ausgabe verwendet. Bitte entschuldigen Sie etwaige Unklarheiten in meiner Frage!
Code:
Beispielausgabe:
Eingabediagramm:
Lösungsdiagramm:
Für ein Spielzeugbeispiel ist k = 4, n = 6: Eingabediagramm:
Lösungsdiagramm:
Beste,
Christian
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.n 0,6 0,36 kk 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 ) k × k k n = 43 k = 20n×n (n−1)×(n−1) k×k k n=43 k=20
quelle