Redução de dimensionalidade de SVD para séries temporais de diferentes comprimentos

13

Estou usando a Decomposição de Valor Singular como uma técnica de redução de dimensionalidade.

Dados os Nvetores 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-dimmatriz e aplicar SVD. Meu primeiro pensamento foi preencher a matriz com zeros, construindo uma num-by-maxDimmatriz 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)

Amro
fonte
Boa pergunta! Eu acho que você pode melhorar o título, pode haver algo como "dados ausentes" em algum lugar ou "séries temporais de tamanhos diferentes".
precisa saber é o seguinte
1
Eu não chamaria isso de "dados ausentes", talvez "redução de dimensionalidade de SVD para séries temporais de diferentes comprimentos"?
Amro
1
Eu gosto do título que você propõe!
Robin girard
1
também ajudaria a saber por que as séries são de diferentes comprimentos. Por exemplo, se eles representam a trajetória de um lápis durante uma tarefa de escrita à mão, digamos o deslocamento X ao escrever um dígito, convém alinhar as séries temporais para que tenham o mesmo comprimento. Também é importante saber que tipo de variação você está interessado em reter e o que não é.
precisa

Respostas:

5

Existe uma área razoavelmente nova de pesquisa chamada Matrix Completion , que provavelmente faz o que você deseja. Uma introdução muito boa é dada nesta palestra de Emmanuel Candes

Robby McKilliam
fonte
+1 no site VideoLecture, eu não sabia, você o mencionou na pergunta sobre vídeo-palestras?
Robin girard
Eu só tenho lido sobre essas coisas recentemente. Eu realmente gosto de papel recente de Candes e Tao sobre o tema arxiv.org/abs/0903.1476
Robby McKilliam
2

Preencher com zero é ruim. Tente preencher com reamostragem usando observações do passado.

Robin Girard
fonte
+1 replicação / resampling são definitivamente melhor do que zero preenchimento .. ainda eu vou esperar e ver se existem outras idéias lá fora :)
Amro
2

Apenas um pensamento: talvez você não precise do SVD completo para seu problema. Seja M = USV * o SVD da sua matriz d por n ( ou seja , as séries temporais são as colunas). Para atingir a redução de dimensão você estará usando as matrizes V e S . Você pode encontrá-los diagonalizando M * M = V (S * S) V * . No entanto, porque está faltando alguns valores, você não pode calcular M * M . No entanto, você pode estimar isso. Suas entradas são somas de produtos de colunas de M. Ao calcular qualquer um dos SSPs, ignore os pares que envolvem valores ausentes. Faça uma nova escala de cada produto para dar conta dos valores ausentes: ou seja, sempre que um SSP envolver nk pares, faça uma nova escala de n / (nk). Este procedimento é um estimador "razoável" de M * M e você pode prosseguir a partir daí. Se você quiser ficar mais chique, talvez várias técnicas de imputação ou Matrix Completion ajudem.

(Isso pode ser realizado em muitos pacotes estatísticos, computando uma matriz de covariância em pares do conjunto de dados transposto e aplicando PCA ou análise fatorial a ele.)

whuber
fonte
MTM
Esse é um bom ponto, mas o resultado pode não ser tão ruim. O que se espera é que a estimativa de M * M seja suficientemente próxima do valor real, de modo que a perturbação dos valores próprios seja razoavelmente pequena. Assim, ao projetar no espaço próprio correspondente aos maiores valores próprios, você obtém apenas uma leve perturbação da solução correta, ainda atingindo a redução de dimensão desejada. Talvez o maior problema possa ser algorítmico: como você não pode mais assumir semidefinitividade, pode ser necessário usar um algoritmo de uso geral para encontrar o sistema próprio.
whuber
1

Você pode estimar modelos univariados de séries temporais para as séries 'curtas' e extrapolá-los no futuro para 'alinhar' todas as séries.


fonte
a extrapolação incluiria suavidade na parte preenchida que não existe na parte existente. Você tem que adicionar aleatoriedade ... daí reamostragem (e resmapling na extrapolação parece ser uma boa idéia)
Girard robin
Extrapolar o modelo exigiria amostragem do termo de erro que induziria a aleatoriedade desejada.
As duas sugestões da OMI resumem-se à previsão de valores futuros a partir dos existentes (talvez modelos AR / ARMA?). Eu acho que eu ainda estou esperando por uma solução que não envolve valores de amostragem (assim a possibilidade de introdução de erro) .. Além estimar esses modelos é em si uma forma de redução de dimensionalidade :)
Amro
1

Estou um pouco confuso com o seu código de exemplo, pois parece que você remove a Vvariável do cálculo de newX. Você deseja modelar Xcomo um produto de classificação reduzida ou está interessado em um espaço de coluna reduzido de X? neste último caso, acho que uma abordagem EM-PCA funcionaria. você pode encontrar o código matlab sob o título PCA Probabilístico com valores ausentes .

hth,

shabbychef
fonte
Não estou tentando calcular uma aproximação de classificação reduzida de X, e sim um X transformado. Você vê que meu objetivo não é filtrar sequências ruidosas, mas encontrar uma representação com uma dimensionalidade reduzida (a ser usada para classificação / agrupamento de séries temporais) ) ... Você poderia elaborar um pouco sobre a abordagem EM-PCA?
Amro