Estou usando a Decomposição de Valor Singular como uma técnica de redução de dimensionalidade.
Dados os N
vetores de dimensão D
, a idéia é representar os recursos em um espaço transformado de dimensões não correlacionadas, que condensa a maioria das informações dos dados nos vetores próprios desse espaço em uma ordem decrescente de importância.
Agora estou tentando aplicar esse procedimento aos dados de séries temporais. O problema é que nem todas as seqüências têm o mesmo comprimento, portanto, não posso realmente construir a num-by-dim
matriz e aplicar SVD. Meu primeiro pensamento foi preencher a matriz com zeros, construindo uma num-by-maxDim
matriz e preenchendo os espaços vazios com zeros, mas não tenho tanta certeza se essa é a maneira correta.
Minha pergunta é como você aborda a SVD de redução de dimensionalidade para séries temporais de diferentes comprimentos? Alternativamente, existem outros métodos semelhantes de representação do espaço próprio geralmente usados com séries temporais?
Abaixo está um trecho do código do MATLAB para ilustrar a ideia:
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
(Estou codificando principalmente em MATLAB, mas estou confortável o suficiente para ler R / Python / .. também)