Réduction de dimensionnalité SVD pour des séries temporelles de différentes longueurs


13

J'utilise la décomposition en valeurs singulières comme technique de réduction de dimensionnalité.

Étant donné des Nvecteurs 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-dimmatrice et appliquer SVD. Ma première pensée a été de num-by-maxDimremplir 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)


Bonne question! Je pense que vous pouvez améliorer le titre, il pourrait y avoir quelque chose comme "données manquantes" quelque part ou "séries chronologiques de longueur différente".
Robin Girard

1
Je ne l'appellerais pas "données manquantes", peut-être "réduction de dimensionnalité SVD pour des séries chronologiques de longueur différente"?
Amro

1
J'aime le titre que vous proposez!
Robin Girard

1
il serait également utile de savoir pourquoi les séries sont de longueurs différentes. Par exemple, s'ils représentent la trajectoire d'un crayon pendant une tâche d'écriture manuscrite, par exemple le déplacement X lors de l'écriture d'un chiffre, vous souhaiterez peut-être aligner la série chronologique de sorte qu'ils soient de la même longueur. Il est également important de savoir quel type de variation vous souhaitez conserver et ce que vous n'êtes pas.
vqv

Réponses:


5

Il existe un domaine de recherche raisonnablement nouveau appelé Achèvement de la matrice , qui fait probablement ce que vous voulez. Une très belle introduction est donnée dans cette conférence d'Emmanuel Candes


+1 pour le site Web VideoLecture, je ne savais pas, l'avez-vous mentionné dans la question sur les conférences vidéo?
Robin Girard

Je ne lis que ce genre de choses récemment. J'aime beaucoup le récent article de Candes et Tao sur le sujet arxiv.org/abs/0903.1476
Robby McKilliam

2

Remplir de zéro est mauvais. Essayez de remplir avec un rééchantillonnage en utilisant des observations du passé.


La réplication / le rééchantillonnage +1 sont définitivement meilleurs que le remplissage nul. Je vais quand même attendre et voir s'il y a d'autres idées :)
Amro

2

Juste une pensée: vous pourriez ne pas avoir besoin du SVD complet pour votre problème. Soit M = USV * la SVD de votre matrice d par n ( c'est -à- dire que les séries temporelles sont les colonnes). Pour obtenir la réduction de la dimension que vous allez utiliser les matrices V et S . Vous pouvez les trouver en diagonalisant M * M = V (S * S) V * . Cependant, parce que vous manque des valeurs, vous ne pouvez pas calculer M * M . Néanmoins, vous pouvez l'estimer. Ses entrées sont des sommes de produits de colonnes de M. Lors du calcul de l'un des SSP, ignorez les paires impliquant des valeurs manquantes. Redimensionnez chaque produit pour tenir compte des valeurs manquantes: c'est-à-dire que lorsqu'un SSP implique nk paires, redimensionnez-le de n / (nk). Cette procédure est un estimateur "raisonnable" de M * M et vous pouvez procéder à partir de là. Si vous voulez devenir plus amateur, peut-être que plusieurs techniques d'imputation ou l' achèvement de la matrice vous aideront.

(Cela peut être effectué dans de nombreux progiciels statistiques en calculant une matrice de covariance par paire de l'ensemble de données transposé et en lui appliquant l'ACP ou l'analyse factorielle.)


MTM

C'est un bon point, mais le résultat n'est peut-être pas si mauvais. Ce que l'on espère, c'est que l'estimation de M * M est suffisamment proche de la valeur réelle pour que la perturbation des valeurs propres soit raisonnablement faible. Ainsi, en projetant sur l'espace propre correspondant aux valeurs propres les plus élevées, vous n'obtenez qu'une légère perturbation de la solution correcte, tout en obtenant la réduction de dimension recherchée. Le plus gros problème est peut-être celui de l'algorithmique: comme vous ne pouvez plus supposer la semi-infinité, vous devrez peut-être utiliser un algorithme plus général pour trouver le système électronique.
whuber

1

Vous pouvez estimer les modèles de séries chronologiques univariés pour les séries «courtes» et les extrapoler dans le futur pour «aligner» toutes les séries.


l'extrapolation inclurait la régularité de la pièce remplie qui n'existe pas dans la pièce existante. Vous devez ajouter du hasard ... d'où le rééchantillonnage (et le rééchantillonnage sur l'extrapolation semble être une bonne idée)
robin girard

Pour extrapoler le modèle, il faudrait échantillonner le terme d'erreur, ce qui induirait le caractère aléatoire souhaité.

Les deux suggestions de l'OMI se résument à prédire les valeurs futures à partir des valeurs existantes (modèles AR / ARMA peut-être?). Je suppose que j'espère toujours une solution qui n'implique pas d'échantillonner les valeurs (donc la possibilité d'introduire une erreur) .. Outre l'estimation de tels modèles est en soi une forme de réduction de la dimensionnalité :)
Amro

1

Je suis quelque peu confus par votre exemple de code, car il semble que vous supprimiez la Vvariable du calcul de newX. Cherchez-vous à modéliser Xcomme un produit de rang réduit, ou êtes-vous intéressé par un espace de colonne réduit de X? dans ce dernier cas, je pense qu'une approche EM-PCA fonctionnerait. vous pouvez trouver le code matlab sous le titre PCA probabiliste avec des valeurs manquantes .

hth,


Je n'essaie pas de calculer une approximation de rang réduit de X, plutôt un X transformé. Vous voyez que mon objectif n'est pas de filtrer les séquences bruyantes, mais de trouver une représentation avec une dimensionnalité réduite (à utiliser pour la classification / regroupement de séries chronologiques ) ... Pourriez-vous développer un peu l'approche EM-PCA?
Amro
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.