Używam Singular Value Decomposition jako techniki redukcji wymiarowości.
Biorąc pod uwagę N
wektory wymiaru D
, ideą jest przedstawienie cech w przekształconej przestrzeni o nieskorelowanych wymiarach, która kondensuje większość informacji danych w wektorach własnych tej przestrzeni w malejącym porządku ważności.
Teraz próbuję zastosować tę procedurę do danych szeregów czasowych. Problem polega na tym, że nie wszystkie sekwencje mają tę samą długość, dlatego naprawdę nie mogę zbudować num-by-dim
matrycy i zastosować SVD. Moją pierwszą myślą było num-by-maxDim
wypełnienie macierzy zerami poprzez zbudowanie macierzy i wypełnienie pustych miejsc zerami, ale nie jestem pewien, czy to jest właściwy sposób.
Moje pytanie brzmi: w jaki sposób podejście SVD do redukcji wymiarowości do szeregów czasowych o różnej długości? Alternatywnie, czy istnieją inne podobne metody reprezentacji przestrzeni własnej zwykle stosowane w szeregach czasowych?
Poniżej znajduje się fragment kodu MATLAB ilustrujący ten pomysł:
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
(Piszę głównie w MATLAB, ale czuję się wystarczająco dobrze, aby czytać również R / Python / ..)