J'utilise la décomposition en valeurs singulières comme technique de réduction de dimensionnalité.
Étant donné des N
vecteurs de dimension D
, l'idée est de représenter les entités dans un espace transformé de dimensions non corrélées, qui condense la plupart des informations des données dans les vecteurs propres de cet espace dans un ordre décroissant d'importance.
J'essaie maintenant d'appliquer cette procédure aux données de séries chronologiques. Le problème est que toutes les séquences n'ont pas la même longueur, donc je ne peux pas vraiment construire la num-by-dim
matrice et appliquer SVD. Ma première pensée a été de num-by-maxDim
remplir la matrice de zéros en construisant une matrice et en remplissant les espaces vides de zéros, mais je ne suis pas sûr que ce soit la bonne façon.
Ma question est de savoir comment envisagez-vous l'approche SVD de la réduction de la dimensionnalité en séries temporelles de différentes longueurs? Existe-t-il d'autres méthodes similaires de représentation de l'espace propre généralement utilisées avec les séries chronologiques?
Voici un morceau de code MATLAB pour illustrer l'idée:
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
(Je code principalement dans MATLAB, mais je suis assez à l'aise pour lire R / Python / .. également)