SVD-Dimensionsreduktion für Zeitreihen unterschiedlicher Länge

13

Ich verwende Singular Value Decomposition als Methode zur Reduzierung der Dimensionalität.

Bei gegebenen NVektoren der Dimension Dbesteht die Idee darin, die Merkmale in einem transformierten Raum unkorrelierter Dimensionen darzustellen, der die meisten Informationen der Daten in den Eigenvektoren dieses Raums in abnehmender Reihenfolge der Wichtigkeit verdichtet.

Jetzt versuche ich, dieses Verfahren auf Zeitreihendaten anzuwenden. Das Problem ist, dass nicht alle Sequenzen die gleiche Länge haben, daher kann ich die num-by-dimMatrix nicht wirklich erstellen und SVD anwenden. Mein erster Gedanke war, die Matrix mit Nullen aufzufüllen, indem num-by-maxDimich eine Matrix bildete und die leeren Räume mit Nullen füllte, aber ich bin mir nicht so sicher, ob das der richtige Weg ist.

Meine Frage ist, wie man den SVD-Ansatz der Dimensionsreduktion auf Zeitreihen unterschiedlicher Länge umsetzt. Alternativ gibt es andere ähnliche Methoden zur Darstellung des Eigenraums, die normalerweise für Zeitreihen verwendet werden?

Unten sehen Sie einen Teil des MATLAB-Codes, um die Idee zu veranschaulichen:

X = randn(100,4);                       % data matrix of size N-by-dim

X0 = bsxfun(@minus, X, mean(X));        % standarize
[U S V] = svd(X0,0);                    % SVD
variances = diag(S).^2 / (size(X,1)-1); % variances along eigenvectors

KEEP = 2;                               % number of dimensions to keep
newX = U(:,1:KEEP)*S(1:KEEP,1:KEEP);    % reduced and transformed data

(Ich programmiere hauptsächlich in MATLAB, aber ich kann auch R / Python / .. lesen.)

Amro
quelle
Gute Frage! Ich denke man kann den Titel verbessern, es könnte irgendwo so etwas wie "fehlende Daten" oder "mal Serien unterschiedlicher Länge" geben.
Robin Girard
1
Ich würde es nicht "fehlende Daten" nennen, vielleicht "SVD-Dimensionsreduktion für Zeitreihen unterschiedlicher Länge"?
Amro
1
Ich mag den Titel, den Sie vorschlagen!
Robin Girard
1
Es wäre auch hilfreich zu wissen, warum die Serien unterschiedlich lang sind. Wenn sie beispielsweise die Flugbahn eines Stifts während einer Handschriftaufgabe darstellen, beispielsweise die X-Verschiebung beim Schreiben einer Ziffer, möchten Sie die Zeitreihen möglicherweise so ausrichten, dass sie dieselbe Länge haben. Es ist auch wichtig zu wissen, welche Art von Variation Sie behalten möchten und welche nicht.
VQV

Antworten:

5

Es gibt ein ziemlich neues Forschungsgebiet namens Matrix Completion , das wahrscheinlich das tut, was Sie wollen. Eine wirklich schöne Einführung bietet dieser Vortrag von Emmanuel Candes

Robby McKilliam
quelle
+1 für die Website VideoLecture, ich wusste nicht, haben Sie es in der Frage zu Videovorträgen erwähnt?
Robin Girard
Ich habe erst kürzlich über dieses Zeug gelesen. Ich mag Candes und Taos kürzlich erschienene Veröffentlichung zum Thema arxiv.org/abs/0903.1476
Robby McKilliam
2

Füllen mit Null ist schlecht. Versuchen Sie, das Resampling mit Beobachtungen aus der Vergangenheit zu füllen.

Robin Girard
quelle
+1 Replikation / Resampling sind definitiv besser als Zero-Padding. Trotzdem werde ich abwarten, ob es noch andere Ideen gibt :)
Amro
2

