Estoy usando la descomposición del valor singular como técnica de reducción de dimensionalidad.
Dados los N
vectores de dimensión D
, la idea es representar las características en un espacio transformado de dimensiones no correlacionadas, lo que condensa la mayor parte de la información de los datos en los vectores propios de este espacio en un orden decreciente de importancia.
Ahora estoy tratando de aplicar este procedimiento a datos de series temporales. El problema es que no todas las secuencias tienen la misma longitud, por lo que realmente no puedo construir la num-by-dim
matriz y aplicar SVD. Mi primer pensamiento fue rellenar la matriz con ceros construyendo una num-by-maxDim
matriz y llenando los espacios vacíos con ceros, pero no estoy tan seguro de si esa es la forma correcta.
Mi pregunta es ¿cómo aplica el enfoque SVD de reducción de dimensionalidad a series de tiempo de diferente longitud? Alternativamente, ¿hay otros métodos similares de representación del espacio propio usualmente utilizados con series de tiempo?
A continuación hay un fragmento de código MATLAB para ilustrar la 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
(Estoy codificando principalmente en MATLAB, pero también estoy lo suficientemente cómodo como para leer R / Python / ...)