Nach einiger Suche finde ich sehr wenig über die Einbeziehung von Beobachtungsgewichten / Messfehlern in die Hauptkomponentenanalyse. Was ich finde, stützt sich tendenziell auf iterative Ansätze zur Einbeziehung von Gewichtungen (z . B. hier ). Meine Frage ist, warum dieser Ansatz notwendig ist? Warum können wir die Eigenvektoren der gewichteten Kovarianzmatrix nicht verwenden?
pca
measurement-error
weighted-data
kein Name
quelle
quelle
Antworten:
Es kommt darauf an, worauf genau sich Ihre Gewichte beziehen.
Reihengewichte
Sei die Datenmatrix mit Variablen in Spalten und Beobachtungen in Zeilen. Wenn jeder Beobachtung ein Gewicht , ist es in der Tat einfach, diese Gewichte in die PCA aufzunehmen.X n xich wich
Zunächst braucht man zur Berechnung des gewichteten Mittels und subtrahieren sie aus den Daten , um zu zentrieren es.μ = 1∑ wich∑ wichxich
Dann berechnen wir die gewichtete Kovarianzmatrix1∑ wichX⊤W X , wobei W =diag( wich) die diagonale Matrix von Gewichten ist, und wenden Sie Standard-PCA an, um es zu analysieren.
Zellgewichte
Die Arbeit von Tamuz et al., 2013 , die Sie gefunden haben, betrachtet einen komplizierteren Fall, wenn auf jedes Element der Datenmatrix unterschiedliche Gewichte angewendet werden. Dann gibt es in der Tat keine analytische Lösung und man muss eine iterative Methode anwenden. Beachten Sie, dass sie, wie von den Autoren anerkannt, das Rad neu erfunden haben, da solche allgemeinen Gewichte sicherlich zuvor in Betracht gezogen wurden, z. B. in Gabriel und Zamir, 1979, Näherung von Matrizen mit niedrigerem Rang durch kleinste Quadrate mit einer beliebigen Auswahl an Gewichten . Dies wurde auch hier diskutiert .wich j
Als zusätzliche Bemerkung: Wenn die Gewichte sowohl mit Variablen als auch mit Beobachtungen variieren, aber symmetrisch sind, so dass , dann ist wieder eine analytische Lösung möglich, siehe Koren und Carmel, 2004, Robust Lineare Dimensionsreduktion .wichj wich j= wj i
quelle
Vielen Dank, Amöbe, für den Einblick in die Zeilengewichte. Ich weiß, dass dies kein Stapelüberlauf ist, aber ich hatte einige Schwierigkeiten, eine Implementierung von zeilengewichteten PCA mit Erklärung zu finden, und da dies eines der ersten Ergebnisse ist, wenn ich nach gewichteten PCA google, dachte ich, es wäre gut, meine Lösung beizufügen Vielleicht kann es anderen in der gleichen Situation helfen. In diesem Python2-Code-Snippet wird eine PCA, die mit einem RBF-Kernel wie oben beschrieben gewichtet ist, verwendet, um die Tangenten eines 2D-Datensatzes zu berechnen. Über Feedback würde ich mich sehr freuen!
Und eine Beispielausgabe (für jeden Punkt gilt das Gleiche):
Prost,
Andres
quelle