Sto usando la decomposizione del valore singolare come tecnica di riduzione della dimensionalità.
Dati i N
vettori di dimensione D
, l'idea è quella di rappresentare le caratteristiche in uno spazio trasformato di dimensioni non correlate, che condensa la maggior parte delle informazioni dei dati negli autovettori di questo spazio in ordine decrescente di importanza.
Ora sto cercando di applicare questa procedura ai dati delle serie temporali. Il problema è che non tutte le sequenze hanno la stessa lunghezza, quindi non posso davvero costruire la num-by-dim
matrice e applicare SVD. Il mio primo pensiero è stato quello di num-by-maxDim
riempire la matrice di zeri costruendo una matrice e riempiendo gli spazi vuoti di zeri, ma non sono sicuro che sia il modo corretto.
La mia domanda è: in che modo l'approccio SVD della riduzione della dimensionalità a serie temporali di diversa lunghezza? In alternativa, ci sono altri metodi simili di rappresentazione di eigenspace normalmente utilizzati con le serie temporali?
Di seguito è riportato un pezzo di codice MATLAB per illustrare l'idea:
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
(Sto programmando principalmente in MATLAB, ma sono abbastanza comodo da leggere anche R / Python / ..)