Ich verwende Singular Value Decomposition als Methode zur Reduzierung der Dimensionalität.
Bei gegebenen N
Vektoren der Dimension D
besteht 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-dim
Matrix nicht wirklich erstellen und SVD anwenden. Mein erster Gedanke war, die Matrix mit Nullen aufzufüllen, indem num-by-maxDim
ich 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.)