Nur ein Gedanke: Möglicherweise benötigen Sie nicht die vollständige SVD für Ihr Problem. Lassen M = USV * kann die SVD Ihrer d von n - Matrix ( dh , sind die Zeitreihen der Spalten). Die Dimensionsreduktion zu erreichen , werden Sie die Matrizen werden unter Verwendung von V und S . Sie finden sie, indem Sie M * M = V (S * S) V * diagonalisieren . Da Ihnen jedoch einige Werte fehlen, können Sie M * M nicht berechnen . Trotzdem kann man es abschätzen. Seine Einträge sind Produktsummen von Spalten von M. Ignorieren Sie beim Berechnen eines der SSPs Paare mit fehlenden Werten. Skalieren Sie jedes Produkt neu, um die fehlenden Werte zu berücksichtigen: Wenn ein SSP nk Paare umfasst, skalieren Sie ihn um n / (nk). Matrix Completion . Diese Prozedur ist ein "vernünftiger" Schätzer für M * M und Sie können von dort aus fortfahren. Wenn Sie schicker werden möchten, vielleicht mehrere Imputationstechniken oder

(Dies kann in vielen statistischen Paketen durchgeführt werden, indem eine paarweise Kovarianzmatrix des transponierten Datensatzes berechnet und auf diesen eine PCA- oder Faktoranalyse angewendet wird.)

whuber
quelle
MTM
Das ist ein guter Punkt, aber das Ergebnis könnte nicht so schlecht sein. Was man hofft, ist, dass die Schätzung von M * M nahe genug an dem wahren Wert liegt, dass die Störung der Eigenwerte einigermaßen gering ist. Durch Projizieren auf den Eigenraum, der den größten Eigenwerten entspricht, wird somit nur eine geringe Störung der richtigen Lösung erzielt, und es wird immer noch die gewünschte Dimensionsreduktion erzielt. Das vielleicht größte Problem ist der Algorithmus: Da Sie keine Halbwertszeit mehr annehmen können, müssen Sie möglicherweise einen allgemeineren Algorithmus verwenden, um das Eigensystem zu finden.
whuber
1

Sie könnten univariate Zeitreihenmodelle für die "kurze" Reihe schätzen und diese in die Zukunft hochrechnen, um alle Reihen "auszurichten".


quelle
Eine Extrapolation würde eine Glätte in dem gefüllten Teil beinhalten, die in dem vorhandenen Teil nicht vorhanden ist. Sie müssen Zufälligkeit hinzufügen ... daher Resampling (und Resmapling auf der Extrapolation scheint eine gute Idee zu sein)
Robin Girard
Das Extrapolieren des Modells würde das Abtasten des Fehlerterms erfordern, was die gewünschte Zufälligkeit induzieren würde.
IMO beide Vorschläge laufen darauf hinaus, zukünftige Werte von bestehenden vorherzusagen (AR / ARMA-Modelle vielleicht?). Ich hoffe immer noch auf eine Lösung, die keine Abtastwerte beinhaltet (daher die Möglichkeit, Fehler einzuführen). Außerdem ist das Abschätzen solcher Modelle an sich eine Form der Dimensionsreduktion :)
Amro
1

Ihr Beispielcode verwirrt mich ein wenig, da Sie die VVariable anscheinend aus der Berechnung von entfernen newX. Möchten Sie Xals Produkt mit reduziertem Rang modellieren oder interessieren Sie sich für einen reduzierten Spaltenraum von X? Im letzteren Fall würde meiner Meinung nach ein EM-PCA-Ansatz funktionieren. Sie finden Matlab-Code unter dem Titel Probabilistic PCA mit fehlenden Werten .

hth,

shabbychef
quelle
Ich versuche nicht, eine rangreduzierte Näherung von X zu berechnen, sondern ein transformiertes X. Sie sehen, mein Ziel ist es nicht, verrauschte Sequenzen zu filtern, sondern eine Darstellung mit reduzierter Dimensionalität zu finden (zur Klassifizierung / Gruppierung von Zeitreihen) ) ... Könnten Sie den EM-PCA-Ansatz etwas näher erläutern?
Amro