Estoy utilizando la Descomposición de Valores Singulares como técnica de reducción de dimensionalidad.
Dado N
vectores de dimensión D
, la idea es representar las características en un espacio transformado de dimensiones no correlacionadas, que condensa la mayoría de la información de los datos en los autovectores de este espacio en un orden decreciente de importancia.
Ahora estoy intentando aplicar este procedimiento a datos de series temporales. El problema es que no todas las secuencias tienen la misma longitud, por lo tanto no puedo construir realmente la matriz num-by-dim
y aplicar SVD. Mi primera idea fue rellenar la matriz con ceros construyendo una matriz num-by-maxDim
y llenando los espacios vacíos con ceros, pero no estoy seguro de si ese es el método correcto.
¿Mi pregunta es cómo aplicar el enfoque de SVD de reducción de dimensionalidad a series temporales de diferentes longitudes? Alternativamente, ¿existen otros métodos similares de representación de espacios propios que se utilizan comúnmente con series temporales?
A continuación se muestra un fragmento de código de MATLAB para ilustrar la idea:
X = randn(100,4); % matriz de datos de tamaño N-by-dim
X0 = bsxfun(@minus, X, mean(X)); % estandarizar
[U S V] = svd(X0,0); % SVD
varianzas = diag(S).^2 / (size(X,1)-1); % varianzas a lo largo de los autovectores
KEEP = 2; % número de dimensiones a mantener
newX = U(:,1:KEEP)*S(1:KEEP,1:KEEP); % datos reducidos y transformados
(Principalmente programo en MATLAB, pero me siento lo suficientemente cómodo como para leer también R/Python/..)